Ultralytics YOLO27:

MLflow-Integration für Ultralytics YOLO#

MLflow experiment tracking with Ultralytics YOLO

Einleitung#

Die Protokollierung von Experimenten ist ein entscheidender Bestandteil von Machine-Learning-Workflows. Sie ermöglicht die Nachverfolgung verschiedener Metriken, Parameter und Artefakte. Dadurch lassen sich die Reproduzierbarkeit von Modellen verbessern, Probleme beheben und die Modellleistung steigern. Ultralytics YOLO ist für seine Echtzeitfähigkeiten zur Objekterkennung bekannt und bietet jetzt eine Integration mit MLflow, einer Open-Source-Plattform für die umfassende Verwaltung des Machine-Learning-Lebenszyklus.

Diese Dokumentationsseite ist eine umfassende Anleitung zum Einrichten und Verwenden der MLflow-Logging-Funktionen 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 Werkzeuge zum Nachverfolgen von Experimenten, zum Verpacken von Code in reproduzierbare Ausführungen sowie zum Teilen und Bereitstellen von Modellen. MLflow ist für die Zusammenarbeit mit jeder Machine-Learning-Bibliothek und Programmiersprache ausgelegt.

Funktionen#

  • Metrik-Logging: Protokolliert Metriken am Ende jeder Epoche und am Ende des Trainings.
  • Parameter-Logging: Protokolliert alle beim Training verwendeten Parameter.
  • Artefakt-Logging: 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. In der Regel wird dies über den Schlüssel mlflow gesteuert. Weitere Informationen findest du auf der Seite Einstellungen.

Ultralytics-MLflow-Einstellungen aktualisieren

Rufe innerhalb der Python-Umgebung die Methode update für das 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

    Alternativ kannst du beim Training eines YOLO-Modells das Argument project=<project> verwenden, zum Beispiel yolo train project=my_project.

  2. Namen der Ausführung festlegen: Ähnlich wie beim Festlegen eines Projektnamens kannst du den Namen der Ausführung über eine Umgebungsvariable festlegen:

    export MLFLOW_RUN=YOUR_RUN_NAME

    Alternativ kannst du beim Training eines YOLO-Modells das Argument name=<name> verwenden, zum Beispiel yolo train project=my_project name=my_name.

  3. Lokalen MLflow-Server starten: Verwende zum Starten der Nachverfolgung:

    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 Trainingsausführungen an einen anderen Nachverfolgungsserver zu richten, exportiere vor dem Training MLFLOW_TRACKING_URI:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. MLflow-Ausführung nach dem Training aktiv lassen: Standardmäßig beendet Ultralytics die MLflow-Ausführung automatisch, wenn das Training abgeschlossen ist. Um die Ausführung offen zu halten, beispielsweise 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

    Die Werte 1, true, yes, on, y und t aktivieren dieses Verhalten (ohne Beachtung der Groß- und Kleinschreibung). Jeder andere Wert, einschließlich einer nicht gesetzten Variable, behält das Standardverhalten bei, die Ausführung zu schließen. Denke daran, sie anschließend manuell mit mlflow.end_run() zu schließen.

Protokollierung#

Die Protokollierung wird von den on_pretrain_routine_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 übernehmen die Protokollierung von Parametern, Metriken und Artefakten.

Beispiele#

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

  2. Experiment anzeigen: Um deine Protokolle anzuzeigen, rufe deinen MLflow-Server (normalerweise http://127.0.0.1:5000) auf und wähle dein Experiment sowie deinen Lauf aus. MLflow experiment tracking interface for YOLO

  3. Lauf anzeigen: Läufe sind einzelne Modelle innerhalb eines Experiments. Klicke auf einen Lauf, um die Laufdetails einschließlich hochgeladener Artefakte und Modellgewichte anzuzeigen. MLflow run details with YOLO artifacts

MLflow deaktivieren#

So deaktivierst du das MLflow-Logging:

yolo settings mlflow=False

Fazit#

Die MLflow-Logging-Integration mit Ultralytics YOLO bietet eine effiziente Möglichkeit, deine Machine-Learning-Experimente im Blick zu behalten. Du kannst damit Leistungsmetriken überwachen und Artefakte effektiv verwalten, was eine robuste Entwicklung und Bereitstellung von Modellen unterstützt. Weitere Informationen findest du in der offiziellen Dokumentation von MLflow.

FAQ#

  • Um das MLflow-Logging 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 wird über den Schlüssel mlflow gesteuert. Weitere Informationen findest du in der Anleitung zu den Einstellungen.

    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 zur Nachverfolgung:

    mlflow server --backend-store-uri runs/mlflow
  • Ultralytics YOLO unterstützt zusammen mit MLflow die Protokollierung verschiedener Metriken, Parameter und Artefakte während des gesamten Trainingsprozesses:

    • Metrik-Logging: Verfolgt Metriken am Ende jeder Epoche und nach Abschluss des Trainings.
    • Parameter-Logging: Protokolliert alle im Trainingsprozess verwendeten Parameter.
    • Artefakt-Logging: Speichert Modellartefakte wie Gewichte und Konfigurationsdateien nach dem Training.

    Ausführlichere Informationen findest du in der Dokumentation zur Nachverfolgung mit Ultralytics YOLO.

  • Ja, du kannst das MLflow-Logging für Ultralytics YOLO deaktivieren, indem du die Einstellungen aktualisierst. So geht es mit der CLI:

    yolo settings mlflow=False

    Weitere Informationen zur Anpassung und 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/mlflow

    Dieser Befehl startet standardmäßig einen lokalen Server unter http://127.0.0.1:5000. Drücke in diesem Terminal Ctrl+C, um ihn zu stoppen.

    Weitere Befehlsoptionen findest du im Abschnitt zu den Befehlen.

  • Setze die Umgebungsvariable MLFLOW_KEEP_RUN_ACTIVE vor dem Training auf True:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Standardmäßig ist dies False, daher ruft Ultralytics nach Abschluss des Trainings mlflow.end_run() auf. Mit MLFLOW_KEEP_RUN_ACTIVE=True bleibt die Ausführung geöffnet, sodass du zusätzliche Metriken, Parameter oder Artefakte aus derselben Python-Sitzung protokollieren kannst – schließe sie anschließend mit mlflow.end_run(). Die Werte 1, true, yes, on, y und t aktivieren dieses Verhalten (ohne Beachtung der Groß- und Kleinschreibung).

  • Die Integration von MLflow mit Ultralytics YOLO bietet mehrere Vorteile bei der Verwaltung deiner Machine-Learning-Experimente:

    • Verbesserte Nachverfolgung von Experimenten: Verfolge verschiedene Ausführungen und ihre Ergebnisse einfach nach und vergleiche sie.
    • Verbesserte Reproduzierbarkeit von Modellen: Stelle durch die Protokollierung aller Parameter und Artefakte sicher, dass deine Experimente reproduzierbar sind.
    • Überwachung der Leistung: Visualisiere Leistungsmetriken im Zeitverlauf, um datenbasierte Entscheidungen zur Verbesserung von Modellen zu treffen.
    • Optimierter Workflow: Automatisiere den Protokollierungsprozess, damit du dich stärker auf die Modellentwicklung statt auf die manuelle Nachverfolgung konzentrieren kannst.
    • Gemeinsame Entwicklung: Teile Experimentergebnisse mit Teammitgliedern, um die Zusammenarbeit und den Wissensaustausch zu verbessern.

    Eine ausführliche Anleitung zum Einrichten und Nutzen von MLflow mit Ultralytics YOLO findest du in der Dokumentation MLflow-Integration für Ultralytics YOLO.

Kommentare