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 Learningazureml-mlflow
dla biblioteki MLflow. Aby zainstalować to oprogramowanie, możesz użyć następującego polecenia:pip install mlflow azureml-mlflow
Napiwek
mlflow
Zamiast , rozważ użycie poleceniamlflow-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://
.
Pobierz identyfikator URI śledzenia dla obszaru roboczego:
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure ml w wersji 2 (bieżąca)
Zaloguj się i skonfiguruj obszar roboczy:
az account set --subscription <subscription-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Pobierz identyfikator URI śledzenia przy użyciu
az ml workspace
polecenia :az ml workspace show --query mlflow_tracking_uri
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ę:
- Środowisko: informacje o koncie określone za pośrednictwem zmiennych środowiskowych są odczytywane i używane do uwierzytelniania.
- 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.
- Interfejs wiersza polecenia platformy Azure: jeśli do logowania używasz polecenia interfejsu wiersza polecenia
az login
platformy Azure, poświadczenia są używane do uwierzytelniania. - Azure PowerShell: jeśli do logowania używasz polecenia programu Azure PowerShell
Connect-AzAccount
, poświadczenia są używane do uwierzytelniania. - 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
.
Powiązana zawartość
Teraz, gdy środowisko jest połączone z obszarem roboczym w usłudze Azure Machine Learning, możesz rozpocząć pracę z nim.