1.首先训练好一个深度学习模型
2.将训练好的模型导出成tf-serving需要的格式
tf.keras.models.save_model(
model,
export_path,
overwrite=True,
include_optimizer=True,
save_format=None,
signatures=None,
options=None
)
模型保存的格式如下图:
3.使用docker拉取tf-serving镜像
- 拉取tf-serving镜像
docker pull tensorflow/serving
- 查看所有docker镜像
docker images
4.将本地模型使用TF-Serving部署到服务器
- 启动一个docker TF-Serving镜像的容器:创建好容器以后 可以直接在客户端管理
docker run -p 8501:8501 \
--mount type=bind,source={本地模型位置},target={docker容器里模型存放的目标位置} \
-e MODEL_NAME={容器里模型名字} -t tensorflow/serving
例如:
docker run -p 8501:8501 \
--mount type=bind,source=/Users/kyousugi/Desktop/四、深度学习/深度学习-项目/Project11:模型部署TFServing/Models,target=/models/model \
-e MODEL_NAME=model -t tensorflow/serving
5.查看模型服务是否启动成功
1)在浏览器中打开
http://localhost:8501/v1/models/model
# 模型正确部署成功后,应该显示如下信息:
{
"model_version_status": [
{
"version": "1",
"state": "AVAILABLE",
"status": {
"error_code": "OK",
"error_message": ""
}
}
]
}
2)在终端查看模型服务信息
curl http://localhost:8501/v1/models/model
6.数据预测
1)使用代码直接预测数据
import requests
import json
data = json.dumps({"signature_name": "serving_default",
"instances": x_test.tolist()})
headers = {"content-type": "application/json"}
json_response = requests.post('http://localhost:8501/v1/models/model:predict',
data=data,
headers=headers)
predictions = json.loads(json_response.text)['predictions']
print(predictions)
结果:
[[0.622035265], [0.552023888], [0.95764941]]
2)在终端使用模型服务预测新数据
curl -d '{"instances": [[0.0, 30.83, 0.0, 0.0, 0.0, 9.0, 0.0, 1.25, 0.0, 0.0, 1.0, 1.0, 0.0, 202.0, 0.0], [1.0, 58.67, 4.46, 0.0, 0.0, 8.0, 1.0, 3.04, 0.0, 0.0, 6.0, 1.0, 0.0, 43.0, 560.0]]}' \
-X POST http://localhost:8501/v1/models/model:predict
结果:
{
"predictions": [[0.622035265], [0.552018225]
]
}
3)在postman中显示