使用EAIS推理PyTorch模型(C++)

如果您初次使用弹性加速计算实例EAIS,可以通过本文内容体验使用EAIS的C++程序推理PyTorch模型并获得性能加速的完整使用流程,帮助您快速上手EAIS。

背景信息

本教程将引导您创建一台华东1(杭州)地域,eais.ei-a6.2xlarge规格的EAIS实例,并以公开的resnet50模型为例,带您体验基于图像分类的推理场景下,使用EAIS推理PyTorch模型并获得性能加速的完整操作流程。

本教程重点介绍使用C++程序推理PyTorch模型的过程,如需了解Python脚本推理PyTorch模型的过程,请参见使用EAIS推理PyTorch模型(Python)

步骤一:创建ECS实例

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

    说明

    如果未注册阿里云账号,请先注册账号。具体操作,请参见阿里云账号注册流程

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

    具体操作,请参见创建ECS实例

步骤二:创建EAIS实例

  1. 登录EAIS控制台

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

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

    eais控制台创建按钮
  4. 在EAIS实例购买页面,选择地域华东1(杭州)

    eais地域选择
  5. 设置实例名称eais_test

    eais名称输入
  6. 选择实例规格eais.ei-a6.xlarge

    eais规格选择
  7. 选择专有网络eais vpc选择

  8. 选择交换机eais 交换机选择

  9. 选择安全组eais安全组选择

  10. 单击立即购买

  11. 确认订单页面,选中服务协议,然后单击立即开通eais 订单确认

步骤三:绑定EAIS至ECS实例

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

    eais 购买成功
  2. 在EAIS实例列表中,单击实例eais_test所在操作列下的绑定ECS实例eais 可绑定

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

    eais 绑定
  4. 单击确定

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

    eais 已绑定
    说明

    EAIS实例仅支持绑定一台ECS实例,且ECS实例仅支持绑定一个EAIS实例。

步骤四:登录ECS实例

  1. 前往EAIS控制台

  2. 在实例列表中,单击实例eais_test对应的ECS实例ID,进入该ECS实例控制台。

    ECS ID
  3. 远程登录ECS实例。

    具体操作,请参见远程连接ECS实例2021-08-19_10-38-32

步骤五:搭建运行环境

本教程以cxx11 ABI方式编译的依赖于libtorch1.9.0版本的EAIS deb软件包为例,进行如下步骤搭建C++运行环境。

  1. 执行如下命令,下载EAIS deb软件包。

    wget https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/eais/packages/eais-cxx11-abi-libtorch1.9.0_3.2.1_amd64.deb
  2. 执行如下命令,安装EAIS deb软件包。

    dpkg -i eais-cxx11-abi-libtorch1.9.0_3.2.1_amd64.deb
  3. 执行如下命令,查看EAIS deb软件包安装结果。

    dpkg -l | grep eais

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

(可选)步骤六:查看EAIS相关信息

如果您想查看EAIS相关信息,只需在搭建好的运行环境中,执行eais_smi命令,即可在回显中查看EAIS实例规格、EAIS GPU使用率等信息,回显示例如下。eais_smi工具查看硬件信息

步骤七:下载EAIS C++测试样例

  1. 执行如下命令,下载包含了EAIS C++测试样例的eais-miniconda软件包。

    wget https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/eais/packages/eais-miniconda.zip
  2. 执行如下命令,解压eais-miniconda软件包。

    apt-get update && apt-get install -y unzip
    unzip eais-miniconda.zip
  3. 执行如下命令,进入eais-miniconda软件包根目录。

    cd eais-miniconda/
    说明

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

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

  1. 使用C++软件包推理Pytorch模型。

    1. 执行如下命令,进入C++软件包测试目录。

      cd eais/cpp
    2. 编译C++示例脚本。

      1. 执行如下命令,安装编译及运行示例脚本所需要的软件包。

        apt-get update && apt-get install -y build-essential cmake libopencv-dev
      2. 执行如下命令,创建一个新的目录,该目录用于存放编译生成的程序。

        mkdir build
      3. 执行如下命令,进入新创建的目录。

        cd build
      4. 执行如下命令,编译生成可执行的示例程序。

        cmake ..
        make -j8
      5. 执行如下命令,查看生成的示例程序。

        ls
        ls src

        回显结果如下,表示示例程序pytorch_resnet50已生成。2022-03-31_15-56-27

      6. 执行如下命令,回退至C++软件包测试目录。

        cd ..
  2. 运行C++示例程序。

    1. 执行如下命令,以libtorch 1.9.0版本为例,设置示例程序依赖的动态库路径。

      export LD_LIBRARY_PATH=`pwd`/third_party/libtorch1.9.0/lib:$LD_LIBRARY_PATH
    2. 执行如下命令,进行resnet50模型推理。

      LD_PRELOAD=libtorcheais.so \
      build/src/pytorch_resnet50 \
        -m ../data/models/resnet50.pt \
        -l ../data/densenet_labels.txt \
        ../data/images

      参数信息说明如下:

      • LD_PRELOAD:预加载eais-miniconda软件包中提供的动态库libtorcheais-libtorch1.9.0.so

      • build/src/pytorch_resnet50:通过编译命令生成的可执行的示例程序pytorch_resnet50

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

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

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

      您将从执行结果中获取图片的分类结果信息,部分回显如下。2022-03-03_10-48-38

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

      LD_PRELOAD=libtorcheais.so \
      build/src/pytorch_resnet50_perf \
        -m ../data/models/resnet50.pt

      您将从执行结果中获取到resnet50模型的推理延迟数据,部分回显如下。C++模型开启AIACC功能推理加速

      说明

      EAIS默认开启神龙AI加速引擎AIACC推理加速功能。

    4. 执行如下命令,关闭EAIS提供的AIACC推理加速功能,并测试使用EAIS推理resnet50模型的性能。

      ENABLE_AIACC_TORCH=false \
      LD_PRELOAD=libtorcheais.so \
      build/src/pytorch_resnet50_perf \
        -m ../data/models/resnet50.pt

      您将从执行结果中获取到resnet50模型的推理延迟数据,部分回显如下。C++模型推理关闭AIACC从结果中可以看出,关闭AIACC推理加速功能后,resnet50模型的推理性能相比于开启加速之前的3.49ms降低一倍以上。

(可选)步骤九:解绑EAIS实例

当您完成了推理后,如果不再使用该EAIS实例,或需要绑定其他ECS实例,请进行如下解绑操作。

  1. 前往EAIS控制台

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

    2021-08-19_10-39-31
  3. 解绑ECS实例对话框中,单击确定

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

(可选)步骤十:释放EAIS实例

解绑ECS实例后,您的ECS实例将失去EAIS提供的推理加速服务。若不再使用此EAIS实例,请进行如下释放实例操作,避免不必要的计费。

  1. 前往EAIS控制台

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

    2021-08-19_10-40-21
  3. 释放资源对话框中,单击确定

    EAIS实例将从控制台的实例列表中删除。

阿里云首页 弹性加速计算实例EAIS 相关技术圈