Nachverfolgen von Machine Learning- und Deep Learning-Trainingsausführungen
Mit der MLflow-Nachverfolgungskomponente können Sie Quelleneigenschaften, Parameter, Metriken, Tags und Artefakte in Zusammenhang mit dem Trainieren eines Machine Learning- oder Deep Learning-Modells protokollieren. Probieren Sie eines der MLflow-Schnellstarttutorials aus, um mit MLflow zu beginnen.
MLflow-Nachverfolgung mit Experimenten und Ausführungen
Die MLflow-Nachverfolgung basiert auf zwei Konzepten: Experimente und Ausführungen:
Hinweis
Ab dem 27. März 2024 legt MLflow eine Kontingentgrenze für die Anzahl der Gesamtparameter, Tags und Metrikschritte für alle vorhandenen und neuen Durchläufe sowie die Anzahl der Gesamtdurchläufe für alle vorhandenen und neuen Experimente fest. Weitere Informationen finden Sie unter Ressourcengrenzwerte. Wenn Sie das Kontingent für die Ausführung pro Experiment erreicht haben, empfiehlt Databricks, Ihre Ausführungen zu löschen, die Sie nicht mehr benötigen. Verwenden Sie dazu die API zum Löschen von Ausführungen in Python. Wenn Sie andere Kontingentgrenzwerte erreichen, empfiehlt Databricks, Ihre Protokollierungsstrategie so anzupassen, dass sie unter dem Grenzwert bleibt. Wenn Sie eine Erhöhung dieses Grenzwerts benötigen, wenden Sie sich mit einer kurzen Erläuterung Ihres Anwendungsfalls an Ihr Databricks-Kontoteam. Erklären Sie, warum die vorgeschlagenen Gegenmaßnahmen nicht funktionieren, und den neuen Grenzwert, den Sie anfordern.
Ein MLflow-Experiment ist die primäre Einheit für die Organisation und Zugriffssteuerung von MLflow-Trainingsausführungen für Machine Learning-Modelle. Alle MLflow-Ausführungen gehören zu einem Experiment. Mit Experimenten können Sie Ausführungen visualisieren, nach Ausführungen suchen und sie vergleichen sowie Ausführungsartefakte und Metadaten für die Analyse in anderen Tools herunterladen.
Eine MLflow-Ausführung entspricht einer einzelnen Ausführung des Modellcodes.
Organisieren von Trainingsausführungen mit MLflow-Experimenten
Die MLflow-Nachverfolgungs-API protokolliert Parameter, Metriken, Tags und Artefakte aus einer Modellausführung. Die Nachverfolgungs-API kommuniziert mit einem MLflow-Nachverfolgungsserver. Wenn Sie Databricks verwenden, protokolliert ein in Databricks gehosteter Nachverfolgungsserver die Daten. Der gehostete MLflow-Nachverfolgungsserver verfügt über Python-, Java- und R-APIs.
Hinweis
MLflow wird in Databricks Runtime ML-Clustern installiert. Um MLflow in einem Databricks Runtime-Cluster verwenden zu können, müssen Sie die mlflow
-Bibliothek installieren. Anweisungen zum Installieren einer Bibliothek in einem Cluster finden Sie unter Installieren einer Bibliothek in einem Cluster. Folgende spezielle Pakete müssen für MLflow installiert werden:
- Wählen Sie für Python die Bibliotheksquelle PyPI aus, und geben Sie
mlflow
in das Feld Paket ein. - Wählen Sie für R die Bibliotheksquelle CRAN aus, und geben Sie
mlflow
in das Feld Paket ein. - Installieren Sie für Scala diese beiden Pakete:
- Wählen die Bibliotheksquelle Maven aus, und geben Sie
org.mlflow:mlflow-client:1.11.0
in das Feld Koordinaten ein. - Wählen Sie die Bibliotheksquelle PyPI aus, und geben Sie
mlflow
in das Feld Paket ein.
- Wählen die Bibliotheksquelle Maven aus, und geben Sie
Wo werden MLflow-Ausführungen protokolliert?
Alle MLflow-Ausführungen werden im aktiven Experiment protokolliert, das auf eine der folgenden Arten festgelegt werden kann:
- Verwenden Sie den Befehl mlflow.set_experiment().
- Verwenden Sie den
experiment_id
-Parameter im Befehl mlflow.start_run(). - Legen Sie eine der MLflow-Umgebungsvariablen – MLFLOW_EXPERIMENT_NAME oder MLFLOW_EXPERIMENT_ID – fest.
Wenn kein aktives Experiment festgelegt ist, werden die Ausführungen im Notebookexperiment protokolliert.
Um Ihre Experimentergebnisse auf einem remote gehosteten MLflow-Tracking-Server in einem anderen Arbeitsbereich als dem, in dem Sie Ihr Experiment ausführen, zu protokollieren, legen Sie den Tracking-URI so fest, dass er mit mlflow.set_tracking_uri()
auf den Remote-Arbeitsbereich verweist, und legen Sie den Pfad zu Ihrem Experiment im Remote-Arbeitsbereich mit mlflow.set_experiment()
fest.
mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")
Wenn Sie Experimente lokal ausführen und Experimentergebnisse auf dem Databricks MLflow-Nachverfolgungsserver protokollieren möchten, geben Sie Ihre Databricks-Arbeitsbereichsinstanz (DATABRICKS_HOST
) und das persönliche Databricks-Zugriffstoken (DATABRICKS_TOKEN
) an. Als Nächstes können Sie den Nachverfolgungs-URI so festlegen, dass er mit mlflow.set_tracking_uri()
auf den Arbeitsbereich verweist, und den Pfad zu Ihrem Experiment mithilfe von mlflow.set_experiment()
festlegen. Ausführliche Informationen zum Ermitteln der Werte für die Umgebungsvariablen DATABRICKS_HOST
und DATABRICKS_TOKEN
finden Sie unter Authentifizieren mit persönlichen Azure Databricks-Zugriffstoken.
Das folgende Codebeispiel zeigt, wie Sie diese Werte festlegen:
os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")
Beispielnotebook zur Protokollierung
Dieses Notebook zeigt, wie Sie Ausführungen in einem Notebookexperiment und in einem Arbeitsbereichsexperiment protokollieren. Nur in einem Notebook initiierte MLflow-Ausführungen können im Notebookexperiment protokolliert werden. MLflow-Ausführungen, die über ein beliebiges Notebook oder über die APIs gestartet werden, können in einem Arbeitsbereichsexperiment protokolliert werden. Informationen zum Anzeigen protokollierter Ausführungen finden Sie unter Anzeigen von Notebookexperimenten und Anzeigen von Arbeitsbereichsexperimenten.
Notebook zum Protokollieren von MLflow-Ausführungen
Sie können MLflow Python-, Java- oder Scala- und R-APIs verwenden, um Ausführungen zu starten und Ausführungsdaten aufzeichnen. Ausführliche Informationen finden Sie in den MLflow-Beispielnotebooks.
Zugreifen auf den MLflow-Nachverfolgungsserver von außerhalb von Azure Databricks
Sie können auch von außerhalb von Azure Databricks in den Nachverfolgungsserver schreiben und von diesem lesen, z. B. mithilfe der MLflow-CLI. Siehe Zugreifen auf den MLflow-Nachverfolgungsserver von außerhalb von Azure Databricks.
Programmgesteuertes Analysieren von MLflow-Ausführungen
Sie können programmgesteuert auf MLflow-Ausführungsdaten zugreifen, indem Sie die folgenden beiden Datenrahmen-APIs verwenden:
- Die search_runs-API des MLflow-Python-Clients gibt einen Pandas-Datenrahmen zurück.
- Die MLflow-Experimentdatenquelle gibt einen Apache Spark-Datenrahmen zurück.
In diesem Beispiel wird veranschaulicht, wie der MLflow-Python-Client verwendet wird, um ein Dashboard zu erstellen, das Änderungen an Auswertungsmetriken im Laufe der Zeit visualisiert, die Anzahl der von einem bestimmten Benutzer gestarteten Ausführungen nachverfolgt und die Gesamtzahl der Ausführungen für alle Benutzer misst:
Darum können Modelltrainingsmetriken und -ausgaben variieren
Viele der in ML verwendeten Algorithmen weisen ein zufälliges Element auf, z. B. Stichprobe oder zufällige Anfangsbedingungen innerhalb des Algorithmus selbst. Wenn Sie ein Modell mit einem dieser Algorithmen trainieren, sind die Ergebnisse jeder Ausführung möglicherweise nicht identisch, auch wenn Sie die Ausführung mit den gleichen Bedingungen starten. Viele Bibliotheken bieten einen Seedingmechanismus, um die Anfangsbedingungen für diese stochastischen Elemente zu beheben. Es kann jedoch andere Ursachen für Variationen geben, die nicht durch Seeds gesteuert werden. Einige Algorithmen reagieren empfindlich auf die Reihenfolge der Daten, und verteilte ML-Algorithmen können auch davon beeinflusst werden, wie die Daten partitioniert sind. Im Allgemeinen ist diese Variation nicht gravierend und im Modellentwicklungsprozess nicht wichtig.
Verwenden Sie die PySpark-Funktionen repartition und sortWithinPartitions, um Variationen zu steuern, die durch Unterschiede bei der Reihenfolge und Partitionierung verursacht werden.
Beispiele für die MLflow-Nachverfolgung
Die folgenden Notebooks veranschaulichen, wie Sie verschiedene Modelltypen trainieren, die Trainingsdaten in MLflow nachverfolgen und Nachverfolgungsdaten in Delta Lake speichern.