MLflow Integration für Ultralytics YOLO
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:
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:
Wie zu verwenden
Befehle
-
Einen Projektnamen festlegen: Du kannst den Projektnamen über eine Umgebungsvariable festlegen:
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 kannst du auch den Laufnamen über eine Umgebungsvariable festlegen:
Oder verwenden Sie die name=<name>
Argument beim Training eines YOLO Modells, d. h. yolo train project=my_project name=my_name
.
-
Starte den lokalen MLflow Server: Um das Tracking zu starten, verwende:
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.
-
Beende MLflow Server-Instanzen: Um alle laufenden MLflow-Instanzen zu beenden, führe aus:
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
-
Benutzerdefinierte Metriken protokollieren: Du kannst benutzerdefinierte Metriken hinzufügen, die protokolliert werden, indem du die
trainer.metrics
Wörterbuch voron_fit_epoch_end
genannt wird. -
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.
-
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.
Deaktivieren von MLflow
So deaktivierst du die MLflow-Protokollierung:
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.