Rejestrowanie i udostępnianie modeli za pomocą biblioteki MLflow
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: