我需要借助tensorflow服务来提供多个tensorflow模型。 我在docker中编译了tensorflow服务。 接下来,我运行了成功运行的docker映像。
运行docker容器并托管多个模型的其余步骤是按照 下面的教程: https://medium.com/@brianalois/how-to-setup-tensorflow-serving-for-production-3cc2abf7efa
此操作所需的模型和配置文件由博客的作者在以下git存储库中提供: https://github.com/brianalois/tensorflow_serving_tutorial
我将配置文件和模型放在Docker容器中的以下位置:
root@72d81d939de5:/tensorflow-serving# ls
AUTHORS CONTRIBUTING.md LICENSE README.md RELEASE.md WORKSPACE configs models tensorflow_serving third_party tools
root@72d81d939de5:/tensorflow-serving# ls ./configs
models.conf
root@72d81d939de5:/tensorflow-serving# ls ./models
iris xor
root@72d81d939de5:/tensorflow-serving# ls ./models/iris
1 2
注意:文件夹1和2分别包含saved_models.pb文件,用于虹膜分类和虹膜预测模型。
如本教程所述,我在与本教程所述相同的端口上运行服务器:
tensorflow_model_server --port=8500 --rest_api_port=8501 --model_config_file=/tensorflow-serving/configs/models.conf
The log shows:
Successfully reserved resources to load servable {name: iris version: 1}
在配置文件中,托管模型的基本路径是这样定义的:
model_config_list: {
config: {
name: "xor",
base_path: "/tensorflow-serving/models/xor",
model_platform: "tensorflow",
model_version_policy: {
all: {}
}
},
config: {
name: "iris",
base_path: "/tensorflow-serving/models/iris",
model_platform: "tensorflow",
model_version_policy: {
all: {}
}
}
}
接下来,从docker容器外部,我对iris prdict模型触发了以下POST请求:
curl -X POST \
http://localhost:8501/v1/models/iris/versions/2:predict \
-d '{
"signature_name": "predict-iris",
"instances":[
[5.1, 3.5, 1.4, 0.2]
]
}'
并收到以下错误:
curl: (7) Failed to connect to localhost port 8501: Connection refused
我不确定发生了什么;我也不太了解这个POST请求字符串 在这里使用:
http://localhost:8501/v1/models/iris/versions/2:predict
如果您指导我如何纠正此问题并从模型中获得预期的预测,这将非常有帮助。