Ultralytics YOLOv5 remote mit ClearML trainieren und überwachen
Entdecke unsere Partnerschaft mit ClearML für eine optimierte Ultralytics-YOLOv5-Erfahrung mit nahtloser ML-Integration, Experimentverfolgung und mehr.

Ultralytics arbeitet kommerziell mit anderen Start-ups zusammen, um die Forschung und Entwicklung unserer großartigen Open-Source-Tools wie YOLOv5 zu finanzieren und sie für alle kostenlos zu halten. Dieser Artikel kann Affiliate-Links zu diesen Partnern enthalten.
ClearML ist unser neuester Partner: eine Open-Source-Werkzeugsammlung, die dir Zeit sparen soll.
Mit dem Ziel, die Einführung von ML zu beschleunigen, ermöglicht ClearML eine nahtlose Integration von ML in nahezu jedes Software- und Hardwareprodukt.
Diese Integration macht es noch einfacher, ein YOLOv5-Modell zu trainieren und den ClearML-Experimentmanager zu verwenden, um den Prozess automatisch zu verfolgen. Du kannst einfach die Versions-ID eines ClearML-Datasets als Dateneingabe angeben, und sie wird automatisch zum Trainieren deines Modells verwendet.
Bring die Nachverfolgung deiner Experimente auf die nächste Stufe#
- Verfolge jeden YOLOv5-Trainingslauf im Experimentmanager.
- Verwalte deine benutzerdefinierten Trainingsdaten mit Versionen und greife dank des integrierten ClearML-Tools zur Datenversionsverwaltung einfach darauf zu.
- Erziele mit der ClearML-Hyperparameteroptimierung den bestmöglichen mAP.
- Wandle dein neu trainiertes YOLOv5-Modell mit nur wenigen Befehlen mithilfe von ClearML Serving in eine API um.
Du entscheidest, wie viele dieser Werkzeuge du verwenden möchtest: Du kannst dich auf den Experimentmanager beschränken oder sie alle zu einer beeindruckenden Pipeline verknüpfen.
Einrichtung#
Damit ClearML deine Experimente und Daten verfolgen kann, muss es mit einem Server kommunizieren. Dafür hast du zwei Möglichkeiten: Registriere dich kostenlos beim ClearML Hosted Service oder richte deinen eigenen Server ein; siehe die Dokumentation zur Bereitstellung von ClearML Server.
Auch der Server ist Open Source. Wenn du also mit sensiblen Daten arbeitest, ist das kein Problem!
- Installiere das Python-Paket clearml:
pip install clearml - Verbinde das ClearML SDK mit dem Server, indem du Zugangsdaten erstellst (gehe oben rechts zu Settings → Workspace → Create new credentials), führe anschließend den folgenden Befehl aus und befolge die Anweisungen:
clearml-init
Und voilà! Du kannst loslegen …
YOLOv5 mit ClearML trainieren#
Um die Nachverfolgung von ClearML-Experimenten zu aktivieren, installiere einfach das ClearML-Paket über pip.
pip install clearmlDadurch wird die Integration in das YOLOv5-Trainingsskript aktiviert. Jeder weitere Trainingslauf wird vom ClearML-Experimentmanager erfasst und gespeichert. Wenn du project_name oder task_name ändern möchtest, öffne unseren benutzerdefinierten Logger, in dem du die Änderung vornehmen kannst: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheDabei werden erfasst:
- Quellcode und nicht committete Änderungen
- Installierte Pakete
- (Hyper-)Parameter
- Modelldateien (verwende --save-period n, um alle n Epochen einen Checkpoint zu speichern)
- Konsolenausgabe
- Skalare (mAP_0.5, mAP_0.5:0.95, Präzision, Recall, Verluste, Lernraten, …)
- Allgemeine Informationen wie Maschinendetails, Laufzeit, Erstellungsdatum usw.
- Alle erstellten Diagramme wie das Label-Korrelogramm und die Konfusionsmatrix
- Bilder mit BBoxen pro Epoche
- Mosaik pro Epoche
- Validierungsbilder pro Epoche
Gar nicht schlecht! Jetzt können wir all diese Informationen in der ClearML-Benutzeroberfläche visualisieren, um einen Überblick über den Fortschritt unseres Trainings zu erhalten. Füge der Tabellenansicht benutzerdefinierte Spalten hinzu (zum Beispiel mAP_0.5), damit du einfach nach dem leistungsstärksten Modell sortieren kannst. Oder wähle mehrere Experimente aus und vergleiche sie direkt!
Mit all diesen Informationen können wir noch mehr anfangen, etwa Hyperparameteroptimierung und Remote-Ausführung. Lies also weiter, um zu erfahren, wie das geht!
Versionsverwaltung von Datasets#
Deine Daten getrennt vom Code mit Versionen zu verwalten, ist grundsätzlich eine gute Idee und erleichtert auch den Zugriff auf die neueste Version. Dieses Repository unterstützt die Angabe einer Dataset-Versions-ID und stellt sicher, dass die Daten abgerufen werden, falls sie noch nicht vorhanden sind. Außerdem speichert dieser Arbeitsablauf die verwendete Dataset-ID als Teil der Aufgabenparameter, sodass du immer genau weißt, welche Daten in welchem Experiment verwendet wurden!
Dataset vorbereiten#
Das YOLOv5-Repository unterstützt verschiedene Datasets mithilfe von YAML-Dateien, die deren Informationen enthalten. Standardmäßig werden Datasets relativ zum Stammverzeichnis des Repositorys im Ordner ../datasets heruntergeladen. Wenn du also das Dataset coco128 über den Link in der YAML-Datei oder mit den von yolov5 bereitgestellten Skripten heruntergeladen hast, erhältst du diese Ordnerstruktur:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtDas kann jedoch jedes beliebige Dataset sein. Du kannst gerne dein eigenes verwenden, solange du diese Ordnerstruktur beibehältst.
Kopiere als Nächstes ⚠️die entsprechende YAML-Datei in das Stammverzeichnis des Dataset-Ordners⚠️. Diese YAML-Dateien enthalten die Informationen, die ClearML benötigt, um das Dataset korrekt zu verwenden. Du kannst eine solche Datei natürlich auch selbst erstellen. Halte dich einfach an die Struktur der Beispiel-YAML-Dateien.
Im Wesentlichen benötigen wir die folgenden Schlüssel: path, train, test, val, nc, names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtDataset hochladen#
Um dieses Dataset als versioniertes Dataset in ClearML zu übernehmen, wechsle in das Stammverzeichnis des Datasets und führe den folgenden Befehl aus:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .Der Befehl clearml-data sync ist eigentlich eine Kurzform. Du kannst auch die folgenden Befehle nacheinander ausführen:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeTraining mit einem ClearML-Dataset ausführen#
Da du nun ein ClearML-Dataset hast, kannst du es ganz einfach zum Trainieren benutzerdefinierter YOLOv5-Modelle verwenden.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheHyperparameteroptimierung#
Da wir nun unsere Experimente und die Datenversion haben, ist es an der Zeit, uns anzusehen, worauf wir aufbauen können!
Mithilfe der Codeinformationen, der installierten Pakete und der Umgebungsdetails ist das Experiment nun vollständig reproduzierbar. ClearML ermöglicht es dir sogar, ein Experiment zu klonen und seine Parameter zu ändern. Anschließend können wir es mit diesen neuen Parametern automatisch erneut ausführen – genau das macht HPO im Wesentlichen!
Um die Hyperparameteroptimierung lokal auszuführen, haben wir ein fertiges Skript für dich bereitgestellt. Stelle einfach sicher, dass mindestens einmal eine Trainingsaufgabe ausgeführt wurde und sich daher im ClearML-Experimentmanager befindet. Im Wesentlichen klonen wir sie und ändern ihre Hyperparameter.
Du musst die ID dieser Vorlagenaufgabe in das Skript unter utils/loggers/clearml/hpo.py eintragen und es anschließend ausführen. Du kannst task.execute_locally() in task.execute() ändern, um sie in eine ClearML-Warteschlange einzureihen und stattdessen von einem Remote-Agenten bearbeiten zu lassen.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyRemote-Ausführung (fortgeschritten)#
HPO lokal auszuführen, ist sehr praktisch. Aber was, wenn wir unsere Experimente stattdessen auf einem Remote-Computer ausführen möchten? Vielleicht hast du vor Ort Zugriff auf eine besonders leistungsstarke GPU-Maschine oder ein Budget für Cloud-GPUs. Hier kommt der ClearML Agent ins Spiel.
Sieh dir hier an, was der Agent leisten kann:
Kurz gesagt: Jedes vom Experimentmanager erfasste Experiment enthält genügend Informationen, um es auf einem anderen Computer zu reproduzieren (installierte Pakete, nicht committete Änderungen usw.). Genau das macht ein ClearML-Agent: Er überwacht eine Warteschlange auf eingehende Aufgaben und rekonstruiert beim Auffinden einer Aufgabe die Umgebung und führt sie aus, während er weiterhin Skalare, Diagramme usw. an den Experimentmanager meldet.
Du kannst jeden Computer (eine Cloud-VM, eine lokale GPU-Maschine oder deinen eigenen Laptop) in einen ClearML-Agenten verwandeln, indem du einfach Folgendes ausführst:
clearml-agent daemon --queue [--docker]Klonen, Bearbeiten und Einreihen#
Da unser Agent läuft, können wir ihm Arbeit zuweisen. Erinnerst du dich an den Abschnitt zur HPO, in dem wir eine Aufgabe klonen und die Hyperparameter bearbeiten können? Das geht auch über die Benutzeroberfläche!
🪄 Klone das Experiment, indem du mit der rechten Maustaste darauf klickst
🎯 Bearbeite die Hyperparameter nach deinen Vorstellungen
⏳ Rei die Aufgabe per Rechtsklick in eine beliebige Warteschlange ein
Eine Aufgabe remote ausführen#
Jetzt kannst du wie oben beschrieben eine Aufgabe klonen oder dein aktuelles Skript einfach markieren, indem du task.execute_remotely() hinzufügst. Bei der Ausführung wird es in eine Warteschlange gestellt, damit der Agent mit der Arbeit beginnen kann!
Um das YOLOv5-Trainingsskript remote auszuführen, musst du lediglich diese Zeile nach der Initialisierung des ClearML-Loggers in das Skript train.py einfügen:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ ADD THIS LINEFragen? Tritt unserer Community bei und stelle noch heute deine Frage!









