MLflow-Integration für Ultralytics YOLO#
Einführung#
Die Protokollierung von Experimenten ist ein entscheidender Aspekt von Arbeitsabläufen im Bereich des maschinellen Lernens und ermöglicht es, verschiedene Metriken, Parameter und Artefakte nachzuverfolgen. Sie hilft dabei, die Reproduzierbarkeit von Modellen zu verbessern, Probleme zu beheben und die Modellleistung zu steigern. Ultralytics YOLO, bekannt für seine Fähigkeit zur Objekterkennung in Echtzeit, bietet nun eine Integration mit MLflow, einer Open-Source-Plattform zur umfassenden Verwaltung des gesamten Lebenszyklus des maschinellen Lernens.
Diese Dokumentationsseite bietet eine umfassende Anleitung zur Einrichtung und Nutzung der MLflow-Protokollierung für dein Ultralytics-YOLO-Projekt.
Was ist MLflow?#
MLflow ist eine Open-Source-Plattform von Databricks zur Verwaltung des gesamten Lebenszyklus maschinellen Lernens. Sie umfasst Werkzeuge zur Nachverfolgung von Experimenten, zum Verpacken von Code in reproduzierbare Abläufe sowie zum Teilen und Bereitstellen von Modellen. MLflow ist für die Verwendung mit jeder Bibliothek für maschinelles Lernen und jeder Programmiersprache ausgelegt.
Funktionen#
- Metrikprotokollierung: Protokolliert Lernraten, Trainingsverluste und Validierungsmetriken am Ende jeder Epoche.
- Parameterprotokollierung: Protokolliert alle beim Training verwendeten Parameter.
- Artefaktprotokollierung: Protokolliert am Ende des Trainings Modellartefakte, einschließlich Gewichten und Konfigurationsdateien.
Einrichtung 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. In der Regel wird sie über den Einstellungsschlüssel mlflow gesteuert. Weitere Informationen findest du auf der Seite Einstellungen.
Rufe in deiner Python-Umgebung die Methode update für das Objekt settings auf, um deine Einstellungen zu ändern:
from ultralytics import settings
# Eine Einstellung aktualisieren
settings.update({"mlflow": True})
# Einstellungen auf Standardwerte zurücksetzen
settings.reset()Verwendung#
Befehle#
-
Projektname festlegen: Du kannst den Projektnamen über eine Umgebungsvariable festlegen:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEDu kannst auch beim Training eines YOLO-Modells das Argument
project=<project>verwenden, zum Beispielyolo train project=my_project. -
Ablaufname festlegen: Wie beim Projektnamen kannst du den Namen des Ablaufs über eine Umgebungsvariable festlegen:
export MLFLOW_RUN=YOUR_RUN_NAMEDu kannst auch beim Training eines YOLO-Modells das Argument
name=<name>verwenden, zum Beispielyolo train project=my_project name=my_name. -
Lokalen MLflow-Server starten: Um die Nachverfolgung zu starten, 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. Wenn deine Trainingsläufe einen anderen Tracking-Server verwenden sollen, exportiere vor dem TrainingMLFLOW_TRACKING_URI:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
MLflow-Ablauf nach dem Training geöffnet lassen: Standardmäßig beendet Ultralytics den MLflow-Ablauf automatisch nach Abschluss des Trainings. Wenn der Ablauf geöffnet bleiben soll (zum Beispiel, um im selben Notebook weitere Metriken oder Artefakte 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ß-/Kleinschreibung). Jeder andere Wert, einschließlich einer nicht gesetzten Variablen, behält das Standardverhalten bei, den Lauf zu schließen. Denk daran, den Lauf anschließend manuell mitmlflow.end_run()zu schließen.
Protokollierung#
Die Protokollierung wird von den on_pretrain_routine_end-, on_train_epoch_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 protokollieren Parameter, Metriken und Artefakte.
Beispiele#
-
Benutzerdefinierte Metriken protokollieren: Du kannst benutzerdefinierte Metriken zur Protokollierung hinzufügen, indem du das Wörterbuch
trainer.metricsänderst, bevoron_fit_epoch_endaufgerufen wird. -
Experiment anzeigen: Um deine Protokolle anzusehen, rufe deinen MLflow-Server auf (normalerweise
http://127.0.0.1:5000) und wähle dein Experiment und 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 anzusehen.

MLflow deaktivieren#
So deaktivierst du die MLflow-Protokollierung:
yolo settings mlflow=FalseFazit#
Die MLflow-Protokollierungsintegration mit Ultralytics YOLO bietet eine einfache Möglichkeit, deine Experimente zum maschinellen Lernen im Blick zu behalten. Damit kannst du Leistungsmetriken überwachen und Artefakte effektiv verwalten, was eine robuste Modellentwicklung und -bereitstellung unterstützt. Weitere Informationen findest du in der offiziellen Dokumentation von MLflow.
Häufig gestellte Fragen#
Um die MLflow-Protokollierung mit Ultralytics YOLO einzurichten, musst du zunächst sicherstellen, dass MLflow installiert ist. Du kannst MLflow mit pip installieren:
pip install mlflowAktiviere anschließend die MLflow-Protokollierung in den Ultralytics-Einstellungen. Sie lässt sich über den Schlüssel
mlflowsteuern. Weitere Informationen findest du in der Anleitung zu den Einstellungen.Ultralytics-MLflow-Einstellungen aktualisierenfrom ultralytics import settings # Eine Einstellung aktualisieren settings.update({"mlflow": True}) # Einstellungen auf Standardwerte zurücksetzen settings.reset()Starte abschließend einen lokalen MLflow-Server für die Nachverfolgung:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO unterstützt mit MLflow die Protokollierung verschiedener Metriken, Parameter und Artefakte während des gesamten Trainingsprozesses:
- Metriken protokollieren: Erfasst Metriken am Ende jeder Epoche und nach Abschluss des Trainings.
- Parameter protokollieren: Protokolliert alle Parameter, die im Trainingsprozess verwendet werden.
- Artefakte protokollieren: Speichert nach dem Training Modellartefakte wie Gewichte und Konfigurationsdateien.
Ausführlichere Informationen findest du in der Dokumentation zur Nachverfolgung mit Ultralytics YOLO.
Ja, du kannst die MLflow-Protokollierung für Ultralytics YOLO deaktivieren, indem du die Einstellungen aktualisierst. So geht es mit der CLI:
yolo settings mlflow=FalseWeitere Anpassungsmöglichkeiten und Informationen 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 den Server zu beenden.Weitere Befehlsoptionen findest du im Abschnitt Befehle.
Lege vor dem Training die Umgebungsvariable
MLFLOW_KEEP_RUN_ACTIVEaufTruefest:export MLFLOW_KEEP_RUN_ACTIVE=TrueStandardmäßig ist dies
False, daher ruft Ultralytics nach Abschluss des Trainings einmalmlflow.end_run()auf. MitMLFLOW_KEEP_RUN_ACTIVE=Truebleibt der Lauf geöffnet, sodass du in derselben Python-Sitzung zusätzliche Metriken, Parameter oder Artefakte protokollieren kannst – schließe ihn nach Abschluss selbst mitmlflow.end_run(). Die Werte1,true,yes,on,yundtaktivieren dieses Verhalten (ohne Beachtung der Groß-/Kleinschreibung).Die Integration von MLflow in Ultralytics YOLO bietet mehrere Vorteile bei der Verwaltung deiner Experimente zum maschinellen Lernen:
- Verbesserte Experimentnachverfolgung: Verfolge verschiedene Läufe und ihre Ergebnisse mühelos und vergleiche sie miteinander.
- Bessere Reproduzierbarkeit von Modellen: Stelle die Reproduzierbarkeit deiner Experimente sicher, indem du alle Parameter und Artefakte protokollierst.
- Leistungsüberwachung: Visualisiere Leistungsmetriken im Zeitverlauf, um datengestützte Entscheidungen zur Verbesserung von Modellen zu treffen.
- Optimierter Arbeitsablauf: Automatisiere die Protokollierung, damit du dich stärker auf die Modellentwicklung und weniger auf die manuelle Nachverfolgung konzentrieren kannst.
- Gemeinsame Entwicklung: Teile Versuchsergebnisse mit Teammitgliedern, um die Zusammenarbeit und den Wissensaustausch zu verbessern.
Einen ausführlichen Überblick über die Einrichtung und Nutzung von MLflow mit Ultralytics YOLO findest du in der Dokumentation zur MLflow-Integration für Ultralytics YOLO.