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