Konfigurowanie platformy MLflow dla usługi Azure Machine Learning

W tym artykule wyjaśniono, jak skonfigurować rozwiązanie MLflow w celu nawiązania połączenia z obszarem roboczym usługi Azure Machine Edukacja na potrzeby śledzenia, rejestrów i wdrażania.

Obszary robocze usługi Azure Machine Edukacja są zgodne z platformą MLflow, co oznacza, że mogą działać jako serwer MLflow bez dodatkowej konfiguracji. Każdy obszar roboczy ma identyfikator URI śledzenia MLflow, którego można użyć do nawiązania połączenia z obszarem roboczym. Obszary robocze usługi Azure Machine Edukacja są już skonfigurowane do pracy z rozwiązaniem MLflow, więc nie jest wymagana żadna dodatkowa konfiguracja.

Jeśli jednak pracujesz poza usługą Azure Machine Edukacja (na przykład maszyną lokalną, usługą Azure Synapse Analytics lub usługą Azure Databricks), musisz skonfigurować rozwiązanie MLflow, aby wskazywało obszar roboczy.

Ważne

W przypadku uruchamiania w usłudze Azure Compute (notesy usługi Azure Machine Edukacja Notebooks, notesy Jupyter hostowane w usłudze Azure Machine Edukacja wystąpieniach obliczeniowych lub zadaniach uruchomionych w klastrach obliczeniowych usługi Azure Machine Edukacja) nie trzeba konfigurować identyfikatora URI śledzenia. Jest ona automatycznie konfigurowana.

Wymagania wstępne

Do wykonania tego samouczka potrzebne są następujące wymagania wstępne:

  • Zainstaluj pakiet mlflow zestawu MLflow SDK i wtyczkę usługi Azure Machine Edukacja dla platformy MLflowazureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Napiwek

    Możesz użyć mlflow-skinny pakietu, który jest lekkim pakietem MLflow bez magazynu SQL, serwera, interfejsu użytkownika lub zależności nauki o danych. mlflow-skinny jest zalecany dla użytkowników, którzy potrzebują głównie możliwości śledzenia i rejestrowania MLflow bez importowania pełnego zestawu funkcji, w tym wdrożeń.

  • Obszar roboczy usługi Azure Machine Learning. Możesz go utworzyć, wykonując czynności opisane w samouczku Tworzenie zasobów uczenia maszynowego.

  • Jeśli wykonujesz zdalne śledzenie (czyli śledzenie eksperymentów uruchomionych poza usługą Azure Machine Edukacja), skonfiguruj rozwiązanie MLflow, aby wskazywało identyfikator URI śledzenia obszaru roboczego usługi Azure Machine Edukacja. Aby uzyskać więcej informacji na temat łączenia platformy MLflow z obszarem roboczym, zobacz Configure MLflow for Azure Machine Edukacja (Konfigurowanie platformy MLflow dla usługi Azure Machine Edukacja).

Konfigurowanie identyfikatora URI śledzenia MLflow

Aby połączyć rozwiązanie MLflow z obszarem roboczym usługi Azure Machine Edukacja, potrzebujesz identyfikatora URI śledzenia dla obszaru roboczego. Każdy obszar roboczy ma własny identyfikator URI śledzenia i ma protokół azureml://.

  1. Pobierz identyfikator URI śledzenia dla obszaru roboczego:

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

    1. Zaloguj się i skonfiguruj obszar roboczy:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. Identyfikator URI śledzenia można uzyskać za pomocą az ml workspace polecenia :

      az ml workspace show --query mlflow_tracking_uri
      
  2. Konfigurowanie identyfikatora URI śledzenia:

    Następnie metoda set_tracking_uri() wskazuje identyfikator URI śledzenia MLflow na ten identyfikator URI.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Napiwek

    Podczas pracy w środowiskach udostępnionych, takich jak klaster usługi Azure Databricks, klaster usługi Azure Synapse Analytics lub podobny, warto ustawić zmienną środowiskową MLFLOW_TRACKING_URI na poziomie klastra, aby automatycznie skonfigurować identyfikator URI śledzenia MLflow w taki sposób, aby wskazywał usługę Azure Machine Edukacja dla wszystkich sesji uruchomionych w klastrze, a nie na potrzeby poszczególnych sesji.

Konfiguruj uwierzytelnianie

Po ustawieniu śledzenia należy również skonfigurować metodę uwierzytelniania dla skojarzonego obszaru roboczego. Domyślnie wtyczka azure Machine Edukacja dla platformy MLflow wykonuje uwierzytelnianie interakcyjne, otwierając domyślną przeglądarkę w celu wyświetlenia monitu o poświadczenia.

