Verfolgen von Experimenten und Modellen mit MLflow

Nachverfolgung ist der Prozess des Speicherns relevanter Informationen über Experimente. In diesem Artikel erfahren Sie, wie Sie MLflow zum Nachverfolgen von Experimenten und Ausführungen in Azure Machine Learning-Arbeitsbereichen verwenden.

Einige Methoden, die in der MLflow-API verfügbar sind, sind bei einer Verbindung mit Azure Machine Learning möglicherweise nicht verfügbar. Details zu unterstützten und nicht unterstützten Vorgängen finden Sie unter Unterstützungsmatrix zum Abfragen von Ausführungen und Experimenten. Weitere Informationen zu den unterstützten MLflow-Funktionen in Azure Machine Learning finden Sie auch im Artikel MLflow und Azure Machine Learning.

Hinweis

Voraussetzungen

  • Installieren Sie das MLflow SDK-Paket mlflow und das Azure Machine Learning-Plug-In azureml-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, die Sie für die ersten Schritte benötigen. Ü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 Experiments

MLflow organisiert Informationen in Experimenten und Ausführungen. Ausführungen werden in Azure Machine Learning als Aufträge bezeichnet. Standardmäßig werden Ausführungen in einem automatisch erstellten Experiment mit dem Namen Default protokolliert, Sie können aber konfigurieren, welches Experiment nachverfolgt werden soll.

Verwenden Sie für interaktives Training, z. B. in einem Jupyter Notebook, den MLflow-Befehl mlflow.set_experiment(). Der folgende Codeschnipsel konfiguriert beispielsweise ein Experiment:

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Konfigurieren der Ausführung

Azure Machine Learning verfolgt jeden Trainingsauftrag in MLflow als sogenannte Ausführung nach. Verwenden Sie Ausführungen, um die gesamte Verarbeitung zu erfassen, die Ihr Auftrag ausführt.

Beim interaktiven Arbeiten beginnt MLflow mit der Nachverfolgung Ihrer Trainingsroutine, sobald Sie Informationen protokollieren, die eine aktive Ausführung erfordern. Wenn die automatische Protokollierung von MLflow aktiviert ist, beginnt beispielsweise die MLflow-Nachverfolgung, wenn Sie eine Metrik oder einen Parameter protokollieren oder einen Trainingszyklus starten.

In der Regel ist es jedoch hilfreich, die Ausführung explizit zu starten, insbesondere, wenn Sie die Gesamtzeit Ihres Experiments im Feld Dauer erfassen möchten. Um die Ausführung explizit zu starten, verwenden Sie mlflow.start_run().

Unabhängig davon, ob Sie die Ausführung manuell starten oder nicht, müssen Sie die Ausführung schließlich beenden, damit MLflow weiß, dass Ihre Experimentausführung abgeschlossen ist und den Status der Ausführung als Abgeschlossen markieren kann. Verwenden Sie mlflow.end_run(), um eine Ausführung zu beenden.

Der folgende Code startet eine Ausführung manuell und endet am Ende des Notebooks:

mlflow.start_run()

# Your code

mlflow.end_run()

Es ist am besten, Ausführungen manuell zu starten, damit Sie nicht vergessen, sie zu beenden. Normalerweise ist es hilfreich, das Paradigma des Kontextmanagers zu verwenden, um sich daran zu erinnern, die Ausführung zu beenden.

with mlflow.start_run() as run:
    # Your code

Wenn Sie eine neue Ausführung mit mlflow.start_run() starten, kann es hilfreich sein, den Parameter run_name anzugeben, der später in den Namen der Ausführung in der Azure Machine Learning-Benutzeroberfläche übersetzt wird. Dies hilft Ihnen, die Ausführung schneller zu identifizieren.

with mlflow.start_run(run_name="hello-world-example") as run:
    # Your code

Aktivieren Sie die automatische MLflow-Protokollierung

Sie können Metriken, Parameter und Dateien mit MLflow manuell protokollieren, und Sie können auch auf die automatische Protokollierungsfunktion von MLflow zurückgreifen. Jedes von MLflow unterstützte Machine Learning-Framework entscheidet automatisch, was für Sie nachverfolgt werden soll.

Um die automatische Protokollierung zu aktivieren, fügen Sie den folgenden Code vor Ihrem Trainingscode ein:

mlflow.autolog()

Anzeigen von Metriken und Artefakten in Ihrem Arbeitsbereich

Die Metriken und Artefakte aus dem MLflow-Protokoll werden in Ihrem Arbeitsbereich nachverfolgt. Sie können dies jederzeit in Azure Machine Learning Studio anzeigen und darauf zugreifen oder programmgesteuert über das MLflow-SDK darauf zugreifen.

So zeigen Sie Metriken und Artefakten im Studio an:

  1. Wählen Sie auf der Seite Aufträge in Ihrem Arbeitsbereich den Namen des Experiments aus.

  2. Wählen Sie auf der Detailseite des Experiments die Registerkarte Metriken aus.

  3. Wählen Sie die protokollierten Metriken aus, um Diagramme auf der rechten Seite zu rendern. Sie können Diagramme anpassen, indem Sie eine Glättung anwenden, die Farbe ändern oder mehrere Metriken in einem einzelnen Graphen zeichnen. Sie können auch die Größe und Anordnung des Layouts ändern.

  4. Nachdem Sie Ihre gewünschte Ansicht erstellt haben, können Sie diese für die zukünftige Verwendung speichern und über einen direkten Link mit Ihren Teamkollegen teilen.

    Screenshot der Metrikansicht, in der die Liste der Metriken und die aus den Metriken erstellten Diagramme angezeigt werden.

Um programmgesteuert über das MLflow-SDK auf Metriken, Parameter und Artefakte zuzugreifen oder diese abzufragen, verwenden Sie mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Tipp

Im vorherigen Beispiel wird nur der letzte Wert einer angegebenen Metrik zurückgegeben. Wenn Sie alle Werte einer bestimmten Metrik abrufen möchten, verwenden Sie die mlflow.get_metric_history-Methode. Weitere Informationen zum Abrufen von Werten einer Metrik finden Sie unter Abrufen von Parametern und Metriken aus einer Ausführung.

Um von Ihnen protokollierte Artefakte wie Dateien und Modelle herunterzuladen, verwenden Sie mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

Weitere Informationen zum Abrufen oder Vergleichen von Informationen aus Experimenten und Ausführungen in Azure Machine Learning mithilfe von MLflow finden Sie unter Abfragen und Vergleichen von Experimenten und Ausführungen mit MLflow.