Zum Inhalt springen

MLflow Integration für Ultralytics YOLO

MLflow Ökosystem

Einführung

Die Protokollierung von Experimenten ist ein wichtiger Aspekt von Workflows für maschinelles Lernen, der die Nachverfolgung verschiedener Metriken, Parameter und Artefakte ermöglicht. Sie hilft dabei, die Reproduzierbarkeit von Modellen zu verbessern, Probleme zu beheben und die Modellleistung zu steigern. Ultralytics YOLO Das Programm MLflow, das für seine Echtzeit-Objekterkennung bekannt ist, bietet jetzt die Integration mit MLflow, einer Open-Source-Plattform für das komplette Lifecycle-Management von maschinellem Lernen.

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 Open-Source-Plattform, die von Databricks entwickelt wurde, um den gesamten Lebenszyklus von Machine Learning zu verwalten. Sie enthält Tools zur Verfolgung von Experimenten, zur Paketierung von Code in reproduzierbaren Läufen und zur gemeinsamen Nutzung und Bereitstellung von Modellen. MLflow ist so konzipiert, dass es mit jeder Machine-Learning-Bibliothek und Programmiersprache funktioniert.

Eigenschaften

  • Metriken protokollieren: Protokolliert die Metriken am Ende jeder Epoche und am Ende des Trainings.
  • Parameterprotokollierung: Protokolliert alle im Training verwendeten Parameter.
  • Artefakte protokollieren: Protokolliert Modellartefakte, einschließlich Gewichte und Konfigurationsdateien, am Ende des Trainings.

Einrichtung und Voraussetzungen

Stelle sicher, dass MLflow installiert ist. Wenn nicht, installiere es mit pip:

pip install mlflow

Stelle sicher, dass die MLflow-Protokollierung in den Einstellungen von Ultralytics aktiviert ist. Normalerweise wird dies über die Einstellungen gesteuert mflow Taste. Siehe die Einstellungen Seite für weitere Informationen.

Ultralytics MLflow-Einstellungen aktualisieren

Rufen Sie innerhalb der Umgebung Python die update Methode auf der settings Objekt, um deine Einstellungen zu ändern:

from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

Wenn du lieber die Befehlszeilenschnittstelle verwendest, kannst du mit den folgenden Befehlen deine Einstellungen ändern:

# Update a setting
yolo settings runs_dir='/path/to/runs'

# Reset settings to default values
yolo settings reset

Wie zu verwenden

Befehle

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

    export MLFLOW_EXPERIMENT_NAME=<your_experiment_name>
    

Oder verwenden Sie die project=<project> Argument beim Training eines YOLO Modells, d. h. yolo train project=my_project.

  1. Einen Laufnamen festlegen: Ähnlich wie beim Festlegen eines Projektnamens kannst du auch den Laufnamen über eine Umgebungsvariable festlegen:

    export MLFLOW_RUN=<your_run_name>
    

Oder verwenden Sie die name=<name> Argument beim Training eines YOLO Modells, d. h. yolo train project=my_project name=my_name.

  1. Starte den lokalen MLflow Server: Um das Tracking 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. Um eine andere URI anzugeben, setze die MLFLOW_TRACKING_URI Umgebungsvariable.

  1. Beende MLflow Server-Instanzen: Um alle laufenden MLflow-Instanzen zu beenden, führe aus:

    ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
    

Loggen

Die Protokollierung wird von der on_pretrain_routine_end, on_fit_epoch_end, und on_train_end Callback-Funktionen. Diese Funktionen werden in den jeweiligen Phasen des Trainingsprozesses automatisch aufgerufen und sorgen für die Protokollierung von Parametern, Metriken und Artefakten.

Beispiele

  1. Benutzerdefinierte Metriken protokollieren: Du kannst benutzerdefinierte Metriken hinzufügen, die protokolliert werden, indem du die trainer.metrics Wörterbuch vor on_fit_epoch_end genannt wird.

  2. Ansicht Experiment: Um deine Logs anzusehen, navigiere zu deinem MLflow-Server (normalerweise http://127.0.0.1:5000), wähle dein Experiment aus und führe es aus. YOLO MLflow Experiment

  3. Ansicht Lauf: Runs sind einzelne Modelle innerhalb eines Experiments. Klicke auf einen Run und sieh dir die Run-Details an, einschließlich hochgeladener Artefakte und Modellgewichte. YOLO MLflow Run

Deaktivieren von MLflow

So deaktivierst du die MLflow-Protokollierung:

yolo settings mlflow=False

Fazit

Die MLflow-Logging-Integration mit Ultralytics YOLO bietet eine optimierte Möglichkeit, den Überblick über deine Machine Learning-Experimente zu behalten. Sie ermöglicht es dir, Leistungskennzahlen zu überwachen und Artefakte effektiv zu verwalten, was zu einer robusten Modellentwicklung und -bereitstellung beiträgt. Weitere Informationen findest du in der offiziellen MLflow-Dokumentation.



Erstellt am 2023-11-12, Aktualisiert am 2024-05-18
Autoren: glenn-jocher (4), Burhan-Q (1)

Kommentare