Обслуживание Tensorflow: Rest API возвращает ошибку "Malformed request"
Сервер обслуживания Tensorflow (работает с докером) отвечает на мои запросы GET (и POST) следующим образом:
{ "error": "Malformed request: POST /v1/models/saved_model/" }
Точно такая же проблема уже была сообщена, но никогда не решалась (предположительно, это вопрос Stackru, а не проблема GitHub):
https://github.com/tensorflow/serving/issues/1085
https://github.com/tensorflow/serving/issues/1095
Есть идеи? Большое спасибо.
4 ответа
С моим подходом было две проблемы:
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]}]}"
Я проверил, что это не работает до 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": ""
}
}
]
}
Зависит от вашей модели, но вот как выглядит мое тело:
{"input": {"text": ["Hello"]}}
Я использовал Почтальона, чтобы помочь мне, чтобы он знал, что это был JSON.
Это для предиктивного API, поэтому URL оканчивается на ": предикат". Опять же, это зависит от того, какой API вы пытаетесь использовать.
API статуса модели поддерживается только в основной ветке. Не существует ни одной поддерживающей версии TF, которая его поддерживает (API планируется в следующей версии 1.12). Вы можете использовать ночной образ докера (tenenflow/serve:nightly), чтобы протестировать сборки основной ветки.
Это решение, данное netf в выпуске:1128 в тензорном потоке / обслуживание. Я уже пробовал это решение, оно сделано, и я могу получить статус модели. Получение статуса модели img(это img для демонстрации статуса модели).
Надеюсь, я могу помочь вам.
Если вы не очистите основную ветку, вы можете связаться со мной.
Я могу дать ваши инструкции.
E-mail:mizeshuang@gmail.com