MLflow-Integration für Ultralytics YOLO#
Einleitung#
Die Protokollierung von Experimenten ist ein entscheidender Bestandteil von Machine-Learning-Workflows. Sie ermöglicht die Nachverfolgung verschiedener Metriken, Parameter und Artefakte. Dadurch lassen sich die Reproduzierbarkeit von Modellen verbessern, Probleme beheben und die Modellleistung steigern. Ultralytics YOLO ist für seine Echtzeitfähigkeiten zur Objekterkennung bekannt und bietet jetzt eine Integration mit MLflow, einer Open-Source-Plattform für die umfassende Verwaltung des Machine-Learning-Lebenszyklus.
Diese Dokumentationsseite ist eine umfassende Anleitung zum Einrichten und Verwenden der MLflow-Logging-Funktionen für dein Ultralytics-YOLO-Projekt.
Was ist MLflow?#
MLflow ist eine von Databricks entwickelte Open-Source-Plattform zur Verwaltung des gesamten Machine-Learning-Lebenszyklus. Sie umfasst Werkzeuge zum Nachverfolgen von Experimenten, zum Verpacken von Code in reproduzierbare Ausführungen sowie zum Teilen und Bereitstellen von Modellen. MLflow ist für die Zusammenarbeit mit jeder Machine-Learning-Bibliothek und Programmiersprache ausgelegt.
Funktionen#
- Metrik-Logging: Protokolliert Metriken am Ende jeder Epoche und am Ende des Trainings.
- Parameter-Logging: Protokolliert alle beim Training verwendeten Parameter.
- Artefakt-Logging: Protokolliert Modellartefakte, einschließlich Gewichten und Konfigurationsdateien, am Ende des Trainings.
Einrichtung und Voraussetzungen#
Stelle sicher, dass MLflow installiert ist. Falls nicht, installiere es mit pip:
pip install mlflowStelle sicher, dass das MLflow-Logging in den Ultralytics-Einstellungen aktiviert ist. In der Regel wird dies über den Schlüssel mlflow gesteuert. Weitere Informationen findest du auf der Seite Einstellungen.
Rufe innerhalb der Python-Umgebung die Methode update für das Objekt settings auf, um deine Einstellungen zu ändern:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Verwendung#
Befehle#
-
Projektnamen festlegen: Du kannst den Projektnamen über eine Umgebungsvariable festlegen:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEAlternativ kannst du beim Training eines YOLO-Modells das Argument
project=<project>verwenden, zum Beispielyolo train project=my_project. -
Namen der Ausführung festlegen: Ähnlich wie beim Festlegen eines Projektnamens kannst du den Namen der Ausführung über eine Umgebungsvariable festlegen:
export MLFLOW_RUN=YOUR_RUN_NAMEAlternativ kannst du beim Training eines YOLO-Modells das Argument
name=<name>verwenden, zum Beispielyolo train project=my_project name=my_name. -
Lokalen MLflow-Server starten: Verwende zum Starten der Nachverfolgung:
mlflow server --backend-store-uri runs/mlflowDadurch wird standardmäßig ein lokaler Server unter
http://127.0.0.1:5000gestartet und alle MLflow-Protokolle werden im Verzeichnis 'runs/mlflow' gespeichert. Um deine Trainingsausführungen an einen anderen Nachverfolgungsserver zu richten, exportiere vor dem TrainingMLFLOW_TRACKING_URI:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
MLflow-Ausführung nach dem Training aktiv lassen: Standardmäßig beendet Ultralytics die MLflow-Ausführung automatisch, wenn das Training abgeschlossen ist. Um die Ausführung offen zu halten, beispielsweise um zusätzliche Metriken oder Artefakte aus demselben Notebook zu protokollieren, setze
MLFLOW_KEEP_RUN_ACTIVEvor dem Training aufTrue:export MLFLOW_KEEP_RUN_ACTIVE=TrueDie Werte
1,true,yes,on,yundtaktivieren dieses Verhalten (ohne Beachtung der Groß- und Kleinschreibung). Jeder andere Wert, einschließlich einer nicht gesetzten Variable, behält das Standardverhalten bei, die Ausführung zu schließen. Denke daran, sie anschließend manuell mitmlflow.end_run()zu schließen.
Protokollierung#
Die Protokollierung wird von den on_pretrain_routine_end-, on_fit_epoch_end- und on_train_end-Callback-Funktionen übernommen. Diese Funktionen werden während der jeweiligen Phasen des Trainingsprozesses automatisch aufgerufen und übernehmen die Protokollierung von Parametern, Metriken und Artefakten.
Beispiele#
-
Benutzerdefinierte Metriken protokollieren: Du kannst zu protokollierende benutzerdefinierte Metriken hinzufügen, indem du das Wörterbuch
trainer.metricsänderst, bevoron_fit_epoch_endaufgerufen wird. -
Experiment anzeigen: Um deine Protokolle anzuzeigen, rufe deinen MLflow-Server (normalerweise
http://127.0.0.1:5000) auf und wähle dein Experiment sowie deinen Lauf aus.
-
Lauf anzeigen: Läufe sind einzelne Modelle innerhalb eines Experiments. Klicke auf einen Lauf, um die Laufdetails einschließlich hochgeladener Artefakte und Modellgewichte anzuzeigen.

MLflow deaktivieren#
So deaktivierst du das MLflow-Logging:
yolo settings mlflow=FalseFazit#
Die MLflow-Logging-Integration mit Ultralytics YOLO bietet eine effiziente Möglichkeit, deine Machine-Learning-Experimente im Blick zu behalten. Du kannst damit Leistungsmetriken überwachen und Artefakte effektiv verwalten, was eine robuste Entwicklung und Bereitstellung von Modellen unterstützt. Weitere Informationen findest du in der offiziellen Dokumentation von MLflow.
FAQ#
Um das MLflow-Logging mit Ultralytics YOLO einzurichten, musst du zunächst sicherstellen, dass MLflow installiert ist. Du kannst es mit pip installieren:
pip install mlflowAktiviere als Nächstes das MLflow-Logging in den Ultralytics-Einstellungen. Dies wird über den Schlüssel
mlflowgesteuert. Weitere Informationen findest du in der Anleitung zu den Einstellungen.Ultralytics-MLflow-Einstellungen aktualisierenfrom ultralytics import settings # Update a setting settings.update({"mlflow": True}) # Reset settings to default values settings.reset()Starte abschließend einen lokalen MLflow-Server zur Nachverfolgung:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO unterstützt zusammen mit MLflow die Protokollierung verschiedener Metriken, Parameter und Artefakte während des gesamten Trainingsprozesses:
- Metrik-Logging: Verfolgt Metriken am Ende jeder Epoche und nach Abschluss des Trainings.
- Parameter-Logging: Protokolliert alle im Trainingsprozess verwendeten Parameter.
- Artefakt-Logging: Speichert Modellartefakte wie Gewichte und Konfigurationsdateien nach dem Training.
Ausführlichere Informationen findest du in der Dokumentation zur Nachverfolgung mit Ultralytics YOLO.
Ja, du kannst das MLflow-Logging für Ultralytics YOLO deaktivieren, indem du die Einstellungen aktualisierst. So geht es mit der CLI:
yolo settings mlflow=FalseWeitere Informationen zur Anpassung und zum Zurücksetzen der Einstellungen findest du in der Anleitung zu den Einstellungen.
Um einen MLflow-Server zur Nachverfolgung deiner Experimente mit Ultralytics YOLO zu starten, verwende den folgenden Befehl:
mlflow server --backend-store-uri runs/mlflowDieser Befehl startet standardmäßig einen lokalen Server unter
http://127.0.0.1:5000. Drücke in diesem TerminalCtrl+C, um ihn zu stoppen.Weitere Befehlsoptionen findest du im Abschnitt zu den Befehlen.
Setze die Umgebungsvariable
MLFLOW_KEEP_RUN_ACTIVEvor dem Training aufTrue:export MLFLOW_KEEP_RUN_ACTIVE=TrueStandardmäßig ist dies
False, daher ruft Ultralytics nach Abschluss des Trainingsmlflow.end_run()auf. MitMLFLOW_KEEP_RUN_ACTIVE=Truebleibt die Ausführung geöffnet, sodass du zusätzliche Metriken, Parameter oder Artefakte aus derselben Python-Sitzung protokollieren kannst – schließe sie anschließend mitmlflow.end_run(). Die Werte1,true,yes,on,yundtaktivieren dieses Verhalten (ohne Beachtung der Groß- und Kleinschreibung).Die Integration von MLflow mit Ultralytics YOLO bietet mehrere Vorteile bei der Verwaltung deiner Machine-Learning-Experimente:
- Verbesserte Nachverfolgung von Experimenten: Verfolge verschiedene Ausführungen und ihre Ergebnisse einfach nach und vergleiche sie.
- Verbesserte Reproduzierbarkeit von Modellen: Stelle durch die Protokollierung aller Parameter und Artefakte sicher, dass deine Experimente reproduzierbar sind.
- Überwachung der Leistung: Visualisiere Leistungsmetriken im Zeitverlauf, um datenbasierte Entscheidungen zur Verbesserung von Modellen zu treffen.
- Optimierter Workflow: Automatisiere den Protokollierungsprozess, damit du dich stärker auf die Modellentwicklung statt auf die manuelle Nachverfolgung konzentrieren kannst.
- Gemeinsame Entwicklung: Teile Experimentergebnisse mit Teammitgliedern, um die Zusammenarbeit und den Wissensaustausch zu verbessern.
Eine ausführliche Anleitung zum Einrichten und Nutzen von MLflow mit Ultralytics YOLO findest du in der Dokumentation MLflow-Integration für Ultralytics YOLO.