Link to this sectionMLflow-Integration für Ultralytics YOLO#
Link to this sectionEinführung#
Das Protokollieren von Experimenten ist ein entscheidender Aspekt von Machine Learning-Workflows, das die Nachverfolgung verschiedener Metriken, Parameter und Artefakte ermöglicht. Es trägt dazu bei, die Reproduzierbarkeit von Modellen zu verbessern, Probleme zu beheben und die Modellleistung zu steigern. Ultralytics YOLO, bekannt für seine Echtzeit-Objekterkennungs-Fähigkeiten, bietet jetzt eine Integration mit MLflow an, einer Open-Source-Plattform für das vollständige Lifecycle-Management von Machine Learning.
Diese Dokumentationsseite ist ein umfassender Leitfaden zur Einrichtung und Nutzung der MLflow-Protokollierungsfunktionen für dein Ultralytics YOLO-Projekt.
Link to this sectionWas ist MLflow?#
MLflow ist eine von Databricks entwickelte Open-Source-Plattform zur Verwaltung des End-to-End-Lebenszyklus von Machine Learning. Sie umfasst Werkzeuge zum Nachverfolgen von Experimenten, zum Paketieren von Code in reproduzierbare Durchläufe sowie zum Teilen und Bereitstellen von Modellen. MLflow ist darauf ausgelegt, mit jeder Machine-Learning-Bibliothek und Programmiersprache zu funktionieren.
Link to this sectionFunktionen#
- 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.
Link to this sectionEinrichtung und Voraussetzungen#
Stelle sicher, dass MLflow installiert ist. Falls nicht, installiere es mit pip:
pip install mlflowStelle sicher, dass die MLflow-Protokollierung in den Ultralytics-Einstellungen aktiviert ist. Normalerweise wird dies über den mlflow-Schlüssel in den Einstellungen gesteuert. Siehe die Einstellungsseite 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()Link to this sectionVerwendung#
Link to this sectionBefehle#
-
Projektnamen festlegen: Du kannst den Projektnamen über eine Umgebungsvariable festlegen:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEOder verwende das
project=<project>-Argument 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
name=<name>-Argument 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/mlflowDies startet standardmäßig einen lokalen Server unter
http://127.0.0.1:5000und speichert alle MLflow-Protokolle 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-Run nach dem Training aktiv lassen: Standardmäßig beendet Ultralytics den MLflow-Run automatisch, wenn das Training abgeschlossen ist. Um den Run offen zu halten (zum Beispiel, 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) behält den Standard bei, den Run zu schließen. Denke daran, ihn danach 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
Link to this sectionProtokollierung#
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.
Link to this sectionBeispiele#
-
Benutzerdefinierte Metriken protokollieren: Du kannst benutzerdefinierte Metriken hinzufügen, die protokolliert werden sollen, indem du das
trainer.metrics-Dictionary ä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 und sieh dir die Run-Details an, einschließlich hochgeladener Artefakte und Modellgewichte.

Link to this sectionMLflow deaktivieren#
So schaltest du die MLflow-Protokollierung aus:
yolo settings mlflow=FalseLink to this sectionFazit#
Die MLflow-Protokollierungsintegration mit Ultralytics YOLO bietet eine effiziente Möglichkeit, deine Machine-Learning-Experimente nachzuverfolgen. Sie ermöglicht es dir, Leistungsmetriken zu überwachen und Artefakte effektiv zu verwalten, was die robuste Entwicklung und Bereitstellung von Modellen unterstützt. Weitere Einzelheiten findest du in der offiziellen Dokumentation von MLflow.
Link to this sectionFAQ#
Link to this sectionWie 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 schließlich einen lokalen MLflow-Server für das Tracking:
mlflow server --backend-store-uri runs/mlflowLink to this sectionWelche 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:
- Metriken-Protokollierung: Verfolgt Metriken am Ende jeder Epoche 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.
Für detailliertere Informationen besuche die Ultralytics YOLO Tracking-Dokumentation.
Link to this sectionKann 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=FalseFür weitere Anpassungen und zum Zurücksetzen der Einstellungen siehe den Einstellungsleitfaden.
Link to this sectionWie 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-Server-Instanzen 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 Befehle.
Link to this sectionWie 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, sodass Ultralytics mlflow.end_run() aufruft, sobald das Training abgeschlossen ist. Mit MLFLOW_KEEP_RUN_ACTIVE=True bleibt der Run offen, sodass du zusätzliche Metriken, Parameter oder Artefakte aus derselben Python-Sitzung protokollieren kannst – schließe ihn nach Abschluss selbst mit mlflow.end_run(). Der Wert wird unabhängig von Groß- und Kleinschreibung geparst; nur true aktiviert dieses Verhalten.
Link to this sectionWas 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.
Für einen detaillierten Einblick in die Einrichtung und Nutzung von MLflow mit Ultralytics YOLO, erkunde die Dokumentation MLflow-Integration für Ultralytics YOLO.