EAIS实例成功绑定至ECS实例后,您需要远程登录该ECS实例,使用EAIS实例进行AI推理。本文为您介绍使用EAIS推理TensorFlow模型的具体操作。
前提条件
已将EAIS实例绑定至ECS实例上。具体操作,请参见绑定实例。
已将您需要推理的TensorFlow模型文件放至已绑定EAIS实例的ECS实例客户端的目录下。
使用限制
Python版本:3.6~3.7。
TensorFlow版本:1.15.0~1.15.5。
操作步骤
登录并连接ECS实例。
搭建运行环境。
执行如下命令,将pip软件升级至最新版本。
python3 -m pip install --upgrade pip
执行如下命令,安装TensorFlow。
以TensorFlow版本为1.15.5为例。
pip3 install tensorflow==1.15.5
执行如下命令,安装EAIS TensorFlow。
pip3 install eais_tensorflow -f https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/eais/packages/index.html
执行如下命令,下载模型软件包。
wget https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/eais/packages/eais2_example.tar
执行如下命令,解压软件包。
tar xvf eais2_example.tar
(可选)执行如下命令,查看EAIS实例的相关信息。
eais_smi
您可以查看EAIS实例规格、EAIS GPU使用率等,回显如下。
开发模型推理脚本并使用EAIS进行加速推理。
Python脚本开发说明
相较于普通推理流程,您仅需要在进行推理前,在原有推理脚本的基础上添加一行
import eais_tensorflow
导入EAIS提供的Python模块,即可使用EAIS推理TensorFlow模型。假设您的TensorFlow模型推理初始源代码如下所示:
# 导入tensorflow模块 import tensorflow as tf model_file = "xxx.pb" with tf.gfile.FastGFile(model_file, 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) tf.import_graph_def(graph_def, name='') with tf.Session() as sess: result = sess.run(...)
如果您需要使用EAIS推理您的TensorFlow模型,请将源代码修改为如下内容:
# 导入tensorflow模块 import tensorflow as tf # 导入eais tensorflow模块 import eais_tensorflow model_file = "xxx.pb" with tf.gfile.FastGFile(model_file, 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) tf.import_graph_def(graph_def, name='') with tf.Session() as sess: result = sess.run(...)
使用示例
准备模型推理Python脚本。
本示例以resnet50模型推理、resnet50.py脚本为例,脚本内容如下:
import tensorflow as tf import eais_tensorflow from tensorflow.core.protobuf import config_pb2 from tensorflow.core.protobuf import rewriter_config_pb2 import numpy as np from PIL import Image img = 'cat.jpg' def load_graph(model_path): with tf.gfile.FastGFile(model_path, "rb") as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) g_in = tf.import_graph_def(graph_def, name="") return g_in if __name__ == "__main__": shape = [1, 299, 299, 3] image = Image.open(img) image = image.resize((shape[2],shape[1])) image_data = np.array(image,dtype='float32') image_data /= 255. image_data = np.expand_dims(image_data, 0) image_input = image_data.repeat(shape[0],axis=0) model_path='resnet_v2_50.pb' input_name = 'input' output_name = 'classes' config = config_pb2.ConfigProto() config.graph_options.rewrite_options.remapping = ( rewriter_config_pb2.RewriterConfig.OFF) session = tf.Session(graph=load_graph(model_path),config=config) logits_tensor = session.graph.get_tensor_by_name(output_name + ':0') logits = session.run(logits_tensor, feed_dict={input_name + ':0': image_input}) print(logits[0])
执行如下命令,运行准备好的EAIS模型推理脚本。
python3 resnet50.py
文档内容是否对您有帮助?