触发对docker内部托管的tensorflow服务的POST请求时,获取连接被拒绝错误

触发对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

我需要在tensorflow服务的帮助下为多个tensorflow模型提供服务。 我在docker编辑了tensorflow。 接下来,我运行了docker映像,该映像成功运行

运行docker容器和托管多个模型的其余步骤是按照 以下教程:

此操作所需的模型和配置文件由博客作者在以下git存储库中提供:

我将配置文件和模型放在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分别包含用于虹膜分类和虹膜预测模型的保存的_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=