Ultralytics YOLO27:
Get Started

MLflow-Integration für Ultralytics YOLO#

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

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

Ultralytics-MLflow-Einstellungen aktualisieren

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#

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

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

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

  2. Ablaufname festlegen: Wie beim Projektnamen kannst du den Namen des Ablaufs über eine Umgebungsvariable festlegen:

    export MLFLOW_RUN=YOUR_RUN_NAME

    Du kannst auch 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: Um die Nachverfolgung zu starten, 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. Wenn deine Trainingsläufe einen anderen Tracking-Server verwenden sollen, exportiere vor dem Training MLFLOW_TRACKING_URI:

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. 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_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ß-/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 mit mlflow.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#

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

  2. 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. 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 anzusehen. MLflow run details with YOLO artifacts

MLflow deaktivieren#

So deaktivierst du die MLflow-Protokollierung:

yolo settings mlflow=False

Fazit#

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 mlflow

    Aktiviere anschließend die MLflow-Protokollierung in den Ultralytics-Einstellungen. Sie lässt sich über den Schlüssel mlflow steuern. Weitere Informationen findest du in der Anleitung zu den Einstellungen.

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

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

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

    Weitere Befehlsoptionen findest du im Abschnitt Befehle.

  • Lege vor dem Training die Umgebungsvariable MLFLOW_KEEP_RUN_ACTIVE auf True fest:

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Standardmäßig ist dies False, daher ruft Ultralytics nach Abschluss des Trainings einmal mlflow.end_run() auf. Mit MLFLOW_KEEP_RUN_ACTIVE=True bleibt der Lauf geöffnet, sodass du in derselben Python-Sitzung zusätzliche Metriken, Parameter oder Artefakte protokollieren kannst – schließe ihn nach Abschluss selbst mit mlflow.end_run(). Die Werte 1, true, yes, on, y und t aktivieren 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.

Kommentare