TensorFlow Serving多版本模型:能否通过不同端点调用?
TensorFlow Serving按版本调用模型的正确方式
问题描述
我正在评估使用tensorflow/serving Docker镜像托管已保存的TensorFlow模型的方案。我的模型目录结构为:
test-model 1 saved model v1 2 saved model v2
使用如下Docker命令启动服务:
docker run \ -v "test-model:/models/test-model" \ -e MODEL_NAME=test-model \ tensorflow/serving
尝试通过不同端点调用不同版本的模型,比如http://localhost:8501/v1/models/test-model/1和http://localhost:8501/v1/models/test-model/v1,但均返回报错:
{"error": "Malformed request: POST /v1/models/test-model/v1:predict"}
解决方案
TensorFlow Serving支持通过REST API指定模型版本调用,但你使用的端点格式不正确,正确的两种调用方式如下:
方式1:通过路径指定版本
在模型名后添加/versions/版本号,完整端点为:
http://localhost:8501/v1/models/test-model/versions/1:predict
调用版本2时则改为:
http://localhost:8501/v1/models/test-model/versions/2:predict
方式2:通过查询参数指定版本
在标准预测端点后添加?version=版本号,完整端点为:
http://localhost:8501/v1/models/test-model:predict?version=1
同样,版本2的调用端点为:
http://localhost:8501/v1/models/test-model:predict?version=2
补充说明
- 若不指定版本,TensorFlow Serving默认会加载并使用目录中版本号最大的模型(此场景下为版本2)。
- 版本号必须是你模型目录中存在的整数(比如你的
1和2),不能使用自定义字符串(如v1)。
内容的提问来源于stack exchange,提问作者senjin.hajrulahovic
相关产品推荐
相关产品推荐

