Udostępnij za pośrednictwem


Śledzenie eksperymentów uczenia maszynowego w usłudze Azure Synapse Analytics za pomocą platformy MLflow i usługi Azure Machine Learning

Z tego artykułu dowiesz się, jak włączyć rozwiązanie MLflow w celu nawiązania połączenia z usługą Azure Machine Learning podczas pracy w obszarze roboczym usługi Azure Synapse Analytics. Tę konfigurację można wykorzystać do śledzenia, zarządzania modelami i wdrażania modelu.

MLflow to biblioteka typu open source do zarządzania cyklem życia eksperymentów uczenia maszynowego. MlFlow Tracking to składnik biblioteki MLflow, który rejestruje i śledzi metryki przebiegu trenowania i artefakty modelu. Dowiedz się więcej o platformie MLflow.

Jeśli masz projekt MLflow do trenowania za pomocą usługi Azure Machine Learning, zobacz Szkolenie modeli uczenia maszynowego przy użyciu projektów MLflow i usługi Azure Machine Learning (wersja zapoznawcza).

Wymagania wstępne

Instalowanie bibliotek

Aby zainstalować biblioteki w dedykowanym klastrze w usłudze Azure Synapse Analytics:

  1. requirements.txt Utwórz plik z pakietami wymaganymi przez eksperymenty, ale upewnij się, że zawiera również następujące pakiety:

    requirements.txt

    mlflow
    azureml-mlflow
    azure-ai-ml
    
  2. Przejdź do portalu obszaru roboczego usługi Azure Analytics.

  3. Przejdź do karty Zarządzanie i wybierz pozycję Pule platformy Apache Spark.

  4. Kliknij trzy kropki obok nazwy klastra i wybierz pozycję Pakiety.

    instalowanie pakietów mlflow w usłudze Azure Synapse Analytics

  5. W sekcji Pliki wymagań kliknij pozycję Przekaż.

  6. Przekaż plik requirements.txt.

  7. Poczekaj na ponowne uruchomienie klastra.

Śledzenie eksperymentów za pomocą platformy MLflow

Usługę Azure Synapse Analytics można skonfigurować do śledzenia eksperymentów przy użyciu biblioteki MLflow do obszaru roboczego usługi Azure Machine Learning. Usługa Azure Machine Learning udostępnia scentralizowane repozytorium do zarządzania całym cyklem życia eksperymentów, modeli i wdrożeń. Zaletą jest również umożliwienie łatwiejszego wdrażania przy użyciu opcji wdrażania usługi Azure Machine Learning.

Konfigurowanie notesów do używania biblioteki MLflow połączonej z usługą Azure Machine Learning

Aby użyć usługi Azure Machine Learning jako scentralizowanego repozytorium dla eksperymentów, możesz skorzystać z biblioteki MLflow. W każdym notesie, nad którym pracujesz, musisz skonfigurować identyfikator URI śledzenia, aby wskazywał obszar roboczy, którego będziesz używać. W poniższym przykładzie pokazano, jak można to zrobić:

Konfigurowanie identyfikatora URI śledzenia

  1. Pobierz identyfikator URI śledzenia dla obszaru roboczego:

    DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)

    1. Zaloguj się i skonfiguruj obszar roboczy:

      az account set --subscription <subscription-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. Pobierz identyfikator URI śledzenia przy użyciu az ml workspace polecenia :

      az ml workspace show --query mlflow_tracking_uri
      
  2. Skonfiguruj identyfikator URI śledzenia:

    set_tracking_uri() Użyj metody , aby ustawić identyfikator URI śledzenia MLflow na identyfikator URI śledzenia obszaru roboczego.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Napiwek

    Niektóre scenariusze obejmują pracę w środowisku udostępnionym, na przykład w klastrze usługi Azure Databricks lub klastrze usługi Azure Synapse Analytics. W takich przypadkach warto ustawić zmienną MLFLOW_TRACKING_URI środowiskową na poziomie klastra, a nie dla każdej sesji. Ustawienie zmiennej na poziomie klastra automatycznie konfiguruje identyfikator URI śledzenia MLflow, aby wskazywał usługę Azure Machine Learning dla wszystkich sesji w klastrze.

Konfiguruj uwierzytelnianie

Po skonfigurowaniu śledzenia należy również skonfigurować sposób uwierzytelniania w skojarzonym obszarze roboczym. Domyślnie wtyczka usługi Azure Machine Learning dla platformy MLflow przeprowadzi uwierzytelnianie interakcyjne, otwierając domyślną przeglądarkę, aby wyświetlić monit o poświadczenia. Zobacz Konfigurowanie platformy MLflow dla usługi Azure Machine Learning: konfigurowanie uwierzytelniania na dodatkowe sposoby konfigurowania uwierzytelniania dla platformy MLflow w obszarach roboczych usługi Azure Machine Learning.

W przypadku zadań interaktywnych, w których istnieje użytkownik połączony z sesją, można polegać na uwierzytelnianiu interakcyjnym. Nie są wymagane żadne dalsze działania.

Ostrzeżenie

Uwierzytelnianie interakcyjne przeglądarki blokuje wykonywanie kodu po wyświetleniu monitu o podanie poświadczeń. Takie podejście nie jest odpowiednie do uwierzytelniania w środowiskach nienadzorowanych, takich jak zadania szkoleniowe. Zalecamy skonfigurowanie innego trybu uwierzytelniania w tych środowiskach.

W przypadku scenariuszy wymagających nienadzorowanego wykonania należy skonfigurować jednostkę usługi do komunikowania się z usługą Azure Machine Learning. Aby uzyskać informacje na temat tworzenia jednostki usługi, zobacz Konfigurowanie jednostki usługi.

Użyj identyfikatora dzierżawy, identyfikatora klienta i wpisu tajnego klienta jednostki usługi w następującym kodzie:

import os

os.environ["AZURE_TENANT_ID"] = "<Azure-tenant-ID>"
os.environ["AZURE_CLIENT_ID"] = "<Azure-client-ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<Azure-client-secret>"

Napiwek

Podczas pracy w środowiskach udostępnionych zalecamy skonfigurowanie tych zmiennych środowiskowych na poziomie obliczeniowym. Najlepszym rozwiązaniem jest zarządzanie nimi jako wpisami tajnymi w wystąpieniu usługi Azure Key Vault.

Na przykład w konfiguracji klastra usługi Azure Databricks można użyć wpisów tajnych w zmiennych środowiskowych w następujący sposób: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Aby uzyskać więcej informacji na temat implementowania tego podejścia w usłudze Azure Databricks, zobacz Odwołanie do wpisu tajnego w zmiennej środowiskowej lub zapoznaj się z dokumentacją platformy.

Nazwy eksperymentów w usłudze Azure Machine Learning

Domyślnie usługa Azure Machine Learning śledzi przebiegi w domyślnym eksperymencie o nazwie Default. Zazwyczaj dobrym pomysłem jest ustawienie eksperymentu, nad którym będziesz pracować. Użyj następującej składni, aby ustawić nazwę eksperymentu:

mlflow.set_experiment(experiment_name="experiment-name")

Śledzenie parametrów, metryk i artefaktów

Następnie możesz użyć biblioteki MLflow w usłudze Azure Synapse Analytics w taki sam sposób, jak wcześniej. Aby uzyskać szczegółowe informacje, zobacz Dzienniki i wyświetlanie metryk i plików dziennika.

Rejestrowanie modeli w rejestrze za pomocą biblioteki MLflow

Modele można zarejestrować w obszarze roboczym usługi Azure Machine Learning, który oferuje scentralizowane repozytorium do zarządzania ich cyklem życia. Poniższy przykład rejestruje model wytrenowany za pomocą biblioteki MLLib platformy Spark, a także rejestruje go w rejestrze.

mlflow.spark.log_model(model, 
                       artifact_path = "model", 
                       registered_model_name = "model_name")  
  • Jeśli zarejestrowany model o nazwie nie istnieje, metoda rejestruje nowy model, tworzy wersję 1 i zwraca obiekt MLflow ModelVersion.

  • Jeśli zarejestrowany model o nazwie już istnieje, metoda tworzy nową wersję modelu i zwraca obiekt wersji.

Modele zarejestrowane w usłudze Azure Machine Learning można zarządzać przy użyciu platformy MLflow. Aby uzyskać więcej informacji, zobacz Zarządzanie rejestrami modeli w usłudze Azure Machine Learning przy użyciu biblioteki MLflow .

Wdrażanie i korzystanie z modeli zarejestrowanych w usłudze Azure Machine Learning

Modele zarejestrowane w usłudze Azure Machine Learning Service przy użyciu platformy MLflow mogą być używane jako:

  • Punkt końcowy usługi Azure Machine Learning (w czasie rzeczywistym i partia): to wdrożenie umożliwia korzystanie z funkcji wdrażania usługi Azure Machine Learning zarówno w czasie rzeczywistym, jak i wnioskowania wsadowego w usłudze Azure Container Instances (ACI), Azure Kubernetes (AKS) lub zarządzanych punktów końcowych.

  • Obiekty modelu MLFlow lub funkcje zdefiniowane przez użytkownika biblioteki Pandas, które mogą być używane w notesach usługi Azure Synapse Analytics w potokach przesyłania strumieniowego lub wsadowego.

Wdrażanie modeli w punktach końcowych usługi Azure Machine Learning

Wtyczkę azureml-mlflow można wykorzystać do wdrożenia modelu w obszarze roboczym usługi Azure Machine Learning. Zobacz stronę Jak wdrożyć modele MLflow, aby uzyskać pełny opis sposobu wdrażania modeli w różnych miejscach docelowych.

Ważne

Aby je wdrożyć, należy zarejestrować modele w rejestrze usługi Azure Machine Learning. Wdrażanie niezarejestrowanych modeli nie jest obsługiwane w usłudze Azure Machine Learning.

Wdrażanie modeli na potrzeby oceniania wsadowego przy użyciu funkcji zdefiniowanych przez użytkownika

Możesz wybrać klastry usługi Azure Synapse Analytics na potrzeby oceniania wsadowego. Model MLFlow jest ładowany i używany jako funkcja UDF platformy Spark pandas do oceniania nowych danych.

from pyspark.sql.types import ArrayType, FloatType 

model_uri = "runs:/"+last_run_id+ {model_path} 

#Create a Spark UDF for the MLFlow model 
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri) 

#Load Scoring Data into Spark Dataframe 
scoreDf = spark.table({table_name}).where({required_conditions}) 

#Make Prediction 
preds = (scoreDf 
           .withColumn('target_column_name', pyfunc_udf('Input_column1', 'Input_column2', ' Input_column3', …)) 
        ) 

display(preds) 

Czyszczenie zasobów

Jeśli chcesz zachować obszar roboczy usługi Azure Synapse Analytics, ale nie potrzebujesz już obszaru roboczego usługi Azure Machine Learning, możesz usunąć obszar roboczy usługi Azure Machine Learning. Jeśli nie planujesz używania zarejestrowanych metryk i artefaktów w obszarze roboczym, możliwość ich usunięcia indywidualnie jest niedostępna w tej chwili. Zamiast tego usuń grupę zasobów zawierającą konto magazynu i obszar roboczy, aby nie ponosić żadnych opłat:

  1. W witrynie Azure Portal na końcu z lewej strony wybierz pozycję Grupy zasobów.

    Usuwanie w witrynie Azure Portal

  2. Wybierz utworzoną grupę zasobów z listy.

  3. Wybierz pozycję Usuń grupę zasobów.

  4. Wpisz nazwę grupy zasobów. Następnie wybierz Usuń.

Następne kroki