Tensorflow 服务:休息 API returns "Malformed request" 错误

Tensorflow Serving: Rest API returns "Malformed request" error

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

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

完全相同的问题已被报告但从未解决(据推测,这是 Whosebug 类问题,而不是 GitHub 问题):

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

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

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

取决于您的型号,但这是我的 body 的样子:

{"inputs":{"text":["Hello"]}}

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

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

我的方法有两个问题:

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]}]}"

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

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

希望能帮到你

如果你不清楚主分支构建,你可以联系我。

我可以给你指导。

邮箱:mizeshuang@gmail.com

我证实这在 v12 之前不起作用并且确实有效 post-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": ""
   }
  }
 ]
}