使用EAIS推理PyTorch模型(Python)

您可以在ECS实例(非GPU实例)上绑定一个弹性加速计算实例EAIS(EAIS可以为ECS实例提供GPU资源),即可生成一款新规格的GPU实例。相比直接购买GPU实例,使用该方式可以为您灵活提供GPU资源并有效节省成本。如果您初次使用EAIS,可以通过本文内容体验在ECS实例上使用EAIS通过Python脚本推理PyTorch模型并获得性能加速的完整使用流程,帮助您快速上手EAIS。

背景信息

本教程将引导您创建一个华东1(杭州)地域,eais.ei-a6.2xlarge规格的EAIS实例,并以公开的resnet50模型和bert-base模型为例,带您体验基于图像分类和NLP的推理场景下,使用EAIS推理PyTorch模型并获得性能加速的完整操作流程。如果您使用EAIS推理过程中遇到性能或者功能问题,请联系EAIS技术支持为您提供定制化的优化方案。

推理方式

EAIS支持使用如下两种方式推理PyTorch模型:

  • 使用EAIS提供的EAIS miniconda环境

    EAIS miniconda环境是阿里云基于miniconda开发的EAIS使用环境。在EAIS miniconda环境中,阿里云为您提供了用于测试体验的样例脚本和模型文件。

    EAIS miniconda环境为您提供了Python和C++两种推理PyTorch模型的方式,本教程重点介绍使用Python脚本推理PyTorch模型的过程,如需了解C++程序推理PyTorch模型的过程,请参见使用EAIS推理PyTorch模型(C++)

  • 在您已有的PyTorch模型运行环境中安装EAIS提供的Python软件包

    更多信息,请参见《操作指南》中的使用EAIS推理PyTorch模型(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倍

步骤一:创建并绑定ECS实例和EAIS实例

  1. 创建ECS实例。

    1. 登录并前往ECS实例创建页

    2. 创建一个专有网络类型的ECS实例,来作为EAIS实例的绑定目标。

      具体操作,请参见实例创建方式介绍

      说明

      ECS实例的操作系统推荐使用Ubuntu 18.04。

  2. 创建EAIS实例。

    1. 登录EAIS控制台

    2. 在左侧导航栏,选择弹性加速计算实例 EAIS > 弹性加速计算实例列表

      重要

      如果您的阿里云账号未添加并授权AliyunServiceRoleForEais角色(角色权限策略为AliyunServiceRoleForEais),您需要先授权EAIS创建一个服务关联角色后,再创建EAIS实例。具体操作,请参见服务关联角色

    3. 单击创建弹性加速计算实例

    4. 在EAIS实例购买页面,配置EAIS实例参数,然后单击立即购买

      创建EAIS实例.png配置项说明如下:

      配置项

      配置示例

      地域

      华东1(杭州)

      实例名称

      eais_test

      实例规格

      eais.ei-a6.2xlarge

      专有网络

      eais-vpc

      交换机

      eais-vswitch

      安全组

      eais-securitygroup

      资源组

      默认资源组

    5. 确认订单页面,选中服务协议右侧的我已阅读并同意弹性加速计算实例服务协议,然后单击立即开通eais 订单确认

  3. 绑定EAIS实例至ECS实例。

    1. 单击管理控制台,前往EAIS控制台

    2. 在EAIS实例列表中,单击实例eais_test所在操作列下的绑定绑定EAIS.png

    3. 在对话框中,选择待绑定的ECS实例。

    4. 单击确定

      EAIS实例列表每15秒自动刷新,当EAIS实例状态由绑定中变为已绑定时,表示EAIS实例绑定成功。

      重要

      一个EAIS实例仅支持绑定一个ECS实例,一个ECS实例支持绑定一个或多个EAIS实例。更多信息,请参见使用限制

步骤二:启动EAIS实例

重要

仅使用EAIS控制台和调用CreateEaisEi创建的EAIS实例需要执行本操作。

  1. 在EAIS实例列表中,单击实例eais_test所在操作列下的启动启动EAIS.png

  2. 启动实例对话框中,单击确定

    EAIS实例列表每15秒自动刷新,当EAIS实例状态由已绑定变为使用中时,表示EAIS实例启动成功。

步骤三:登录ECS实例

  1. 登录EAIS控制台

  2. 在EAIS实例列表中,单击实例eais_test绑定的ECS实例ID,进入该ECS实例详情页。单击ECS实例ID.png

  3. 远程登录ECS实例。

    具体操作,请参见连接方式概述远程连接ECS实例.png

步骤四:查看EAIS相关信息

  1. 安装eais-tool软件包。

    1. 执行如下命令,安装eais-tool deb软件包。

      export VERSION=4.2.5
      wget https://eais-rel-pub.oss-cn-beijing.aliyuncs.com/packages/eais-tool_${VERSION}_amd64.deb
      sudo dpkg -i eais-tool_${VERSION}_amd64.deb
      source /etc/profile
    2. 执行如下命令,查看eais-tool deb软件包安装结果。

      dpkg -l | grep eais-tool

      回显信息中包含eais-tool软件包信息,表示eais-tool deb软件包安装成功。

  2. 查看EAIS相关信息。

    如果您想查看EAIS相关信息,只需在您安装eais-tool软件包后,执行eais_smi命令,即可在回显中查看EAIS实例规格、EAIS GPU使用率等信息,回显示例如下。eais_smi工具查看硬件信息

步骤五:搭建运行环境

  1. 安装CUDA。

    1. 执行如下命令,下载并安装CUDA软件包。

      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
  2. 安装eais-cuda软件包。

    说明

    本操作以ECS实例的操作系统为Ubuntu为例,CentOS或Alibaba Cloud Linux操作系统的cGPU安装操作,请参见eais-cuda

    1. 执行如下命令,安装EAIS cuda deb软件包。

      export VERSION=4.2.5
      wget https://eais-rel-pub.oss-cn-beijing.aliyuncs.com/packages/eais-cuda_${VERSION}_amd64.deb
      sudo dpkg -i eais-cuda_${VERSION}_amd64.deb
    2. 执行如下命令,查看eais-cuda deb软件包安装结果。

      dpkg -l | grep eais-cuda

      回显信息中包含eais-cuda软件包信息,表示eais-cuda deb软件包安装成功。

  3. 下载并激活EAIS miniconda。

    1. 执行如下命令,下载并解压eais-miniconda软件包。

      wget https://eais-rel-pub.oss-cn-beijing.aliyuncs.com/packages/eais-miniconda.zip
      sudo apt-get update && sudo apt-get install -y unzip
      unzip -q eais-miniconda.zip
    2. 执行如下命令,进入eais-miniconda软件包根目录。

      cd eais-miniconda/
      说明

      后续操作均会以此为根目录。

    3. 执行如下命令,激活EAIS miniconda环境。

      source bin/activate

步骤六:推理并加速PyTorch模型

  1. 执行如下命令,进入Python脚本测试目录。

    cd eais/python
  2. 执行如下命令,使用EAIS推理resnet50模型。

    python pytorch_resnet50.py \
    -m ../data/models/resnet50.pt \
    -l ../data/densenet_labels.txt \
    ../data/images/

    参数信息说明如下:

    • pytorch_resnet50.py:eais-miniconda软件包中提供的推理脚本样例。

    • ../data/models/resnet50.pt:eais-miniconda软件包中提供的resnet50模型文件。

    • ../data/densenet_labels.txt:eais-miniconda软件包中提供的存放图片类别名称的文件。

    • ../data/images/:eais-miniconda软件包中提供的样例图片路径。

    您将从执行结果中获取图片的分类结果信息,部分回显如下。使用EAIS推理PyTorch模型并加速1

  3. 执行如下命令,测试使用EAIS推理resnet50模型的性能。

    python pytorch_resnet50_perf.py \
      -m ../data/models/resnet50.pt

    您将从执行结果中获取到resnet50模型的推理延迟数据,部分回显如下。使用EAIS推理PyTorch模型并加速2

  4. 执行如下命令,测试使用EAIS推理bert-base模型的性能。

    python pytorch_bert_perf.py \
      -m ../data/models/bert-base-uncased.pt

    您将从执行结果中获取到bert-base模型的推理延迟数据,部分回显如下。image

(可选)步骤七:停止EAIS实例

当您暂时不需要EAIS提供的GPU能力时,您可以停止EAIS实例。

重要

仅使用EAIS控制台和调用CreateEaisEi创建的EAIS实例支持执行本操作。

  1. 登录EAIS控制台

  2. 在EAIS实例列表中,单击实例eais_test所在操作列下的停止

  3. 停止实例对话框中,单击确定

    EAIS实例列表每15秒自动刷新,当EAIS实例状态由使用中变为已绑定时,表示EAIS实例已停止。

(可选)步骤八:解绑并释放EAIS实例

完成推理后,如果您需要将该EAIS实例绑定至其他ECS实例,您可以将该EAIS实例从ECS实例上解绑后,再重新绑定至其他ECS实例。如果您不再需要使用该EAIS实例,则您需要将该EAIS实例从ECS实例上解绑后,才能释放该EAIS实例。解绑和释放EAIS实例的具体操作如下:

  1. 登录EAIS控制台

  2. 将EAIS实例从ECS实例上解绑。

    1. 在EAIS实例列表中,单击实例eais_test所在操作列下的解绑

    2. 解绑ECS实例对话框中,单击确定

      EAIS实例列表每15秒自动刷新,当EAIS实例状态变从已绑定变为可绑定时,表示EAIS实例解绑成功。

  3. 将已解绑的EAIS实例释放。

    1. 在EAIS实例列表中,单击实例eais_test所在操作列下的释放资源

    2. 释放资源对话框中,单击确定

      EAIS实例将从EAIS实例列表中删除。

相关文档

说明

更多EAIS实例使用方法,请参见使用EAIS实例实践教程