Tensorflow服务:Rest API返回“格式错误的请求”错误

问题描述 投票:3回答:4

Tensorflow服务服务器(使用docker运行)响应我的GET(和POST)请求:

{ "error": "Malformed request: POST /v1/models/saved_model/" }

确切地说,同样的问题已经报告但从未解决过(据说,这是一个StackOverflow问题,而不是GitHub问题):

https://github.com/tensorflow/serving/issues/1085

https://github.com/tensorflow/serving/issues/1095

有任何想法吗?非常感谢你。

rest tensorflow machine-learning tensorflow-serving
4个回答
3
投票

我确认这在v12之前不起作用,确实在v12之后工作。

> docker run -it -p 127.0.0.1:9000:8500 -p 127.0.0.1:9009:8501 -v /models/55:/models/55 -e MODEL_NAME=55 --rm tensorflow/serving
> curl http://localhost:9009/v1/models/55
   { "error": "Malformed request: GET /v1/models/55" }

现在尝试使用v12:

> docker run -it -p 127.0.0.1:9000:8500 -p 127.0.0.1:9009:8501 -v /models/55:/models/55 -e MODEL_NAME=55 --rm tensorflow/serving:1.12.0
> curl http://localhost:9009/v1/models/55
{
 "model_version_status": [
  {
   "version": "1541703514",
   "state": "AVAILABLE",
   "status": {
    "error_code": "OK",
    "error_message": ""
   }
  }
 ]
}

1
投票

取决于你的模型,但这是我的身体的样子:

{“inputs”:{“text”:[“Hello”]}}

我用Postman来帮助我,让它知道它是一个JSON。

这是针对预测API,因此网址以“:predict”结尾再次,这取决于您尝试使用的API。


1
投票

我的方法有两个问题:

1)我的Tensorflow_model_server不支持状态检查请求(有关详细信息,请参阅https://github.com/tensorflow/serving/issues/1085

2)更重要的是,在使用Windows时,必须使用JSON中的引号。所以代替:

curl -XPOST http://localhost:8501/v1/models/saved_model:predict -d "{"instances":[{"features":[1,1,1,1,1,1,1,1,1,1]}]}"

我应该用这个:

curl -XPOST http://localhost:8501/v1/models/saved_model:predict -d "{\"instances\":[{\"features\":[1,1,1,1,1,1,1,1,1,1]}]}"

0
投票

模型状态API仅在主分支中受支持。目前还没有支持它的TF服务版本(API将在即将发布的1.12版本中发布)。您可以使用夜间docker镜像(tensorflow / serving:nightly)来测试主分支构建。

这个解决方案由netf在issue:1128 in tensorflow/serving给出。我已经尝试过这个解决方案,它已经完成,我可以获得模型status.Getting Model status img(这是模型状态演示的img)。

希望我能帮助你。

如果您没有清除主分支构建,您可以与我联系。

我可以给你指示。

电子邮件:[email protected]

© www.soinside.com 2019 - 2024. All rights reserved.