触发对docker内部托管的tensorflow服务的POST请求时,获取连接被拒绝错误
我需要在tensorflow服务的帮助下为多个tensorflow模型提供服务。 我在docker编辑了tensorflow。 接下来,我运行了docker映像,该映像成功运行 运行docker容器和托管多个模型的其余步骤是按照 以下教程: 此操作所需的模型和配置文件由博客作者在以下git存储库中提供: 我将配置文件和模型放在docker容器中的以下位置:触发对docker内部托管的tensorflow服务的POST请求时,获取连接被拒绝错误,docker,tensorflow,tensorflow-serving,Docker,Tensorflow,Tensorflow Serving,我需要在tensorflow服务的帮助下为多个tensorflow模型提供服务。 我在docker编辑了tensorflow。 接下来,我运行了docker映像,该映像成功运行 运行docker容器和托管多个模型的其余步骤是按照 以下教程: 此操作所需的模型和配置文件由博客作者在以下git存储库中提供: 我将配置文件和模型放在docker容器中的以下位置: root@72d81d939de5:/tensorflow-serving# ls AUTHORS CONTRIBUTING.md
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分别包含用于虹膜分类和虹膜预测模型的保存的_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
我不知道发生了什么;同样在浏览博客时,我也不能完全理解这个帖子请求字符串
此处使用:
http://localhost:8501/v1/models/iris/versions/2:predict
如果您能指导我如何纠正此问题,并从模型中获得预期的预测,那将非常有帮助。它似乎是唯一正在加载的版本1。您可以尝试使用相同的命令吗?通常,docker容器有自己的本地IP。您可以通过运行以下命令找到它:docker inspect-f'{{range.NetworkSettings.Networks}}{{.IPAddress}{{end}}'container_name_或_id尝试使用此IP而不是localhost。@Thommy257:感谢您的指导;我做了你建议的更改并再次触发了请求,我再也看不到那个连接错误了!但是,它现在抛出了一个新错误:{“error”:“服务签名名:\“predict iris\”未在签名定义中找到”}——有没有解决的线索?提前谢谢!当您使用模型导出器生成.pb文件时,必须定义一个签名\u名称。请求中的签名名称必须与此签名名称完全匹配。我猜您在导出图形时使用了其他签名名称。@Thommy257谢谢!这个错误现在消失了。您能告诉我客户请求的确切格式吗?我在docker中运行tf serving,当容器中只有一个模型时,我使用以下命令发送请求:python client.py--server=172.17.0.2:9000--image_path=