SavedModel
格式进行模型保存tf.saved_model.save(model, 'path_to_saved_model')
在当前文件夹里面会多出一个文件夹path_to_saved_model
.
├── assets
├── saved_model.pb
└── variables
├── variables.data-00000-of-00001
└── variables.index
其中 assets
是一个可选的目录,用于存放模型运行所需的辅助文件,比如字典文件等。 variables
目录下存放的是模型权重的检查点文件,模型的所有权重信息均保存在该目录下。 saved_model.pb
文件中包含了模型的结构以及训练的配置信息如优化器,损失以及指标等信息。
docker pull tensorflow/serving
MODEL_NAME/
└── 1
├── assets
├── saved_model.pb
└── variables
├── variables.data-00000-of-00001
└── variables.index
MODEL_NAM是自定义的模型的名字
1 表示该模型的可用版本,这里只有一个版本,也可以存在多个版本。
版本目录下的文件即为 SavedModel 格式的文件
下面用xieshi这个名字来代替MODEL_NAME
docker run -d -p 8501:8501 -v /usr/local/aimodels/xieshi:/models/xieshi -e MODEL_BASE_PATH=/models -e MODEL_NAME=xieshi tensorflow/serving
我们可以在容器启动时通过设置容器内的环境变量 MODEL_BASE_PATH 来指定模型的存储路径,该环境变量的默认值为 /models ,表示从容器内的 /models 路径加载模型。同样地,可以通过 MODEL_NAME 环境变量来指定要加载的模型名称,该环境变量的默认值为 model 。基于环境变量的 Serving 服务启动命令如下所示:
8051是tfs(tensorflow serving)默认的端口
挂载
/usr/local/aimodels/xieshi 主机模型目录
/models/xieshi 容器里面存放模型的目录
docker logs containerid
查看容器的日志以定位问题# 输入命令
curl http://localhost:8501/v1/models/xieshi
# 返回
{
"model_version_status": [
{
"version": "0",
"state": "AVAILABLE",
"status": {
"error_code": "OK",
"error_message": ""
}
}
]
}
curl -d '{"instances": [[1.0, 2.0, 5.0]]}' -X POST http://localhost:8501/v1/models/xieshi:predict
如果返回错误使用 docker logs containerid
查看容器的日志以定位问题
import json
import requests
# 构造输入参数
payload = {
"instances": [[1.0, 2.0, 5.0], ]
}
# 请求
pred = requests.post('http://localhost:8501/v1/models/model:predict', json=payload)
# 返回
_probas = json.loads(pred.content.decode('utf-8'))
# 取值
_probas = _probas['predictions']
print(_probas)
tensorflow serving需要json格式,按照上面那样就行了
TensorFlow 篇 | TensorFlow 2.x 模型 Serving 服务 (juejin.cn)
TensorFlow 篇 | TensorFlow 2.x 基于 Keras 的模型保存及重建 (juejin.cn)
【记录】记录第一次使用tensorflow serving全过程_maqian5的博客-CSDN博客
TensorFlow 篇 | TensorFlow 2.x 基于 Keras 的模型构建 (juejin.cn)