Freigeben über


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-In azureml-mlflow für MLflow. Oder Sie können den folgenden Befehl zum Installieren dieser Software verwenden:

    pip install mlflow azureml-mlflow
    

    Tipp

    Ziehen Sie mlflowstattdessen die Verwendung von mlflow-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.

  1. Rufen Sie den Nachverfolgungs-URI für Ihren Arbeitsbereich ab:

    GILT FÜRAzure CLI-ML-Erweiterung v2 (aktuell)

    1. 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> 
      
    2. Rufen Sie den Nachverfolgungs-URI mithilfe des Befehls az ml workspace ab:

      az ml workspace show --query mlflow_tracking_uri
      
  2. 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:

  1. Umgebung: Kontoinformationen, die über Umgebungsvariablen angegeben werden, werden für die Authentifizierung gelesen und verwendet.
  2. 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.
  3. Azure CLI: Wenn Sie den Azure CLI-Befehl az login zum Anmelden verwenden, werden Ihre Anmeldeinformationen für die Authentifizierung verwendet.
  4. Azure PowerShell: Wenn Sie den Azure PowerShell-Befehl Connect-AzAccount zum Anmelden verwenden, werden Ihre Anmeldeinformationen für die Authentifizierung verwendet.
  5. 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.

Nachdem Ihre Umgebung nun mit Ihrem Arbeitsbereich in Azure Machine Learning verbunden ist, können Sie die Arbeit damit aufnehmen.