Тензорный поток / обслуживание с верхним n логитами для возврата
В настоящее время я решаю задачу масштабного обслуживания моих моделей тензорного потока. Насколько я знаю, рекомендуемое решение - использовать стандартный TensorFlow ModelServer. Общие требования довольно хорошо справляются с этим - но я хочу большего. Я хочу уменьшить количество передаваемых данных, проанализировав такой параметр, как "предел", чтобы определить первые n logits + вероятности возврата.
Во время моего исследования я определил следующие решения:
1) Создайте более продвинутый SignatureDef во время построения модели.
2) Настройте основной тензор потока / обслуживающий проект с упомянутой функциональностью.
3) Обслуживайте модель с помощью стандартного сервера моделей Tensorflow и создайте сервис постобработки для реструктуризации, соответственно. отфильтруйте результат заранее определенным способом.
Может ли кто-нибудь более опытный, чем я, рассказать о моем вопросе? - CodeSnippets или ссылки будут потрясающими.
Заранее спасибо.
1 ответ
Ваше решение № 3,
"Обслуживайте модель с помощью стандартного сервера Tensorflow Modelserver и создайте сервис постобработки, чтобы реструктурировать или отфильтровать результат заранее определенным способом".
должен быть лучшим.
Ссылки и фрагменты кода: если мы рассмотрим пример 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 Predictions.