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
文檔內容是否對您有幫助?