MLflow-Integration für Ultralytics YOLO
Einführung
Die Protokollierung von Experimenten ist ein entscheidender Aspekt von Machine Learning-Workflows, der die Nachverfolgung verschiedener Metriken, Parameter und Artefakte ermöglicht. Sie trägt dazu bei, die Reproduzierbarkeit von Modellen zu verbessern, Probleme zu debuggen und die Modellleistung zu steigern. Ultralytics YOLO, bekannt für seine Funktionen zur Objekterkennung in Echtzeit, bietet jetzt eine Integration mit MLflow, einer Open-Source-Plattform für das vollständige Lifecycle-Management im Bereich Machine Learning.
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 für die Verwaltung des gesamten Machine-Learning-Lebenszyklus. Sie enthält Tools zur Nachverfolgung von Experimenten, zum Verpacken von Code in reproduzierbare Abläufe sowie zum Teilen und Bereitstellen von Modellen. MLflow ist so konzipiert, dass es mit jeder Machine-Learning-Bibliothek und Programmiersprache funktioniert.
Funktionen
- Metrik-Protokollierung: Protokolliert Metriken am Ende jeder Epoche und nach Abschluss des Trainings.
- Parameter-Protokollierung: Protokolliert alle während des Trainings verwendeten Parameter.
- Artefakt-Protokollierung: Protokolliert Modellartefakte, einschließlich Gewichte und Konfigurationsdateien, am Ende des Trainings.
Einrichtung und Voraussetzungen
Stelle sicher, dass MLflow installiert ist. Falls nicht, installiere es mit pip:
pip install mlflowVergewissere dich, dass die MLflow-Protokollierung in den Ultralytics-Einstellungen aktiviert ist. Normalerweise wird dies über den mlflow-Schlüssel in den Einstellungen gesteuert. Siehe die Seite Einstellungen für weitere Informationen.
Rufe innerhalb der Python-Umgebung die update-Methode auf dem settings-Objekt auf, um deine Einstellungen zu ändern:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Anwendung
Befehle
-
Ein Projektname festlegen: Du kannst den Projektnamen über eine Umgebungsvariable festlegen:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEOder verwende das Argument
project=<project>beim Training eines YOLO-Modells, z. B.yolo train project=my_project. -
Einen Run-Namen festlegen: Ähnlich wie beim Festlegen eines Projektnamens kannst du den Run-Namen über eine Umgebungsvariable definieren:
export MLFLOW_RUN=YOUR_RUN_NAMEOder verwende das Argument
name=<name>beim Training eines YOLO-Modells, z. B.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/mlflowDies startet standardmäßig einen lokalen Server unter
http://127.0.0.1:5000und speichert alle MLflow-Logs im Verzeichnis 'runs/mlflow'. Um deine Trainingsläufe auf einen anderen Tracking-Server zu verweisen, exportiereMLFLOW_TRACKING_URIvor dem Training:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
MLflow-Serverinstanzen 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
The logging is taken care of by the on_pretrain_routine_end, on_fit_epoch_end, and on_train_end callback functions. These functions are automatically called during the respective stages of the training process, and they handle the logging of parameters, metrics, and artifacts.
Beispiele
-
Benutzerdefinierte Metriken protokollieren: Du kannst benutzerdefinierte Metriken zur Protokollierung hinzufügen, indem du das
trainer.metrics-Wörterbuch änderst, bevoron_fit_epoch_endaufgerufen wird. -
Experiment anzeigen: Um deine Logs einzusehen, navigiere zu deinem MLflow-Server (normalerweise
http://127.0.0.1:5000) und wähle dein Experiment sowie den Run aus.
-
Run anzeigen: Runs sind einzelne Modelle innerhalb eines Experiments. Klicke auf einen Run, um die Details zu sehen, einschließlich hochgeladener Artefakte und Modellgewichte.

MLflow deaktivieren
Um die MLflow-Protokollierung auszuschalten:
yolo settings mlflow=FalseFazit
Die MLflow-Protokollierungsintegration mit Ultralytics YOLO bietet eine optimierte Methode, um den Überblick über deine Machine-Learning-Experimente zu behalten. Sie ermöglicht es dir, Leistungsmetriken zu überwachen und Artefakte effektiv zu verwalten, was die robuste Modellentwicklung und -bereitstellung unterstützt. Weitere Details findest du in der offiziellen MLflow-Dokumentation.
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 die MLflow-Protokollierung in den Ultralytics-Einstellungen. Dies kann über den mlflow-Schlüssel gesteuert werden. Weitere Informationen findest du im Einstellungsleitfaden.
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()Starte abschließend 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 gesamten Trainingsprozesses:
- Metrik-Protokollierung: Verfolgt Metriken am Ende jeder Epoche und nach Abschluss des Trainings.
- Parameter-Protokollierung: Protokolliert alle im Trainingsprozess verwendeten Parameter.
- Artefakt-Protokollierung: Speichert Modellartefakte wie Gewichte und Konfigurationsdateien nach dem Training.
Weitere detaillierte Informationen findest du in der Ultralytics YOLO Tracking-Dokumentation.
Kann ich die MLflow-Protokollierung deaktivieren, sobald sie aktiviert ist?
Ja, du kannst die MLflow-Protokollierung für Ultralytics YOLO durch Aktualisieren der Einstellungen deaktivieren. Hier erfährst du, wie das über die CLI geht:
yolo settings mlflow=FalseWeitere Anpassungsmöglichkeiten und Informationen zum Zurücksetzen der Einstellungen findest du im Einstellungsleitfaden.
Wie kann ich einen MLflow-Server für das Tracking von Ultralytics YOLO starten und stoppen?
Um einen MLflow-Server für das Tracking 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 Befehlsabschnitt.
Welche Vorteile bietet die 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:
- Verbessertes Experiment-Tracking: 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 im Zeitverlauf, um datengestützte Entscheidungen zur Modellverbesserung zu treffen.
- Optimierter Workflow: Automatisiere den Protokollierungsprozess, um dich mehr auf die Modellentwicklung als auf die manuelle Nachverfolgung zu konzentrieren.
- Kollaborative Entwicklung: Teile Experimentergebnisse mit Teammitgliedern für eine bessere Zusammenarbeit und den Wissensaustausch.
Für einen detaillierten Einblick in die Einrichtung und Nutzung von MLflow mit Ultralytics YOLO lies die Dokumentation MLflow-Integration für Ultralytics YOLO.