Wtyczka azure Machine Edukacja dla platformy MLflow obsługuje kilka mechanizmów uwierzytelniania za pośrednictwem pakietu azure-identity, który jest instalowany jako zależność dla wtyczki azureml-mlflow. Następujące metody uwierzytelniania są wypróbowane pojedynczo, dopóki jeden z nich nie powiedzie się:

  1. Środowisko: odczytuje informacje o koncie określone za pośrednictwem zmiennych środowiskowych i używa ich do uwierzytelniania.
  2. Tożsamość zarządzana: jeśli aplikacja jest wdrożona na hoście platformy Azure z włączoną tożsamością zarządzaną, uwierzytelnia się przy użyciu niej.
  3. Interfejs wiersza polecenia platformy Azure: jeśli użytkownik loguje się za pośrednictwem polecenia interfejsu wiersza polecenia az login platformy Azure, uwierzytelnia się jako ten użytkownik.
  4. Azure PowerShell: jeśli użytkownik loguje się za pomocą polecenia programu Azure PowerShell Connect-AzAccount , uwierzytelnia się jako ten użytkownik.
  5. Przeglądarka interaktywna: interakcyjnie uwierzytelnia użytkownika za pośrednictwem domyślnej przeglądarki.

W przypadku zadań interaktywnych, w których istnieje użytkownik połączony z sesją, można polegać na uwierzytelnianiu interakcyjnym i dlatego nie jest wymagana żadna dalsza akcja.

Ostrzeżenie

Uwierzytelnianie interakcyjne przeglądarki zablokuje wykonywanie kodu podczas monitowania o poświadczenia. Nie jest to odpowiednia opcja uwierzytelniania w środowiskach nienadzorowanych, takich jak zadania szkoleniowe. Zalecamy skonfigurowanie innego trybu uwierzytelniania.

W przypadku tych scenariuszy, w których wymagane jest nienadzorowane wykonanie, należy skonfigurować jednostkę usługi do komunikowania się z usługą Azure Machine Edukacja.

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 zaleca się skonfigurowanie tych zmiennych środowiskowych w środowisku obliczeniowym. Najlepszym rozwiązaniem jest zarządzanie nimi jako wpisami tajnymi w wystąpieniu usługi Azure Key Vault zawsze, gdy jest to możliwe. Na przykład w usłudze Azure Databricks można używać wpisów tajnych w zmiennych środowiskowych w następujący sposób w konfiguracji klastra: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Zobacz Odwołanie do wpisu tajnego w zmiennej środowiskowej , aby dowiedzieć się, jak to zrobić w usłudze Azure Databricks lub zapoznaj się z podobną dokumentacją na platformie.

Jeśli wolisz użyć certyfikatu zamiast wpisu tajnego, możesz skonfigurować zmienne AZURE_CLIENT_CERTIFICATE_PATH środowiskowe do ścieżki do PEM pliku certyfikatu lub PKCS12 (w tym klucza prywatnego) i AZURE_CLIENT_CERTIFICATE_PASSWORD przy użyciu hasła pliku certyfikatu, jeśli istnieje.

Konfigurowanie poziomów autoryzacji i uprawnień

Niektóre role domyślne, takie jak AzureML badacze dancyh lub Współautor, są już skonfigurowane do wykonywania operacji MLflow w obszarze roboczym usługi Azure Machine Edukacja. W przypadku korzystania z roli niestandardowej potrzebne są następujące uprawnienia:

  • Aby użyć śledzenia MLflow:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Aby użyć rejestru modeli MLflow:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Aby dowiedzieć się, jak udzielić dostępu dla utworzonej jednostki usługi lub konta użytkownika w obszarze roboczym, zobacz Udzielanie dostępu.

Rozwiązywanie problemów z uwierzytelnianiem

Narzędzie MLflow próbuje uwierzytelnić się w usłudze Azure Machine Edukacja przy pierwszej operacji, która wchodzi w interakcję z usługą, na przykład mlflow.set_experiment() lub mlflow.start_run(). Jeśli podczas procesu znajdziesz problemy lub nieoczekiwane monity dotyczące uwierzytelniania, możesz zwiększyć poziom rejestrowania, aby uzyskać więcej szczegółów na temat błędu:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Ustawianie nazwy eksperymentu (opcjonalnie)

Wszystkie przebiegi platformy MLflow są rejestrowane w aktywnym eksperymencie. Domyślnie przebiegi są rejestrowane w eksperymencie o nazwie Default , który jest automatycznie tworzony. Możesz skonfigurować eksperyment, w którym odbywa się śledzenie.

Napiwek

Podczas przesyłania zadań przy użyciu interfejsu wiersza polecenia usługi Azure Machine Edukacja w wersji 2 można ustawić nazwę eksperymentu przy użyciu właściwości experiment_name w definicji YAML zadania. Nie trzeba go konfigurować na skry skrycie szkoleniowym. Aby uzyskać szczegółowe informacje, zobacz YAML: nazwa wyświetlana, nazwa eksperymentu, opis i tagi .

Skonfiguruj eksperyment przy użyciu polecenia mlflow.set_experiment()MLflow .

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

Obsługa chmur platformy Azure spoza publikowania

Wtyczka azure Machine Edukacja dla platformy MLflow jest domyślnie skonfigurowana do pracy z globalną chmurą platformy Azure. Można jednak skonfigurować chmurę platformy Azure, której używasz, ustawiając zmienną środowiskową AZUREML_CURRENT_CLOUD.

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

Możesz zidentyfikować chmurę, której używasz, za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure:

az cloud list

Bieżąca chmura ma wartość IsActive ustawioną na True.

Następne kroki

Teraz, gdy środowisko jest połączone z obszarem roboczym w usłudze Azure Machine Edukacja, możesz zacząć z nim pracować.