MLflow-Integration für Ultralytics YOLO

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

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

Ultralytics MLflow-Einstellungen aktualisieren

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

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

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    Oder verwende das Argument project=<project> beim Training eines YOLO-Modells, z. B. yolo train project=my_project.

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

    export MLFLOW_RUN=YOUR_RUN_NAME

    Oder verwende das Argument name=<name> beim Training eines YOLO-Modells, z. B. 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

    Dies startet standardmäßig einen lokalen Server unter http://127.0.0.1:5000 und speichert alle MLflow-Logs im Verzeichnis 'runs/mlflow'. Um deine Trainingsläufe auf einen anderen Tracking-Server zu verweisen, exportiere MLFLOW_TRACKING_URI vor dem Training:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 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

  1. Benutzerdefinierte Metriken protokollieren: Du kannst benutzerdefinierte Metriken zur Protokollierung hinzufügen, indem du das trainer.metrics-Wörterbuch änderst, bevor on_fit_epoch_end aufgerufen wird.

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

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

MLflow deaktivieren

Um die MLflow-Protokollierung auszuschalten:

yolo settings mlflow=False

Fazit

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 mlflow

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

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

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

Kommentare