SavedModel Warmup

Введение

Среда выполнения TensorFlow имеет компоненты, которые инициализируются лениво, что может вызвать большую задержку для первого запроса / запросов, отправленных в модель после ее загрузки. Эта задержка может быть на несколько порядков выше, чем у одного запроса на логический вывод.

Чтобы уменьшить влияние отложенной инициализации на задержку запроса, можно запустить инициализацию подсистем и компонентов во время загрузки модели, предоставив образец набора запросов вывода вместе с SavedModel. Этот процесс называется «разогревом» модели.

использование

SavedModel Warmup поддерживается для Regress, Classify, MultiInference и Predict. Чтобы запустить прогрев модели во время загрузки, прикрепите файл данных прогрева в подпапке assets.extra каталога SavedModel.

Требования для корректной работы прогрева модели:

  • Имя файла прогрева: 'tf_serving_warmup_requests'
  • Расположение файла: assets.extra /
  • Формат файла: TFRecord с каждой записью , как PredictionLog .
  • Количество записей разминки <= 1000.
  • Данные разминки должны быть репрезентативными для запросов логического вывода, используемых при обслуживании.

Пример фрагмента кода, создающего данные для разминки:

import tensorflow as tf
from tensorflow_serving.apis import classification_pb2
from tensorflow_serving.apis import inference_pb2
from tensorflow_serving.apis import model_pb2
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_log_pb2
from tensorflow_serving.apis import regression_pb2

def main():
    with tf.io.TFRecordWriter("tf_serving_warmup_requests") as writer:
        # replace <request> with one of:
        # predict_pb2.PredictRequest(..)
        # classification_pb2.ClassificationRequest(..)
        # regression_pb2.RegressionRequest(..)
        # inference_pb2.MultiInferenceRequest(..)
        log = prediction_log_pb2.PredictionLog(
            predict_log=prediction_log_pb2.PredictLog(request=<request>))
        writer.write(log.SerializeToString())

if __name__ == "__main__":
    main()