Nachverfolgen von Metriken mit MLflow

Abgeschlossen

Wenn Sie ein Modell mit einem Skript trainieren, können Sie MLflow in die Skripts einschließen, um parameter, Metriken und Artefakte nachzuverfolgen. Wenn Sie das Skript als Auftrag in Azure Machine Learning ausführen, können Sie alle Eingabeparameter und Ausgaben für jede Ausführung überprüfen.

Grundlegendes zu MLflow

MLflow ist eine Open-Source-Plattform, die entwickelt wurde, um den vollständigen Machine Learning-Lebenszyklus zu verwalten. Da es Open Source ist, kann es verwendet werden, um Modelle auf verschiedenen Plattformen zu trainieren. Hier erfahren Sie, wie wir MLflow in Azure Machine Learning-Aufträge integrieren können.

Es gibt zwei Optionen zum Nachverfolgen von Machine Learning-Aufträgen mit MLflow:

  • Aktivieren der automatischen Protokollierung mithilfe von mlflow.autolog()
  • Verwenden von Protokollierungsfunktionen zum Nachverfolgen benutzerdefinierter Metriken mithilfe von mlflow.log_*

Bevor Sie eine dieser Optionen verwenden können, müssen Sie die Umgebung für die Verwendung von MLflow einrichten.

MLflow in die Umgebung einschließen

Um MLflow während des Schulungsauftrags zu verwenden, müssen die mlflow und azureml-mlflow Pip-Pakete auf dem Rechner installiert werden, der das Skript ausführt. Daher müssen Sie diese beiden Pakete in die Umgebung einschließen. Sie können eine Umgebung erstellen, indem Sie auf eine YAML-Datei verweisen, die die Conda-Umgebung beschreibt. Im Rahmen der Conda-Umgebung können Sie diese beiden Pakete einschließen.

Beispiel: In dieser benutzerdefinierten Umgebung mlflow und azureml-mlflow werden mithilfe von Pip installiert:

name: mlflow-env
channels:
  - conda-forge
dependencies:
  - python=3.10
  - pip
  - pip:
    - numpy
    - pandas
    - scikit-learn
    - matplotlib
    - mlflow
    - azureml-mlflow

Nachdem die Umgebung definiert und registriert wurde, stellen Sie sicher, dass Sie beim Übermitteln eines Auftrags darauf verweisen.

Automatisches Logging aktivieren

Wenn Sie mit einer der gängigen Bibliotheken für maschinelles Lernen arbeiten, können Sie die automatische Protokollierung in MLflow aktivieren. Das automatische Protokollieren protokolliert Parameter, Metriken und Modellartefakte, ohne dass jeder angeben muss, was protokolliert werden muss.

Die automatische Protokollierung wird für die folgenden Bibliotheken unterstützt:

  • Scikit-learn
  • TensorFlow und Keras
  • XGBoost
  • LightGBM
  • Spark
  • Fastai
  • Pytorch

Um die automatische Protokollierung zu aktivieren, fügen Sie Ihrem Schulungsskript den folgenden Code hinzu:

import mlflow

mlflow.autolog()

Protokollmetriken mit MLflow

In Ihrem Schulungsskript können Sie entscheiden, welche benutzerdefinierte Metrik Sie mit MLflow protokollieren möchten.

Verwenden Sie abhängig vom Typ des zu protokollierenden Werts den MLflow-Befehl, um die Metrik mit der Experimentausführung zu speichern:

  • mlflow.log_param(): Einzelnen Schlüssel-Wert-Parameter protokollieren. Verwenden Sie diese Funktion für einen Eingabeparameter, den Sie protokollieren möchten.
  • mlflow.log_metric(): Protokolliere einzelne Schlüssel-Wert-Metrik. Der Wert muss eine Zahl sein. Verwenden Sie diese Funktion für alle Ausgaben, die Sie mit der Ausführung speichern möchten.
  • mlflow.log_figure(): Protokollieren Sie ein Matplotlib-Diagramm direkt als Artefakt. Verwenden Sie diese Funktion, um Plots zu protokollieren, ohne sie zuerst auf dem Datenträger zu speichern.
  • mlflow.log_image(): Protokollieren Sie ein numpy- oder PIL-Bildobjekt als Artefakt. Verwenden Sie diese Funktion, um Bilder direkt zu protokollieren, ohne sie zuerst auf dem Datenträger zu speichern.

Um einem vorhandenen Schulungsskript MLflow hinzuzufügen, können Sie den folgenden Code hinzufügen:

import mlflow

reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)

Tipp

Eine vollständige Übersicht über die Verwendung der MLflow-Nachverfolgung finden Sie in der MLflow-Dokumentation.

Auftrag übermitteln

Schließlich müssen Sie das Schulungsskript als Job in Azure Machine Learning übermitteln. Wenn Sie MLflow in einem Schulungsskript verwenden, werden alle nachverfolgten Parameter, Metriken und Artefakte mit der Auftragsausführung gespeichert. Sie können sie für jede Ausführung überprüfen, nachdem Sie den Auftrag übermittelt haben.

Sie konfigurieren den Job wie gewohnt. Sie müssen nur sicherstellen, dass die Umgebung, auf die Sie im Auftrag verweisen, die erforderlichen Pakete enthält, und das Skript beschreibt, welche Metriken Sie protokollieren möchten.