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=TrueDie Werte
1,true,yes,on,yundtaktivieren dieses Verhalten (ohne Berücksichtigung der Groß- und Kleinschreibung). Jeder andere Wert, einschließlich einer nicht gesetzten Variablen, behält den Standard bei, den Lauf zu schließen. Denk daran, ihn danach manuell mitmlflow.end_run()zu schließen.
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 Run aus.
-
Run anzeigen: Runs sind einzelne Modelle innerhalb eines Experiments. Klicke auf einen Run, um die Run-Details einschließlich hochgeladener Artefakte und Modellgewichte anzuzeigen.

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#
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
mlflowgesteuert werden. Weitere Informationen findest du im settings guide.Ultralytics MLflow-Einstellungen aktualisierenfrom 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/mlflowUltralytics 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.
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.
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. DrückeCtrl+Cin diesem Terminal, um ihn zu stoppen.Weitere Befehlsoptionen findest du im Abschnitt commands section.
Setze die Umgebungsvariable
MLFLOW_KEEP_RUN_ACTIVEvor dem Training aufTrue:export MLFLOW_KEEP_RUN_ACTIVE=TrueStandardmäßig ist dies
False, sodass Ultralyticsmlflow.end_run()aufruft, sobald das Training abgeschlossen ist. MitMLFLOW_KEEP_RUN_ACTIVE=Truebleibt der Run geöffnet, damit du zusätzliche Metriken, Parameter oder Artefakte aus derselben Python-Sitzung protokollieren kannst – schließe ihn nach Fertigstellung selbst mitmlflow.end_run(). Die Werte1,true,yes,on,yundtaktivieren dieses Verhalten (ohne Berücksichtigung der Groß- und Kleinschreibung).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.