MLflow-Integration für Ultralytics YOLO#
Einführung#
Das Experiment-Logging ist ein entscheidender Aspekt von machine learning-Workflows, der die Nachverfolgung verschiedener Metriken, Parameter und Artefakte ermöglicht. Es trägt dazu bei, die Reproduzierbarkeit von Modellen zu verbessern, Fehler zu beheben und die Modellleistung zu steigern. Ultralytics YOLO, das für seine Echtzeit-object detection-Fähigkeiten bekannt ist, bietet jetzt eine Integration mit MLflow, einer Open-Source-Plattform für die vollständige Verwaltung des Machine-Learning-Lebenszyklus.
Diese Dokumentationsseite ist ein umfassender Leitfaden zur Einrichtung und Nutzung der MLflow-Protokollierungsfunktionen 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 Tools zum Verfolgen von Experimenten, zum Verpacken von Code in reproduzierbare Durchläufe sowie zum Teilen und Bereitstellen von Modellen. MLflow ist so konzipiert, dass es mit jeder Machine-Learning-Bibliothek und Programmiersprache funktioniert.
Funktionen#
- Metriken-Protokollierung: Protokolliert Metriken am Ende jeder Epoche und am Ende des Trainings.
- Parameter-Protokollierung: Protokolliert alle während des Trainings verwendeten Parameter.
- Artefakte-Protokollierung: 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. Normalerweise wird dies über den Schlüssel mlflow in den Einstellungen gesteuert. Weitere Informationen findest du auf der Seite settings.
Rufe in der Python-Umgebung die Methode update auf dem 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_NAMEOder verwende das Argument
project=<project>beim Trainieren eines YOLO-Modells, d. h.yolo train project=my_project. -
Run-Namen festlegen: Ähnlich wie beim Festlegen eines Projektnamens kannst du den Run-Namen über eine Umgebungsvariable festlegen:
export MLFLOW_RUN=YOUR_RUN_NAMEOder verwende das Argument
name=<name>beim Trainieren eines YOLO-Modells, d. h.yolo train project=my_project name=my_name. -
Lokalen MLflow-Server starten: Um mit dem Tracking zu beginnen, verwende:
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 Trainingsläufe auf einen anderen Tracking-Server zu verweisen, exportiere vor dem TrainingMLFLOW_TRACKING_URI:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Den MLflow-Lauf nach dem Training aktiv lassen: Standardmäßig beendet Ultralytics den MLflow-Lauf automatisch, wenn das Training abgeschlossen ist. Um den Lauf geöffnet zu lassen (z. B. um zusätzliche Metriken oder Artefakte aus demselben Notebook zu protokollieren), setze
MLFLOW_KEEP_RUN_ACTIVEvor dem Training aufTrue:export MLFLOW_KEEP_RUN_ACTIVE=TrueDer Wert wird unabhängig von Groß- und Kleinschreibung geparst; nur die Zeichenfolge
trueaktiviert dieses Verhalten, und jeder andere Wert (einschließlich nicht gesetzt) beibehält das Standardverhalten des Schließens des Laufs. Denke daran, ihn anschließend manuell mitmlflow.end_run()zu schließen. -
MLflow-Server-Instanzen beenden: Um alle laufenden MLflow-Instanzen zu stoppen, führe aus:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
Protokollierung#
Das Logging wird von den on_pretrain_routine_end, on_fit_epoch_end und on_train_end callback functions übernommen. Diese Funktionen werden während der jeweiligen Phasen des Trainingsprozesses automatisch aufgerufen und übernehmen das Protokollieren von Parametern, Metriken und Artefakten.
Beispiele#
-
Protokollierung benutzerdefinierter Metriken: Du kannst benutzerdefinierte Metriken zum Protokollieren hinzufügen, indem du das Wörterbuch
trainer.metricsänderst, bevoron_fit_epoch_endaufgerufen wird. -
Experiment anzeigen: Um deine Protokolle anzuzeigen, navigiere zu deinem MLflow-Server (normalerweise
http://127.0.0.1:5000) und wähle dein Experiment und deinen Lauf aus.
-
Run anzeigen: Runs sind einzelne Modelle innerhalb eines Experiments. Klicke auf einen Run und sieh dir die Run-Details an, einschließlich hochgeladener Artefakte und Modellgewichte.

MLflow deaktivieren#
So schaltest du die MLflow-Protokollierung aus:
yolo settings mlflow=FalseFazit#
Die MLflow-Logging-Integration mit Ultralytics YOLO bietet eine optimierte Möglichkeit, den Überblick über deine machine learning experiments zu behalten. Sie versetzt dich in die Lage, Leistungsmetriken zu überwachen und Artefakte effektiv zu verwalten, was eine robuste Modellentwicklung und -bereitstellung unterstützt. Weitere Details findest du in der official documentation von MLflow.
FAQ#
Wie richte ich die MLflow-Protokollierung mit Ultralytics YOLO ein?#
Um die MLflow-Protokollierung 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 kann über den Schlüssel mlflow gesteuert werden. Weitere Informationen findest du im settings guide.
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Starte schließlich einen lokalen MLflow-Server für das Tracking:
mlflow server --backend-store-uri runs/mlflowWelche Metriken und Parameter kann ich mit MLflow und Ultralytics YOLO protokollieren?#
Ultralytics YOLO mit MLflow unterstützt die Protokollierung verschiedener Metriken, Parameter und Artefakte während des Trainingsprozesses:
- Metrik-Logging: Verfolgt Metriken am Ende jeder epoch und nach Abschluss des Trainings.
- Parameter-Protokollierung: Protokolliert alle während des Trainingsprozesses verwendeten Parameter.
- Artefakte-Protokollierung: Speichert Modellartefakte wie Gewichte und Konfigurationsdateien nach dem Training.
Ausführlichere Informationen findest du in der Ultralytics YOLO tracking documentation.
Kann ich die MLflow-Protokollierung deaktivieren, sobald sie aktiviert ist?#
Ja, du kannst die MLflow-Protokollierung für Ultralytics YOLO deaktivieren, indem du die Einstellungen aktualisierst. Hier ist, wie du dies über die CLI tun kannst:
yolo settings mlflow=FalseWeitere Informationen zur Anpassung und zum Zurücksetzen von Einstellungen findest du im settings guide.
Wie kann ich einen MLflow-Server für das Ultralytics YOLO-Tracking starten und stoppen?#
Um einen MLflow-Server für die Nachverfolgung deiner Experimente in 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. Wenn du laufende MLflow-Serverinstanzen stoppen musst, verwende den folgenden Bash-Befehl:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9Weitere Befehlsoptionen findest du im Abschnitt commands section.
Wie halte ich den MLflow-Run nach Abschluss des Trainings aktiv?#
Setze die Umgebungsvariable MLFLOW_KEEP_RUN_ACTIVE vor dem Training auf True:
export MLFLOW_KEEP_RUN_ACTIVE=TrueStandardmäßig ist dies False, weshalb Ultralytics mlflow.end_run() aufruft, sobald das Training abgeschlossen ist. Mit MLFLOW_KEEP_RUN_ACTIVE=True bleibt der Lauf geöffnet, sodass du zusätzliche Metriken, Parameter oder Artefakte aus derselben Python-Sitzung protokollieren kannst – schließe ihn am Ende einfach selbst mit mlflow.end_run(). Der Wert wird unabhängig von Groß- und Kleinschreibung geparst; nur true aktiviert dieses Verhalten.
Was sind die Vorteile der Integration von MLflow mit Ultralytics YOLO für das Experiment-Tracking?#
Die Integration von MLflow mit Ultralytics YOLO bietet mehrere Vorteile für die Verwaltung deiner Machine-Learning-Experimente:
- Verbesserte Nachverfolgung von Experimenten: Verfolge und vergleiche ganz einfach verschiedene Durchläufe und deren Ergebnisse.
- Verbesserte Modell-Reproduzierbarkeit: Stelle sicher, dass deine Experimente reproduzierbar sind, indem du alle Parameter und Artefakte protokollierst.
- Leistungsüberwachung: Visualisiere Leistungsmetriken über die Zeit, um datenbasierte Entscheidungen für Modellverbesserungen zu treffen.
- Optimierter Workflow: Automatisiere den Protokollierungsprozess, um dich mehr auf die Modellentwicklung als auf manuelle Nachverfolgung zu konzentrieren.
- Kollaborative Entwicklung: Teile Experimentergebnisse mit Teammitgliedern für eine bessere Zusammenarbeit und Wissensweitergabe.
Einen tiefgehenden Einblick in die Einrichtung und Nutzung von MLflow mit Ultralytics YOLO bietet die Dokumentation MLflow Integration for Ultralytics YOLO.