Udostępnij za pośrednictwem


Konfigurowanie platformy MLflow dla usługi Azure Machine Learning

W tym artykule wyjaśniono, jak skonfigurować platformę MLflow w celu nawiązania połączenia z obszarem roboczym usługi Azure Machine Learning na potrzeby śledzenia, zarządzania rejestrem i wdrażania.

Obszary robocze usługi Azure Machine Learning są zgodne z platformą MLflow, co oznacza, że mogą działać jako serwery 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 Learning 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 Learning, musisz skonfigurować rozwiązanie MLflow tak, aby wskazywało obszar roboczy. Środowiska, których dotyczy problem, obejmują maszynę lokalną, usługę Azure Synapse Analytics i usługę Azure Databricks.

Ważne

W przypadku korzystania z infrastruktury obliczeniowej platformy Azure nie trzeba konfigurować identyfikatora URI śledzenia. Jest ona automatycznie konfigurowana. Środowiska z automatyczną konfiguracją obejmują notesy usługi Azure Machine Learning, notesy Jupyter hostowane w wystąpieniach obliczeniowych usługi Azure Machine Learning oraz zadania uruchamiane w klastrach obliczeniowych usługi Azure Machine Learning.

Wymagania wstępne

  • Pakiet zestawu MLflow SDK mlflow i wtyczka usługi Azure Machine Learning azureml-mlflow dla biblioteki MLflow. Aby zainstalować to oprogramowanie, możesz użyć następującego polecenia:

    pip install mlflow azureml-mlflow
    

    Napiwek

    mlflowZamiast , rozważ użycie polecenia mlflow-skinny. Ten pakiet jest lekkim pakietem MLflow bez zależności magazynu SQL, serwera, interfejsu użytkownika lub nauki o danych. Zalecane jest, aby użytkownicy, którzy przede wszystkim potrzebują funkcji śledzenia i rejestrowania MLflow, ale nie chcą importować pełnego zestawu funkcji, w tym wdrożeń.

  • Obszar roboczy usługi Azure Machine Learning. Aby utworzyć obszar roboczy, zobacz Tworzenie zasobów, które należy rozpocząć.

  • Uprawnienia dostępu do wykonywania operacji MLflow w obszarze roboczym. Aby uzyskać listę operacji i wymaganych uprawnień, zobacz Operacje platformy MLflow.

Konfigurowanie identyfikatora URI śledzenia MLflow

Aby przeprowadzić zdalne śledzenie lub śledzić eksperymenty uruchomione poza usługą Azure Machine Learning, skonfiguruj rozwiązanie MLflow, aby wskazywało identyfikator URI śledzenia obszaru roboczego usługi Azure Machine Learning.

Aby połączyć aplikację MLflow z obszarem roboczym usługi Azure Machine Learning, potrzebny jest identyfikator URI śledzenia obszaru roboczego. Każdy obszar roboczy ma własny identyfikator URI śledzenia, który rozpoczyna się od protokołu azureml://.

  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ć metodę uwierzytelniania dla skojarzonego obszaru roboczego.

Domyślnie wtyczka usługi Azure Machine Learning dla platformy MLflow wykonuje uwierzytelnianie interakcyjne, otwierając domyślną przeglądarkę, aby wyświetlić monit o poświadczenia. Jednak wtyczka obsługuje również kilka innych mechanizmów uwierzytelniania. Pakiet azure-identity zapewnia tę obsługę. Ten pakiet jest instalowany jako zależność azureml-mlflow wtyczki.

Proces uwierzytelniania próbuje jedną po drugim metodę, dopóki nie powiedzie się:

  1. Środowisko: informacje o koncie określone za pośrednictwem zmiennych środowiskowych są odczytywane i używane do uwierzytelniania.
  2. Tożsamość zarządzana: jeśli aplikacja jest wdrażana na hoście platformy Azure z włączoną tożsamością zarządzaną, tożsamość zarządzana jest używana do uwierzytelniania.
  3. Interfejs wiersza polecenia platformy Azure: jeśli do logowania używasz polecenia interfejsu wiersza poleceniaaz login platformy Azure, poświadczenia są używane do uwierzytelniania.
  4. Azure PowerShell: jeśli do logowania używasz polecenia programu Azure PowerShellConnect-AzAccount, poświadczenia są używane do uwierzytelniania.
  5. Przeglądarka interaktywna: użytkownik jest uwierzytelniany interaktywnie 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. 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.

Jeśli wolisz użyć certyfikatu niż wpisu tajnego, możesz skonfigurować następujące zmienne środowiskowe:

  • Ustaw AZURE_CLIENT_CERTIFICATE_PATH ścieżkę pliku zawierającego parę certyfikatów i kluczy prywatnych w formacie Privacy Enhanced Mail (PEM) lub Public-Key Cryptography Standards 12 (PKCS #12).
  • Ustaw AZURE_CLIENT_CERTIFICATE_PASSWORD hasło pliku certyfikatu, jeśli używa hasła.

Konfigurowanie poziomów autoryzacji i uprawnień

Niektóre role domyślne, takie jak AzureML badacze dancyh i Współautor, są już skonfigurowane do wykonywania operacji MLflow w obszarze roboczym usługi Azure Machine Learning. Jeśli używasz 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 do obszaru roboczego dla utworzonej jednostki usługi lub konta użytkownika, zobacz Udzielanie dostępu.

Rozwiązywanie problemów z uwierzytelnianiem

Narzędzie MLflow próbuje uwierzytelnić się w usłudze Azure Machine Learning podczas pierwszej operacji, która wchodzi w interakcję z usługą, na przykład mlflow.set_experiment() lub mlflow.start_run(). Jeśli podczas procesu wystąpią 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 utworzonej automatycznie. Możesz skonfigurować eksperyment używany do śledzenia.

Napiwek

Jeśli używasz interfejsu wiersza polecenia usługi Azure Machine Learning w wersji 2 do przesyłania zadań, możesz ustawić nazwę eksperymentu experiment_name przy użyciu właściwości w definicji YAML zadania. Nie musisz go konfigurować w skrygcie szkoleniowym. Aby uzyskać więcej informacji, zobacz YAML: nazwa wyświetlana, nazwa eksperymentu, opis i tagi.

Użyj polecenia MLflow mlflow.set_experiment() , aby skonfigurować eksperyment.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Konfigurowanie obsługi chmury platformy Azure spoza publikowania

Wtyczka usługi Azure Machine Learning dla platformy MLflow jest domyślnie skonfigurowana do pracy z globalną chmurą platformy Azure. Możesz 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.

Teraz, gdy środowisko jest połączone z obszarem roboczym w usłudze Azure Machine Learning, możesz rozpocząć pracę z nim.