тензорный поток / обслуживание с верхним n логитами для возврата - PullRequest
2 голосов
/ 02 июля 2019

В настоящее время я решаю задачу масштабного обслуживания моих моделей тензорного потока.Насколько я знаю, рекомендуемое решение - использовать стандартный TensorFlow ModelServer .Общие требования довольно хорошо справляются с этим - но я хочу большего.Я хочу уменьшить количество передаваемых данных, проанализировав такой параметр, как «предел», чтобы определить первые n logits + вероятности возврата.

В ходе моего исследования я определил следующие решения:

1) Создайте более продвинутый SignatureDef во время построения модели.

2) Настройте базовый тензор потока / обслуживание с упомянутой функциональностью.

3) Обслуживайте модель со стандартнымTensorflow Modelserver и создайте сервис постобработки для реструктуризации соотв.отфильтруйте результат заранее определенным способом.

Может ли кто-нибудь более опытный, чем я, подробно рассказать о моем вопросе?- CodeSnippets или ссылки было бы здорово.

Заранее спасибо.

1 Ответ

1 голос
/ 12 июля 2019

Ваше решение № 3,

"Обслуживание модели с помощью стандартного сервера моделей Tensorflow и создание сервис постобработки для реструктуризации соотв. отфильтровать результат в предопределенный способ. "

должно быть лучшим.

Ссылки и фрагменты кода: если мы рассмотрим пример MNIST, использующий обслуживание TF, ссылка для сохраненной модели будет https://github.com/tensorflow/serving/blob/87e32bb386f156fe208df633c1a7f489b57464e1/tensorflow_serving/example/mnist_saved_model.py,

и ссылка для кода клиента: https://github.com/tensorflow/serving/blob/87e32bb386f156fe208df633c1a7f489b57464e1/tensorflow_serving/example/mnist_client.py.

Если нам нужны значения топ-n предсказаний, мы можем настроить код функции _create_rpc_callback в файле клиента, как показано ниже.

def _create_rpc_callback(label, result_counter):
  """Creates RPC callback function.

  Args:
    label: The correct label for the predicted example.
    result_counter: Counter for the prediction result.
  Returns:
    The callback function.
  """
  def _callback(result_future):
    """Callback function.

    Calculates the statistics for the prediction result.

    Args:
      result_future: Result future of the RPC.
    """
    exception = result_future.exception()
    if exception:
      result_counter.inc_error()
      print(exception)
    else:
      sys.stdout.write('.')
      sys.stdout.flush()
      response = numpy.array(result_future.result().outputs['scores'].float_val)
      print('Top 4 responses = ', response[0:4]) 

Оператор print в последней строке будет печатать прогнозы Top-4.

...