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
有什么想法吗?非常感谢。
答案 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