Calentamiento del modelo guardado

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Introducción

El tiempo de ejecución de TensorFlow tiene componentes que se inicializan de forma diferida, lo que puede provocar una alta latencia para las primeras solicitudes enviadas a un modelo después de que se cargue. Esta latencia puede ser varios órdenes de magnitud mayor que la de una sola solicitud de inferencia.

Para reducir el impacto de la inicialización diferida en la latencia de la solicitud, es posible activar la inicialización de los subsistemas y componentes en el momento de la carga del modelo proporcionando un conjunto de muestra de solicitudes de inferencia junto con el modelo guardado. Este proceso se conoce como "calentamiento" del modelo.

Uso

El Calentamiento de modelo guardado es compatible con Regresar, Clasificar, MultiInferencia y Predecir. Para activar el calentamiento del modelo en el momento de la carga, adjunte un archivo de datos de calentamiento en la subcarpeta assets.extra del directorio SavedModel.

Requisitos para que el calentamiento del modelo funcione correctamente:

  • Nombre del archivo de preparación: 'tf_serving_warmup_requests'
  • Ubicación del archivo: assets.extra /
  • Formato de archivo: TFRecord con cada registro como PredictionLog .
  • Número de registros de calentamiento <= 1000.
  • Los datos de preparación deben ser representativos de las solicitudes de inferencia utilizadas en el servicio.

Fragmento de código de ejemplo que produce datos de preparación:

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