YOLO Vision 2026:

MLflow-Integration für Ultralytics YOLO#

MLflow experiment tracking with 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 mlflow

Stelle 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.

Ultralytics MLflow-Einstellungen aktualisieren

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#

  1. Projektnamen festlegen: Du kannst den Projektnamen über eine Umgebungsvariable festlegen:

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    Oder verwende das Argument project=<project> beim Trainieren eines YOLO-Modells, d. h. yolo train project=my_project.

  2. Run-Namen festlegen: Ähnlich wie beim Festlegen eines Projektnamens kannst du den Run-Namen über eine Umgebungsvariable festlegen:

    export MLFLOW_RUN=YOUR_RUN_NAME

    Oder verwende das Argument name=<name> beim Trainieren eines YOLO-Modells, d. h. yolo train project=my_project name=my_name.

  3. Lokalen MLflow-Server starten: Um mit dem Tracking zu beginnen, verwende:

    mlflow server --backend-store-uri runs/mlflow

    Dadurch wird standardmäßig ein lokaler Server unter http://127.0.0.1:5000 gestartet und alle mlflow-Protokolle werden im Verzeichnis 'runs/mlflow' gespeichert. Um deine Trainingsläufe auf einen anderen Tracking-Server zu verweisen, exportiere vor dem Training MLFLOW_TRACKING_URI:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 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_ACTIVE vor dem Training auf True:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Der Wert wird unabhängig von Groß- und Kleinschreibung geparst; nur die Zeichenfolge true aktiviert 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 mit mlflow.end_run() zu schließen.

  5. 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#

  1. Protokollierung benutzerdefinierter Metriken: Du kannst benutzerdefinierte Metriken zum Protokollieren hinzufügen, indem du das Wörterbuch trainer.metrics änderst, bevor on_fit_epoch_end aufgerufen wird.

  2. 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. MLflow experiment tracking interface for YOLO

  3. 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 run details with YOLO artifacts

MLflow deaktivieren#

So schaltest du die MLflow-Protokollierung aus:

yolo settings mlflow=False

Fazit#

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 mlflow

Aktiviere 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.

Ultralytics MLflow-Einstellungen aktualisieren
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/mlflow

Welche 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=False

Weitere 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/mlflow

Dieser 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 -9

Weitere 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=True

Standardmäß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.

Kommentare