Стремитесь загрузить всю модель, чтобы оценить потребление памяти Tensorflow Serving - PullRequest
4 голосов
/ 07 мая 2019

Tensorflow Обслуживание ленивых инициализирует узлы в модели DAG по мере выполнения прогнозов. Это затрудняет оценку памяти (ОЗУ), которая требуется для хранения всей модели. Существует ли стандартный способ заставить Tensorflow Serving полностью инициализировать / загрузить модель в память?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Вы можете использовать прогрев модели, чтобы принудительно загрузить все компоненты в память. [1]

[1] https://www.tensorflow.org/tfx/serving/saved_model_warmup

0 голосов
/ 16 мая 2019

Добавление содержимого ссылки, предоставленной @PedApps, ниже.

Введение:

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

Эта задержка может быть на несколько порядков выше, чем у одного запроса логического вывода.

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

Этот процесс известен как «прогрев» модели.

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

SavedModel Warmup поддерживается дляRegress, Classify, MultiInference and Predict.

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

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

  • Имя файла прогрева: 'tf_serving_warmup_requests'

  • Расположение файла: assets.extra /

  • Формат файла: TFRecord с каждой записью в виде PredictionLog.

  • Количество записей прогрева <= 1000. </p>

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

Пример фрагмента кода, вырабатывающего данные прогрева:

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.python_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()
...