日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用EAIS推理PyTorch模型(Python)

EAIS實例成功綁定至ECS實例后,您需要遠程登錄該ECS實例,然后使用EAIS實例進行AI推理。本文為您介紹使用Python腳本通過EAIS推理PyTorch模型的具體操作。

前提條件

  • 已將EAIS實例綁定至ECS實例上。具體操作,請參見綁定實例

  • 已綁定的ECS實例操作系統為Ubuntu、CentOS或Alibaba Cloud Linux。更換ECS實例操作系統的具體操作,請參見更換操作系統(系統盤)

背景信息

EAIS支持您根據自身業務場景選擇不同的編程語言,來使用EAIS進行PyTorch模型推理,目前支持兩種方式分別為:

  • 使用Python腳本推理PyTorch模型。支持使用PyTorch script模式或者PyTorch eager mode模式進行推理。本文介紹使用該方式進行推理的具體操作。

  • 使用C++程序推理PyTorch模型。具體操作,請參見使用EAIS推理PyTorch模型(C++)

如果您使用EAIS推理過程中遇到性能或者功能問題,請聯系EAIS技術支持為您提供定制化的優化方案。

運行環境

本教程重點介紹使用Python腳本推理PyTorch模型的過程,過程中使用EAIS為您提供的兩種運行環境部署方式:

  • 使用EAIS提供的EAIS miniconda環境。

    說明

    EAIS miniconda環境是阿里云基于miniconda開發的EAIS使用環境,該環境包含了推理PyTorch模型和使用EAIS推理PyTorch模型所依賴的軟件環境,以及用于測試體驗的樣例文件和模型文件等。部分文件目錄的說明如下:

    • eais/data/:存放了用于執行示例程序時需要的數據文件和模型文件。

    • eais/python/:存放了推理樣例所需的Python腳本。

  • 在您已有的PyTorch模型運行環境中安裝EAIS提供的Python軟件包。

推理性能

與GPU實例(NVIDIA T4)相比,使用EAIS推理會明顯提升推理的性能。Python腳本使用eais.ei-a6.2xlarge規格的EAIS實例與使用GPU實例(NVIDIA T4)推理的性能對比數據如下表所示

說明
  • 本文數據僅為示例,具體數據以您的實際推理結果為準。

  • 您也可以參考eais-miniconda軟件包中提供的Python腳本,自行測試GPU實例(NVIDIA T4)推理的性能來與EAIS實例進行比較。

推理模型

eais.ei-a6.2xlarge

GPU實例(NVIDIA T4)

EAIS比GPU實例(NVIDIA T4)提升的性能倍數

resnet50

2.19 ms

6.24 ms

2.85倍

bert-base

5.37 ms

8.32 ms

1.55倍

