Обслуживание Tensorflow: Rest API возвращает ошибку «Malformed request» - PullRequest
0 голосов
/ 05 октября 2018

Сервер обслуживания Tensorflow (работает с докером) отвечает на мои запросы 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

Есть идеи?Большое спасибо.

Ответы [ 4 ]

0 голосов
/ 09 ноября 2018

Я проверил, что это не работает до 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": ""
   }
  }
 ]
}
0 голосов
/ 10 октября 2018

С моим подходом возникли две проблемы:

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]}]}"
0 голосов
/ 11 октября 2018

API статуса модели поддерживается только в основной ветке.Не существует ни одной поддерживающей версии TF, которая поддерживает его (API планируется в следующей версии 1.12).Вы можете использовать образ ночной докера (tenorflow / serve: nightly) для тестирования сборок главной ветки.

Это решение, предоставленное netf в выпуске: 1128 в тензор потока / обслуживание .Я уже пробовал это решение, оно готово, и я могу получить статус модели. Получение статуса модели img (это изображение для демонстрации статуса модели).

Надеюсь, я смогу вам помочь.

Если вы не очистите сборки основной ветки, вы можете связаться со мной.

Я могу дать ваше указание.

Email: mizeshuang@gmail.com

0 голосов
/ 09 октября 2018

Зависит от вашей модели, но вот так выглядит мое тело:

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

Я использовал Почтальон дляпомогите мне, чтобы он знал, что это был JSON.

Это для API-интерфейса предиката, поэтому URL-адрес оканчивается на ": предикат". Опять же, это зависит от того, какой API вы пытаетесь использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...