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

时间:2018-10-05 18:08:05

标签: rest tensorflow machine-learning tensorflow-serving

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

有什么想法吗?非常感谢。

4 个答案:

答案 0 :(得分: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 :(得分:1)

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

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

我使用Postman来帮助我,以便它知道它是JSON。

这是用于预测API,因此该URL以“:predict”结尾 同样,这取决于您要使用的API。

答案 2 :(得分:1)

我的方法有两个问题:

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

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

LiveCycle

我应该使用这个:

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

答案 3 :(得分:0)

仅在master分支中支持模型状态API。尚无支持它的TF服务版本(该API计划用于即将发布的1.12版本)。您可以使用每晚的docker映像(tensorflow / serving:nightly)来测试master分支构建。

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

希望我能帮助您。

如果您不清楚主分支的构建,则可以与我联系。

我可以给你指示。

电子邮件:mizeshuang@gmail.com