Обслуживание 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

Другие вопросы по тегам