Konfigurieren von MLflow für Azure Machine Learning
In diesem Artikel erfahren Sie, wie Sie MLflow konfigurieren können, um für Nachverfolgung, Registrierungsmanagement 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, müssen Sie MLflow so konfigurieren, dass er auf den Arbeitsbereich verweist. Betroffene Umgebungen umfassen Ihren lokalen Computer, Azure Synapse Analytics und Azure Databricks.
Wichtig
Wenn Sie Azure compute infrastructure verwenden, müssen Sie den Tracking-URI nicht konfigurieren. Es ist automatisch für Sie konfiguriert. Umgebungen mit automatischer Konfiguration umfassen Azure Machine Learning Notebooks, Jupyter Notebooks, die in Azure Machine Learning-Computeinstanzen gehostet werden, und Aufträge, die auf Azure Machine Learning-Computeclustern ausgeführt werden.
Voraussetzungen
Installieren Sie das MLflow SDK-Paket
mlflow
und das Azure Machine Learning-Plug-Inazureml-mlflow
für MLflow. Oder Sie können den folgenden Befehl zum Installieren dieser Software verwenden:pip install mlflow azureml-mlflow
Tipp
Ziehen Sie
mlflow
stattdessen die Verwendung vonmlflow-skinny
in Betracht. Dieses Paket ist ein leichtgewichtiges MLflow-Paket ohne SQL-Speicher, Server, Benutzeroberfläche oder Abhängigkeiten zu Data-Science-Bibliotheken. Es wird für Benutzer empfohlen, die hauptsächlich die MLflow-Nachverfolgungs- und Protokollierungsfunktionen benötigen, aber nicht die vollständige Funktionssuite, einschließlich Bereitstellungen, importieren möchten.Ein Azure Machine Learning-Arbeitsbereich. Informationen zum Erstellen eines Arbeitsbereichs finden Sie unter Erstellen von Ressourcen für die ersten Schritte.
Zugriffsberechtigungen zum Ausführen von MLflow-Vorgängen in Ihrem Arbeitsbereich. Eine Liste der Vorgänge und erforderlichen Berechtigungen finden Sie unter MLflow-Vorgänge.
Konfigurieren des MLflow-Nachverfolgungs-URI
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.
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 Tracking-URI, der mit dem Protokoll azureml://
beginnt.
Rufen Sie den Nachverfolgungs-URI für Ihren Arbeitsbereich ab:
GILT FÜR
Azure CLI-ML-Erweiterung v2 (aktuell)
Melden Sie sich an, und konfigurieren Sie Ihren Arbeitsbereich:
az account set --subscription <subscription-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Rufen Sie den Nachverfolgungs-URI mithilfe des Befehls
az ml workspace
ab:az ml workspace show --query mlflow_tracking_uri
Konfigurieren Sie den Nachverfolgungs-URI:
Verwenden Sie die
set_tracking_uri()
-Methode, um den MLflow-Tracking-URI auf den Nachverfolgungs-URI Ihres Arbeitsbereichs festzulegen.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Tipp
Einige Szenarien umfassen das Arbeiten in einer freigegebenen Umgebung wie einem Azure Databricks-Cluster oder einem Azure Synapse Analytics-Cluster. In diesen Fällen ist es hilfreich, die Umgebungsvariable
MLFLOW_TRACKING_URI
auf Clusterebene und nicht für jede Sitzung einzeln festzulegen. Wenn Sie die Variable auf Clusterebene festlegen, wird der MLflow-Tracking-URI automatisch so konfiguriert, dass er bei allen Sitzungen im Cluster auf Azure Machine Learning verweist.
Authentifizierung konfigurieren
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 Plug-In unterstützt aber auch mehrere andere Authentifizierungsmechanismen. Das azure-identity
Paket bietet diese Unterstützung. Dieses Paket wird als Abhängigkeit des azureml-mlflow
Plug-Ins installiert.
Der Authentifizierungsprozess versucht nacheinander die folgenden Methoden, bis eine erfolgreich ist:
- Umgebung: Kontoinformationen, die über Umgebungsvariablen angegeben werden, werden für die Authentifizierung gelesen und verwendet.
- Verwaltete Identität: Wenn die Anwendung auf einem Azure-Host mit aktivierter verwalteter Identität bereitgestellt wird, wird die verwaltete Identität für die Authentifizierung verwendet.
-
Azure CLI: Wenn Sie den Azure CLI-Befehl
az login
zum Anmelden verwenden, werden Ihre Anmeldeinformationen für die Authentifizierung verwendet. -
Azure PowerShell: Wenn Sie den Azure PowerShell-Befehl
Connect-AzAccount
zum Anmelden verwenden, werden Ihre Anmeldeinformationen für die Authentifizierung verwendet. - Interaktiver Browser: Der Benutzer wird interaktiv über den Standardbrowser authentifiziert.
Bei interaktiven Aufträgen, bei denen Benutzende mit der Sitzung verbunden sind, können Sie die interaktive Authentifizierung nutzen. Es ist keine weitere Aktion erforderlich.
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 in diesen Umgebungen 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. Informationen zum Erstellen eines Dienstprinzipals finden Sie unter Konfigurieren eines Dienstprinzipals.
Verwenden Sie die Mandanten-ID, die Client-ID und den geheimen Clientschlüssel Ihres Dienstprinzipals im folgenden Code:
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 lieber ein Zertifikat als einen geheimen Schlüssel verwenden möchten, können Sie die folgenden Umgebungsvariablen konfigurieren:
- Legen Sie
AZURE_CLIENT_CERTIFICATE_PATH
den Pfad einer Datei fest, die das Zertifikat- und private Schlüsselpaar im Format Privacy Enhanced Mail (PEM) oder Public-Key Cryptography Standards 12 (PKCS #12) enthält. - Legen Sie
AZURE_CLIENT_CERTIFICATE_PASSWORD
das Kennwort der Zertifikatdatei fest, wenn sie ein Kennwort verwendet.
Konfigurieren von Autorisierungs- und Berechtigungsstufen
Einige Standardrollen wie AzureML – Wissenschaftliche Fachkraft für Daten und 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/*
Zur Verwendung der MLflow-Modellregistrierung:
Microsoft.MachineLearningServices/workspaces/models/*/*
Informationen zum Gewähren des Zugriffs auf Ihren Arbeitsbereich zu einem Dienstprinzipal, den Sie erstellen oder auf Ihr Benutzerkonto anwenden, finden Sie unter Gewähren des Zugriffs.
Behandeln von Authentifizierungsproblemen
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, das für die Nachverfolgung verwendet wird.
Tipp
Wenn Sie die Azure Machine Learning CLI v2 zum Übermitteln von Aufträgen verwenden, können Sie den Experimentnamen mithilfe der experiment_name
Eigenschaft in der YAML-Definition des Auftrags festlegen. Sie müssen ihn nicht in Ihrem Trainingsskript konfigurieren. Weitere Informationen finden Sie unter YAML: Anzeigename, Experimentname, Beschreibung und Tags.
Verwenden Sie den MLflow-Befehl mlflow.set_experiment()
, um Ihr Experiment zu konfigurieren.
experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)
Konfigurieren der Unterstützung für eine nicht öffentliche Azure-Cloud
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.
Zugehöriger Inhalt
Nachdem Ihre Umgebung nun mit Ihrem Arbeitsbereich in Azure Machine Learning verbunden ist, können Sie die Arbeit damit aufnehmen.