Rozgrzewka zapisanego modelu

Wstęp

Środowisko wykonawcze TensorFlow zawiera komponenty, które są inicjowane z opóźnieniem, co może powodować duże opóźnienia dla pierwszych żądań wysyłanych do modelu po jego załadowaniu. To opóźnienie może być o kilka rzędów wielkości większe niż w przypadku pojedynczego żądania wnioskowania.

Aby zmniejszyć wpływ leniwej inicjalizacji na opóźnienie żądania, można wyzwolić inicjalizację podsystemów i składników w czasie ładowania modelu, dostarczając przykładowy zestaw żądań wnioskowania wraz z SavedModel. Ten proces jest znany jako „rozgrzewanie” modelu.

Stosowanie

Rozgrzewka SavedModel jest obsługiwana dla Regress, Classify, MultiInference i Predict. Aby uruchomić rozgrzewanie modelu w czasie ładowania, dołącz plik danych rozgrzewania w podfolderze asset.extra katalogu SavedModel.

Wymagania, aby rozgrzewka modelu działała poprawnie:

  • Nazwa pliku rozgrzewki: „tf_serving_warmup_requests”
  • Lokalizacja pliku: asset.extra/
  • Format pliku: TFRecord z każdym rekordem jako PredictionLog .
  • Liczba rekordów rozgrzewki <= 1000.
  • Dane rozgrzewkowe muszą być reprezentatywne dla żądań wnioskowania używanych podczas udostępniania.

Przykładowy fragment kodu generujący dane rozgrzewające:

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