Konfigurieren von MLflow für Azure Machine Learning
In diesem Artikel erfahren Sie, wie Sie MLflow konfigurieren können, um für Nachverfolgung, Registrierungen und Bereitstellung eine Verbindung mit einem Azure Machine Learning-Arbeitsbereich herzustellen.
Azure Machine Learning-Arbeitsbereiche sind MLflow-kompatibel, was bedeutet, dass sie ohne zusätzliche Konfiguration als MLflow-Server fungieren können. Jeder Arbeitsbereich verfügt über einen MLflow-Nachverfolgungs-URI, mit dem MLflow eine Verbindung mit dem Arbeitsbereich herstellen kann. Azure Machine Learning-Arbeitsbereiche sind bereits für die Verwendung mit MLflow konfiguriert, sodass keine zusätzliche Konfiguration erforderlich ist.
Wenn Sie jedoch außerhalb von Azure Machine Learning arbeiten (z. B. auf Ihrem lokalen Computer, in Azure Synapse Analytics oder Azure Databricks), müssen Sie MLflow so konfigurieren, dass es auf den Arbeitsbereich verweist.
Wichtig
Bei der Ausführung in Azure Compute (Azure Machine Learning-Notebooks, auf Azure Machine Learning-Compute-Instanzen gehostete Jupyter Notebooks-Instanzen oder in Azure Machine Learning-Computeclustern ausgeführte Aufträge) müssen Sie keinen Nachverfolgungs-URI konfigurieren. Es ist automatisch für Sie konfiguriert.
Voraussetzungen
Für dieses Tutorial müssen folgende Voraussetzungen erfüllt sein:
Installieren Sie das MLflow-SDK-Paket
mlflow
und das Azure Machine Learning-Plug-Inazureml-mlflow
für MLflow wie folgt:pip install mlflow azureml-mlflow
Tipp
Sie können auch das Paket
mlflow-skinny
verwenden. Dabei handelt es sich um ein abgespecktes MLflow-Paket ohne SQL-Speicher, Server, Benutzeroberfläche oder Data Science-Abhängigkeiten. Dieses Paket wird für diejenigen empfohlen, die in erster Linie die Funktionen für Nachverfolgung und Protokollierung benötigen und nicht sämtliche Features von MLflow (einschließlich Bereitstellungen) importieren möchten.Erstellen Sie einen Azure Machine Learning-Arbeitsbereich. Informationen zum Erstellen eines Arbeitsbereichs finden Sie unter Erstellen von Ressourcen für die ersten Schritte. Überprüfen Sie, welche Zugriffsberechtigungen Sie benötigen, um Ihre MLflow-Vorgänge in Ihrem Arbeitsbereich auszuführen.
Wenn Sie eine Remotenachverfolgung durchführen, d. h. eine Nachverfolgung von Experimenten, die außerhalb von Azure Machine Learning ausgeführt werden, konfigurieren Sie MLflow so, dass auf den Nachverfolgungs-URI Ihres Azure Machine Learning-Arbeitsbereichs verwiesen wird. Weitere Informationen zum Herstellen einer Verbindung zwischen MLflow und dem Arbeitsbereich finden Sie unter Konfigurieren von MLflow für Azure Machine Learning.
Konfigurieren des MLflow-Nachverfolgungs-URI
Um MLflow mit einem Azure Machine Learning-Arbeitsbereich zu verbinden, benötigen Sie den Nachverfolgungs-URI für den Arbeitsbereich. Jeder Arbeitsbereich verfügt über einen eigenen Nachverfolgungs-URI und das Protokoll azureml://
.
Rufen Sie den Nachverfolgungs-URI für Ihren Arbeitsbereich ab:
GILT FÜR Azure CLI-ML-Erweiterung v2 (aktuell)
Anmelden und Konfigurieren des Arbeitsbereichs:
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Sie können den Nachverfolgungs-URI mithilfe des Befehls
az ml workspace
abrufen:az ml workspace show --query mlflow_tracking_uri
Konfigurieren des Nachverfolgungs-URI:
Anschließend verweist die Methode
set_tracking_uri()
den MLflow-Nachverfolgungs-URI auf diesen URI.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Tipp
Beim Arbeiten in gemeinsam genutzten Umgebungen, wie z. B. einem Azure Databricks-Cluster, Azure Synapse Analytics-Cluster o. ä., ist es sinnvoll, die Umgebungsvariable
MLFLOW_TRACKING_URI
auf Clusterebene so festzulegen, dass der Nachverfolgungs-URI von MLflow automatisch so konfiguriert wird, dass er für alle im Cluster ausgeführten Sitzungen auf Azure Machine Learning verweist, anstatt dies auf sitzungsbezogen zu tun.
Konfigurieren der Authentifizierung
Sobald die Nachverfolgung eingerichtet ist, müssen Sie auch die Authentifizierungsmethode für den zugeordneten Arbeitsbereich konfigurieren. Standardmäßig führt das Azure Machine Learning-Plug-In für MLflow eine interaktive Authentifizierung durch, indem es den Standardbrowser öffnet und Anmeldeinformationen anfordert.
Das Azure Machine Learning-Plug-In für MLflow unterstützt mehrere Authentifizierungsmechanismen über das Paket azure-identity
, das als Abhängigkeit für das Plug-In azureml-mlflow
installiert wird. Die folgenden Authentifizierungsmethoden werden nacheinander ausprobiert, bis eine von ihnen erfolgreich ist:
- Umgebung: Liest über Umgebungsvariablen angegebene Kontoinformationen und verwendet diese zur Authentifizierung.
- Verwaltete Identität: Wenn die Anwendung auf einem Azure-Host mit aktivierter verwalteter Identität bereitgestellt ist, erfolgt die Authentifizierung bei diesem.
- Azure CLI: Wenn sich Benutzer*innen über den Azure CLI-Befehl
az login
anmelden, erfolgt die Authentifizierung als diese Benutzer*innen. - Azure PowerShell: Wenn sich Benutzer*innen über den Azure PowerShell-Befehl
Connect-AzAccount
anmelden, erfolgt die Authentifizierung als diese Benutzer*innen. - Interaktiver Browser: Benutzer*innen werden interaktiv über den Standardbrowser authentifiziert.
Bei interaktiven Aufträgen, bei denen ein Benutzer mit der Sitzung verbunden ist, können Sie sich auf die interaktive Authentifizierung verlassen, sodass keine weiteren Maßnahmen erforderlich sind.
Warnung
Die interaktive Browserauthentifizierung blockiert die Codeausführung, wenn zur Eingabe von Anmeldeinformationen aufgefordert wird. Dieser Ansatz eignet sich nicht für die Authentifizierung in unbeaufsichtigten Umgebungen wie Trainingsaufträgen. Es wird empfohlen, einen anderen Authentifizierungsmodus zu konfigurieren.
In Szenarien, in denen eine unbeaufsichtigte Ausführung erforderlich ist, müssen Sie einen Dienstprinzipal für die Kommunikation mit Azure Machine Learning konfigurieren.
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>"
Tipp
Für die Arbeit in gemeinsam genutzten Umgebungen wird empfohlen, diese Umgebungsvariablen auf Computeebene zu konfigurieren. Als bewährte Methode empfiehlt es sich, diese als Geheimnisse in einer Azure Key Vault-Instanz zu verwalten.
In Azure Databricks können Sie beispielsweise Geheimnisse in Umgebungsvariablen wie folgt in der Clusterkonfiguration verwenden: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}
. Weitere Informationen zum Implementieren dieses Ansatzes in Azure Databricks finden Sie unter Verweisen auf ein Geheimnis in einer Umgebungsvariablen oder in der Dokumentation für Ihre Plattform.
Wenn Sie statt eines Geheimnisses ein Zertifikat bevorzugen, können Sie die Umgebungsvariablen von AZURE_CLIENT_CERTIFICATE_PATH
mit dem Pfad zu einer PEM
- oder PKCS12
-Zertifikatdatei (einschließlich privatem Schlüssel) und AZURE_CLIENT_CERTIFICATE_PASSWORD
mit dem Kennwort der Zertifikatdatei konfigurieren, falls vorhanden.
Konfigurieren von Autorisierungs- und Berechtigungsstufen
Einige Standardrollen wie AzureML – Wissenschaftliche Fachkraft für Daten oder Mitwirkender sind bereits für die Ausführung von MLflow-Vorgängen in einem Azure Machine Learning-Arbeitsbereich konfiguriert. Wenn Sie eine benutzerdefinierte Rolle verwenden, benötigen Sie die folgenden Berechtigungen:
So verwenden Sie die MLflow-Nachverfolgung:
Microsoft.MachineLearningServices/workspaces/experiments/*
Microsoft.MachineLearningServices/workspaces/jobs/*
MLflow-Modellregistrierung:
Microsoft.MachineLearningServices/workspaces/models/*/*
Wie Sie den Zugriff auf Ihren Arbeitsbereich für den von Ihnen erstellten Dienstprinzipal oder das Benutzerkonto gewähren, erfahren Sie unter Gewähren von Zugriff.
Problembehandlung bei der Authentifizierung
MLflow versucht, sich beim ersten Vorgang, der mit dem Dienst interagiert (z. B mlflow.set_experiment()
oder mlflow.start_run()
), bei Azure Machine Learning zu authentifizieren. Wenn Sie während des Prozesses Probleme oder unerwartete Authentifizierungsaufforderungen feststellen, können Sie den Protokollierungsgrad erhöhen, um weitere Details zum Fehler zu erhalten:
import logging
logging.getLogger("azure").setLevel(logging.DEBUG)
Festlegen des Experimentnamens (optional)
Alle MLflow-Ausführungen werden im aktiven Experiment protokolliert. Standardmäßig werden Ausführungen mit einem Experiment namens Default
protokolliert, das automatisch für Sie erstellt wird. Sie können das Experiment konfigurieren, in dem die Nachverfolgung stattfindet.
Tipp
Beim Senden von Aufträgen mit der Azure Machine Learning CLI v2 können Sie den Experimentnamen mithilfe der Eigenschaft experiment_name
in der YAML-Definition des Auftrags festlegen. Sie brauchen es in Ihrem Trainingsskript nicht zu konfigurieren. Weitere Informationen finden Sie unter YAML: Anzeigename, Experimentname, Beschreibung und Tags.
Konfigurieren Sie Ihr Experiment mithilfe des MLflow-Befehls mlflow.set_experiment()
.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Unterstützung für nicht öffentliche Azure-Clouds
Das Azure Machine Learning-Plug-In für MLflow ist standardmäßig für die Verwendung mit der globalen Azure-Cloud konfiguriert. Sie können jedoch die verwendete Azure-Cloud konfigurieren, indem Sie die Umgebungsvariable AZUREML_CURRENT_CLOUD
festlegen.
import os
os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"
Sie können die verwendete Cloud mit dem folgenden Azure CLI-Befehl identifizieren:
az cloud list
Für die aktuelle Cloud ist der Wert IsActive
auf True
festgelegt.
Nächste Schritte
Nachdem Ihre Umgebung nun mit Ihrem Arbeitsbereich in Azure Machine Learning verbunden ist, können Sie die Arbeit damit aufnehmen.