MLflow-Integration für Ultralytics YOLO
Einführung
Die Protokollierung von Experimenten ist ein wichtiger Aspekt von Arbeitsabläufen beim maschinellen Lernen, der die Verfolgung 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 YOLOMLflow, bekannt für seine Fähigkeiten zur Objekterkennung in Echtzeit, bietet nun 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 Ihr Ultralytics YOLO Projekt.
Was ist MLflow?
MLflow ist eine von Databricks entwickelte Open-Source-Plattform für die Verwaltung des gesamten Lebenszyklus von maschinellem Lernen. Sie umfasst Tools für die Nachverfolgung von Experimenten, die Paketierung von Code in reproduzierbare Läufe sowie die gemeinsame Nutzung und Bereitstellung von Modellen. MLflow ist so konzipiert, dass es mit jeder Bibliothek für maschinelles Lernen und jeder Programmiersprache funktioniert.
Eigenschaften
- Metrik-Protokollierung: Protokolliert Metriken am Ende jeder Epoche und am Ende des Trainings.
- Parameter-Protokollierung: Protokolliert alle für das Training verwendeten Parameter.
- Artefakte protokollieren: Protokolliert Modellartefakte, einschließlich Gewichte und Konfigurationsdateien, am Ende des Trainings.
Einrichtung und Voraussetzungen
Stellen Sie sicher, dass MLflow installiert ist. Wenn nicht, installieren Sie es mit pip:
pip install mlflow
Stellen Sie sicher, dass die MLflow-Protokollierung in den Einstellungen von Ultralytics aktiviert ist. Normalerweise wird dies über die Einstellungen gesteuert mlflow
Taste. Siehe die Einstellungen Seite für weitere Informationen.
Ultralytics MLflow-Einstellungen aktualisieren
Rufen Sie innerhalb der Umgebung Python die Funktion update
Methode auf der settings
Objekt, um Ihre Einstellungen zu ändern:
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()
Wenn Sie es vorziehen, die Befehlszeilenschnittstelle zu verwenden, können Sie mit den folgenden Befehlen Ihre Einstellungen ändern:
# Update a setting
yolo settings mlflow=True
# Reset settings to default values
yolo settings reset
Wie zu verwenden
Befehle
-
Einen Projektnamen festlegen: Sie können 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
. -
Einen Laufnamen festlegen: Ähnlich wie beim Festlegen eines Projektnamens können Sie 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
. -
Starten Sie den lokalen MLflow-Server: Um die Verfolgung zu starten, verwenden Sie:
mlflow server --backend-store-uri runs/mlflow
Dies startet einen lokalen Server unter
http://127.0.0.1:5000
und speichern alle mlflow-Protokolle im Verzeichnis 'runs/mlflow'. Um eine andere URI anzugeben, setzen Sie dieMLFLOW_TRACKING_URI
Umgebungsvariable. -
MLflow-Server-Instanzen beenden: Um alle laufenden MLflow-Instanzen zu beenden, führen Sie aus:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
Protokollierung
Die Protokollierung wird von der on_pretrain_routine_end
, on_fit_epoch_end
und on_train_end
Rückruffunktionen. Diese Funktionen werden in den jeweiligen Phasen des Trainingsprozesses automatisch aufgerufen und übernehmen die Protokollierung von Parametern, Metriken und Artefakten.
Beispiele
-
Benutzerdefinierte Metriken protokollieren: Sie können benutzerdefinierte Metriken hinzufügen, die protokolliert werden sollen, indem Sie die
trainer.metrics
Wörterbuch voron_fit_epoch_end
genannt wird. -
Ansicht Experiment: Um Ihre Protokolle einzusehen, navigieren Sie zu Ihrem MLflow-Server (normalerweise
http://127.0.0.1:5000
), wählen Sie Ihr Experiment aus und führen Sie es aus. -
Ansicht Laufen: Runs sind einzelne Modelle innerhalb eines Experiments. Klicken Sie auf einen Lauf und sehen Sie die Laufdetails, einschließlich hochgeladener Artefakte und Modellgewichte.
Deaktivieren von MLflow
Um die MLflow-Protokollierung zu deaktivieren:
yolo settings mlflow=False
Schlussfolgerung
Die MLflow-Logging-Integration mit Ultralytics YOLO bietet eine optimierte Möglichkeit, Ihre Experimente zum maschinellen Lernen zu verfolgen. Es ermöglicht Ihnen die Überwachung von Leistungsmetriken und die effektive Verwaltung von Artefakten und unterstützt so eine robuste Modellentwicklung und -bereitstellung. Weitere Einzelheiten finden Sie in der offiziellen MLflow-Dokumentation.
FAQ
Wie richte ich die MLflow-Protokollierung mit Ultralytics YOLO ein?
Um die MLflow-Protokollierung mit Ultralytics YOLO einzurichten, müssen Sie zunächst sicherstellen, dass MLflow installiert ist. Sie können es mit pip installieren:
pip install mlflow
Aktivieren Sie als nächstes die MLflow-Protokollierung in den Einstellungen von Ultralytics . Dies kann mit der Option mlflow
Taste. Weitere Informationen finden Sie in der Anleitung für die Einstellungen.
Ultralytics MLflow-Einstellungen aktualisieren
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()
# Update a setting
yolo settings mlflow=True
# Reset settings to default values
yolo settings reset
Starten Sie schließlich einen lokalen MLflow-Server für die Nachverfolgung:
mlflow server --backend-store-uri runs/mlflow
Welche Metriken und Parameter kann ich mit MLflow mit Ultralytics YOLO protokollieren?
Ultralytics YOLO mit MLflow unterstützt die Protokollierung verschiedener Metriken, Parameter und Artefakte während des gesamten Trainingsprozesses:
- Protokollierung der Metriken: Verfolgt die Metriken am Ende jeder Epoche und nach Abschluss des Trainings.
- Parameter-Protokollierung: Protokolliert alle im Trainingsprozess verwendeten Parameter.
- Artefakte protokollieren: Speichert Modellartefakte wie Gewichte und Konfigurationsdateien nach dem Training.
Ausführlichere Informationen finden Sie in der DokumentationUltralytics YOLO tracking.
Kann ich die MLflow-Protokollierung deaktivieren, sobald sie aktiviert ist?
Ja, Sie können die MLflow-Protokollierung für Ultralytics YOLO deaktivieren, indem Sie die Einstellungen aktualisieren. Hier erfahren Sie, wie Sie das mit Hilfe von CLI tun können:
yolo settings mlflow=False
Weitere Anpassungen und das Zurücksetzen von Einstellungen finden Sie in der Einstellungsanleitung.
Wie kann ich einen MLflow-Server für die Nachverfolgung Ultralytics YOLO starten und stoppen?
Um einen MLflow-Server für die Verfolgung Ihrer Experimente in Ultralytics YOLO zu starten, verwenden Sie den folgenden Befehl:
mlflow server --backend-store-uri runs/mlflow
Dieser Befehl startet einen lokalen Server unter http://127.0.0.1:5000
standardmäßig. Wenn Sie laufende MLflow-Serverinstanzen stoppen müssen, verwenden Sie den folgenden bash :
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
Im Abschnitt Befehle finden Sie weitere Befehlsoptionen.
Welche Vorteile bietet die Integration von MLflow mit Ultralytics YOLO für die Experimentverfolgung?
Die Integration von MLflow mit Ultralytics YOLO bietet mehrere Vorteile für die Verwaltung Ihrer Experimente zum maschinellen Lernen:
- Verbesserte Experimentverfolgung: Verfolgen und vergleichen Sie mühelos verschiedene Durchläufe und deren Ergebnisse.
- Verbesserte Reproduzierbarkeit der Modelle: Stellen Sie sicher, dass Ihre Experimente reproduzierbar sind, indem Sie alle Parameter und Artefakte protokollieren.
- Leistungsüberwachung: Visualisieren Sie Leistungsmetriken im Zeitverlauf, um datengestützte Entscheidungen für Modellverbesserungen zu treffen.
- Rationalisierter Arbeitsablauf: Automatisieren Sie den Protokollierungsprozess, um sich mehr auf die Modellentwicklung als auf die manuelle Nachverfolgung zu konzentrieren.
- Kollaborative Entwicklung: Teilen Sie die Ergebnisse von Experimenten mit Teammitgliedern, um die Zusammenarbeit und den Wissensaustausch zu verbessern.
Einen detaillierten Einblick in die Einrichtung und Nutzung von MLflow mit Ultralytics YOLO finden Sie in der Dokumentation MLflow Integration for Ultralytics YOLO .