Step By Step
一、模型训练与保存
1.1 DSW控制台创建DSW2实例
1.2 Terminal更新TensorFlow(2.3.1当期最新版本)
pip install tensorflow
1.3、python code
# 安装 TensorFlow
import tensorflow as tf
print(tf.__version__)
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
# 将整个模型另存为 SavedModel。
model.save('saved_model_2/my_model')
4、模型格式
二、eascmd部署模型
2.1 压缩模型到zip包
zip -r model ./
2.2 eascmd 用户认证
eascmd64 config -i -k -e pai-eas.cn-hangzhou.aliyuncs.com
2.3 上传文件
eascmd upload [filename] --inner
2.4 创建模型部署json文件
{
"name": "taro_eas_keras_demo",
"generate_token": "true",
"model_path": "oss://eas-model-hangzhou/18482178/model.zip",
"processor": "tensorflow_cpu_1.14",
"metadata": {
"instance": 1,
"cpu": 1
}
}
更多参考:EASCMD客户端使用说明
2.5 部署模型
eascmd create [service_desc_json]
2.6 eas 控制台查看成功部署的模型
三、sdk 调用模型
3.1 获取模型信息。
通过GET请求可以获取模型的相关信息,包括signature_name、name、type及shape,示例如下: curl <访问地址> -H 'Authorization:' | python -mjson.tool
3.2 Python SDK调用 Code Sample
#!/usr/bin/env python
from eas_prediction import PredictClient, TFRequest
import cv2
import numpy as np
with open('2.jpg', 'rb') as infile:
buf = infile.read()
# 使用numpy将字节流转换成array
x = np.fromstring(buf, dtype='uint8')
# 将读取到的array进行图片解码获得28 × 28的矩阵
img = cv2.imdecode(x, cv2.IMREAD_UNCHANGED)
# 由于预测服务API需要长度为784的一维向量将矩阵reshape成784
img = np.reshape(img, 784)
if __name__ == '__main__':
# http://1848217*********.cn-shanghai.pai-eas.aliyuncs.com/api/predict/kears_model
client = PredictClient('1848217*********.cn-shanghai.pai-eas.aliyuncs.com', 'kears_model')
# 注意上面的client = PredictClient()内填入的信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分
client.set_token('*********')
# Token信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—Token”中获取
client.init()
req = TFRequest('serving_default') # signature_name 参数:serving_default
req.add_feed('flatten_input', [1, 28, 28], TFRequest.DT_FLOAT, img)
resp = client.predict(req)
print(resp)
3.3 测试结果
outputs {
key: "dense_1"
value {
dtype: DT_FLOAT
array_shape {
dim: 1
dim: 10
}
float_val: 0.0
float_val: 0.0
float_val: 1.0
float_val: 0.0
float_val: 0.0
float_val: 0.0
float_val: 0.0
float_val: 0.0
float_val: 0.0
float_val: 0.0
}
}
参考链接:阿里云机器学习PAI EAS部署TensorFlow Model
参考链接
阿里云机器学习PAI EAS部署TensorFlow Model
TensorFlow服务请求构造
EASCMD客户端使用说明