使用EAIS实例(PyTorch应用)

EAIS实例成功绑定至ECS实例后,您需要远程登录该ECS实例,使用EAIS实例提供的AI推理进行加速。本文为您介绍使用EAIS加速PyTorch应用的具体操作。

前提条件

  • 已将EAIS实例绑定至ECS实例上。具体操作,请参见绑定实例

  • 已将您需要推理的PyTorch模型文件以及用于存放推理所需输入数据的文件放至ECS实例客户端的目录下。

准备eais-miniconda环境

eais-miniconda环境是阿里云基于miniconda开发的eais使用环境,其中包含了运行EAIS服务所依赖的安装包。

  1. 登录EAIS控制台

  2. EAIS控制台页面左上角选择实例所在地域。

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

  4. 远程登录ECS实例。具体操作,请参见远程连接ECS实例

  5. 下载EAIS miniconda环境并激活。

    1. 以miniconda环境1.1.7版本为例,执行如下命令,定义环境变量。

      VERSION="1.1.7"
    2. 执行如下命令,下载eais-miniconda.tar。

      wget https://public-ai-datasets.oss-cn-huhehaote.aliyuncs.com/eai-examples/eais-miniconda-v${VERSION}.tar -O eais-miniconda.tar
    3. 执行如下命令,解压eais-miniconda.tar。

      tar xvf eais-miniconda.tar
    4. 执行如下命令,修改解压后的文件夹名称。

      mv eais-miniconda-v${VERSION} eais-miniconda
    5. 执行如下命令,激活eais-miniconda环境。

      source `pwd`/eais-miniconda/bin/activate

准备模型推理脚本

相较于普通推理流程,EAIS的推理流程更加便捷,您仅需要在进行推理前使用EaisModel进行封装即可。本文以GNN模型文件pytorch_gnn_v2.py为例,示例脚本如下。

# pytorch_gnn_v2.py

import torch
import torch_sparse
import argparse
import numpy as np
from eais.torch_model import EaisModel
import json

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-m', '--model', type=str, required=True, help='model file path')
    parser.add_argument('-i', '--input', type=str, required=True, help='input data json file')
    FLAGS = parser.parse_args()

    with open(FLAGS.input) as fp:
        inputs = json.load(fp)
    inputs_data = inputs["data"][0]
    x = torch.tensor(np.array(inputs_data["INPUT__0"]["content"]).reshape(inputs_data["INPUT__0"]["shape"]), dtype=torch.half)
    edge_index = torch.tensor(np.array(inputs_data["INPUT__1"]["content"]).reshape(inputs_data["INPUT__1"]["shape"]), dtype=torch.int)
    pos = torch.tensor(np.array(inputs_data["INPUT__2"]["content"]).reshape(inputs_data["INPUT__2"]["shape"]), dtype=torch.int)
    batch = torch.tensor(np.array(inputs_data["INPUT__3"]["content"]).reshape(inputs_data["INPUT__3"]["shape"]), dtype=torch.int)
    cadis = torch.tensor(np.array(inputs_data["INPUT__4"]["content"]).reshape(inputs_data["INPUT__4"]["shape"]), dtype=torch.int)

    module = torch.jit.load(FLAGS.model)
    # pass module into EaisModel
    eaismodel = EaisModel(module)
    # inference
    r = eaismodel(x, edge_index, pos, batch, cadis)
    index = 0
    for out in r:
        print("\t{}-->shape: {}, dtype: {}".format(index, out.shape, out.dtype))
        index += 1

使用EAIS实例加速PyTorch应用

  1. 执行如下命令,启动EAIS服务进程。

    python eais-miniconda/bin/entrypoint.py start

    说明

    在EAIS实例与ECS服务器解除绑定后,请执行python eais-miniconda/bin/entrypoint.py stop手动关闭服务进程,否则会影响后续EAIS实例的绑定与使用。

  2. 执行如下命令,运行您准备好的EAIS模型推理脚本,本文以pytorch_gnn_v2.py为例。

    python  
    /prefix_path/pytorch_gnn_v2.py 
     -m  
    /prefix_path/gnn.pt 
     -i  
    /prefix_path/temp_fp16.json

    您需要根据实际情况,替换如下内容:

    • /prefix_path/pytorch_gnn_v2.py:您的推理脚本文件及所在路径。

    • /prefix_path/gnn.pt:您的PyTorch模型文件及所在路径。

    • /prefix_path/temp_fp16.json:由于本文以GNN模型为例,因此该文件为JSON文件。您需要根据实际情况,替换您用于存放推理所需输入数据的文件及所在路径。

    启动成功后,EAIS将为您的PyTorch推理程序加速,从而缩短推理时间,快速获取推理结果。