操作步驟

  1. 登錄并連接實例。

    1. 登錄EAIS控制臺

    2. 在頁面左上角選擇實例所在地域。

    3. 在實例列表中,單擊EAIS實例對應的ECS實例ID,進入該ECS實例控制臺。

    4. 遠程登錄ECS實例。

      具體操作,請參見連接方式概述

  2. 安裝eais-tool軟件包,然后查看EAIS實例的相關信息。

    具體操作,請參見eais-tool

  3. 安裝CUDA 11.X.X版本軟件包。

    1. 執行如下命令,安裝CUDA軟件包。

      說明

      本操作以安裝CUDA 11.7.0版本為例,具體命令以您實際安裝的版本為準。

      wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
      sudo sh cuda_11.7.0_515.43.04_linux.run --silent --toolkit
    2. 執行如下命令,設置CUDA相關的環境變量。

      export PATH=/usr/local/cuda/bin:$PATH
      export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  4. 安裝eais-cuda軟件包。

    具體操作,請參見eais-cuda

  5. 搭建運行環境。

    • 方法一:使用EAIS提供的EAIS miniconda環境。

      您只需要安裝eais-miniconda軟件包即可,具體操作,請參見eais-miniconda

    • 方法二:在您已有的PyTorch模型運行環境中安裝EAIS提供的Python軟件包。

      重要

      請確保您的運行環境中已安裝了Python3以及pip3軟件包。

      1. 執行如下命令,安裝官方提供的PyTorch版本的軟件包,以PyTorch 1.13.1為例。

        pip3 install torch==1.13.1
      2. 安裝eais-torch軟件包。

        具體操作,請參見eais-torch

  6. 開發模型推理腳本并使用EAIS進行加速推理。

    相較于普通推理流程,您僅需要在進行推理前,在您原有推理腳本的基礎上添加一行import eais.torch_eais導入EAIS提供的Python模塊,即可使用EAIS推理PyTorch模型。支持使用PyTorch script模式和PyTorch eager mode模式進行推理,Python腳本開發說明和使用示例如下:

    使用PyTorch script模式推理

    • Python腳本開發說明

      假設您的PyTorch模型推理初始源代碼如下所示:

      # 導入torch模塊
      import torch
      import torchvision
      
      # 加載script模型
      model = torch.jit.load(model_file).cuda()
      # 初始化輸入
      tensor input_tensor = torch.randn(...).cuda()
      # 使用gpu進行模型推理
      output_tensors = model(input_tensor)

      如果您需要使用EAIS推理您的PyTorch模型,請將源代碼修改為如下內容:

      # 導入torch模塊
      import torch
      import torchvision
      # 導入eais提供的python模塊
      import eais.torch_eais
      
      # 加載script模型
      model = torch.jit.load(model_file).cuda()
      # 初始化輸入
      tensor input_tensor = torch.randn(...).cuda()
      # 使用eais進行模型推理
      output_tensors = model(input_tensor)
    • 使用示例

      1. 準備您的模型推理Python腳本。

        本示例以resnet50模型推理、pytorch_resnet50.py腳本為例,腳本內容如下:

        # 導入torch模塊
        import torch
        # 導入eais提供的python模塊
        import eais.torch_eais
        # 導入參數解析模塊
        import argparse
        
        if __name__ == '__main__':
            parser = argparse.ArgumentParser()
            parser.add_argument('-m', '--model', type=str, required=True, help='model file path')
            FLAGS = parser.parse_args()
            
            # 加載script模型
            model = torch.jit.load(FLAGS.model).cuda()
            # 初始化隨機輸入tensor
            input_tensor = torch.rand((1, 3, 224, 224)).cuda()
            # 執行模型推理
            output = model(input_tensor).cpu()
            print("output shape:", output.shape)
      2. 執行如下命令,運行您準備好的EAIS模型推理腳本。

        python3 pytorch_resnet50.py -m <resnet50_model_file>

    使用PyTorch eager mode模式推理

    • Python腳本開發說明

      假設您的PyTorch模型推理初始源代碼如下所示:

      # 導入torch模塊
      import torch
      import torchvision
      
      
      class MyModule(torch.nn.Module):
          def __init__(self):
              super(MyModule, self).__init__()
              ......
      
          def forward(self, x):
              ......
      
      
      # 初始化torch模型
      model = MyModule.cuda()
      # 初始化輸入
      tensor input_tensor = torch.randn(...).cuda()
      # 使用gpu進行模型推理
      output_tensors = model(input_tensor)

      如果您需要使用EAIS推理您的PyTorch模型,請將源代碼修改為如下內容:

      重要

      源代碼中不支持forward函數中包含有python numpy操作和自定義的python function

      # 導入torch模塊
      import torch
      import torchvision
      # 導入eais提供的python模塊
      import eais.torch_eais
      
      
      class MyModule(torch.nn.Module):
          def __init__(self):
              super(MyModule, self).__init__()
              ......
      
          def forward(self, x):
              ......
      
      
      # 初始化torch模型
      model = MyModule().cuda()
      # 初始化輸入
      tensor input_tensor = torch.randn(...).cuda()
      # 使用eais進行模型推理
      output_tensors = model(input_tensor)

    • 使用示例

      1. 準備您的模型推理Python腳本。

        本示例以resnet50模型推理、pytorch_resnet50.py腳本為例,腳本內容如下:

        # 導入torch模塊
        import torch
        import torchvision
        # 導入eais提供的python模塊
        import eais.torch_eais
        
        if __name__ == '__main__':
            # 初始化resnet50 torch模型
            model = torchvision.models.resnet50(pretrained=True).cuda()
            # 初始化隨機輸入tensor
            input_tensor = torch.rand((1, 3, 224, 224)).cuda()
            # 執行模型推理
            output = model(input_tensor).cpu()
            print("output shape:", output.shape)
      2. 執行如下命令,運行您準備好的EAIS模型推理腳本。

        python3 pytorch_resnet50.py