Обслуживание TensorFlow: получить форму ввода и метки - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я пытаюсь настроить обслуживающий клиент TensorFlow, задача которого состоит в обработке очереди сообщений следующего формата:

{
  "model_url":"http://path/to/some/model",
  "image_url":"http://path/to/some/image"
}

Другими словами, в каждом сообщении указано, какое изображениеследует прогнозировать использование какой модели.В идеале мне не нужно указывать дополнительную информацию в очереди, чтобы это работало.

Однако есть две проблемы.Размер входного изображения может варьироваться, тогда как ожидаемый размер входного сигнала является фиксированным (определяется моделью).Таким образом, клиент должен изменить размер изображения версии.Для этого он должен знать ожидаемый входной размер.

Поэтому мой конкретный вопрос : если я знаю model_url, есть ли способ сделать запрос на обслуживание TensorFlow?сервер, чтобы он сказал мне, как выглядит ожидаемая форма ввода?Похоже, мне нужно было бы знать метки, связанные с предсказаниями, которые дает модель (например, «кошка», «собака» и т. Д., Если бы мы делали классификацию изображений).

То, что я ищу, будетбыть в духе следующего псевдокода:

request_dict =    {
  "meta_info":["input_shape", "labels"]
}

response = requests.post(model_url, data=json.dumps(request_dict))

input_shape = response["input_shape"]
labels = response["labels"]

1 Ответ

0 голосов
/ 29 января 2019

Да, вы можете запросить все формы входов и выходов из вашей модели, отправив запрос на путь /metadata вашего TF-сервера.

В его самой простой форме:

import requests
metadata_url = f'http://{host}:{port}/v1/models/{modelname}/metadata'
response = request.get(metadata_url).json()

Ответом будет словарь, который содержит полную спецификацию signaturedef вашей модели (то есть формы всех входов и выходов).

Это, вероятно, проще всего, если использовать REST API.См. https://www.tensorflow.org/serving/api_rest для дополнительных примеров (в разделе «API метаданных»).Также знайте, что можно выставлять порты для трафика gRPC (для фактического трафика полезной нагрузки), а также для трафика HTTP (для запроса метаданных модели) одновременно.Просто укажите оба порта при запуске сервера.

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