Rejestrowanie i udostępnianie modeli za pomocą biblioteki MLflow

Ukończone

Rejestracja modelu umożliwia usługom MLflow i Azure Databricks śledzenie modeli; co jest ważne z dwóch powodów:

  • Zarejestrowanie modelu umożliwia obsługę modelu na potrzeby wnioskowania w czasie rzeczywistym, przesyłania strumieniowego lub wnioskowania wsadowego. Rejestracja sprawia, że proces korzystania z wytrenowanego modelu jest łatwy, ponieważ teraz analitycy danych nie muszą opracowywać kodu aplikacji; proces obsługujący tworzy tę otokę i uwidacznia interfejs API REST lub metodę automatycznego oceniania wsadowego.
  • Zarejestrowanie modelu umożliwia tworzenie nowych wersji tego modelu w czasie; możliwość śledzenia zmian modelu, a nawet przeprowadzania porównań między różnymi wersjami historycznymi modeli.

Rejestrowanie modelu

Po uruchomieniu eksperymentu w celu wytrenowania modelu możesz zarejestrować sam model w ramach przebiegu eksperymentu, jak pokazano poniżej:

with mlflow.start_run():
    # code to train model goes here

    # log the model itself (and the environment it needs to be used)
    unique_model_name = "my_model-" + str(time.time())
    mlflow.spark.log_model(spark_model = model,
                           artifact_path=unique_model_name,
                           conda_env=mlflow.spark.get_default_conda_env())

Podczas przeglądania przebiegu eksperymentu, w tym zarejestrowanych metryk, które wskazują, jak dobrze przewiduje model, model jest uwzględniony w artefaktach przebiegu. Następnie możesz wybrać opcję zarejestrowania modelu przy użyciu interfejsu użytkownika w przeglądarce eksperymentów.

Alternatywnie, jeśli chcesz zarejestrować model bez przeglądania metryk w przebiegu, możesz uwzględnić parametr registered_model_name w metodzie log_model . W tym przypadku model jest automatycznie rejestrowany podczas przebiegu eksperymentu.

with mlflow.start_run():
    # code to train model goes here

    # log the model itself (and the environment it needs to be used)
    unique_model_name = "my_model-" + str(time.time())
    mlflow.spark.log_model(spark_model=model,
                           artifact_path=unique_model_name
                           conda_env=mlflow.spark.get_default_conda_env(),
                           registered_model_name="my_model")

Można zarejestrować wiele wersji modelu, umożliwiając porównywanie wydajności wersji modelu w danym okresie przed przeniesieniem wszystkich aplikacji klienckich do najlepszej wersji.

Używanie modelu do wnioskowania

Proces używania modelu do przewidywania etykiet z nowych danych funkcji jest znany jako wnioskowanie. Za pomocą platformy MLflow w usłudze Azure Databricks można udostępnić modele do wnioskowania w następujący sposób:

  • Hostowanie modelu jako usługi w czasie rzeczywistym z punktem końcowym HTTP, do którego aplikacje klienckie mogą wysyłać żądania REST.
  • Użyj modelu, aby wykonywać bezterminowe wnioskowanie przesyłania strumieniowego etykiet na podstawie tabeli różnicowej funkcji, zapisując wyniki w tabeli wyjściowej.
  • Użyj modelu do wnioskowania wsadowego na podstawie tabeli różnicowej, zapisując wyniki każdej operacji wsadowej do określonego folderu.

Model wnioskowania można wdrożyć na swojej stronie w sekcji Modele portalu usługi Azure Databricks, jak pokazano poniżej:

Screenshot of the Set up model inference dialog box in the Azure Databricks portal.