ClearML-Integration#
Über ClearML#
ClearML ist eine Open-Source-MLOps-Plattform, die entwickelt wurde, um Machine-Learning-Workflows zu optimieren und Entwicklungszeit zu sparen.
- 🔨 Verfolge jeden YOLOv5-Trainingslauf im Experiment-Manager.
- 🔧 Versioniere und greife auf deine benutzerdefinierten Trainingsdaten mit dem integrierten ClearML-Datenversionierungstool zu.
- 🔦 Trainiere und überwache YOLOv5-Läufe aus der Ferne mit dem ClearML Agent.
- 🔬 Finde die beste mAP mit der ClearML-Hyperparameteroptimierung.
- 🔭 Verwandle dein trainiertes YOLOv5-Modell mit wenigen Befehlen in eine API, indem du ClearML Serving verwendest.
Nutze so viele oder so wenige dieser Tools, wie du benötigst – starte nur mit dem Experiment-Manager oder verknüpfe alles zu einer vollständigen Pipeline.

🦾 Einrichtung#
ClearML muss mit einem Server kommunizieren, um deine Experimente und Daten zu verfolgen. Du hast zwei Optionen:
- Registriere dich für den kostenlosen ClearML Hosted Service oder
- stelle deinen eigenen ClearML-Server bereit – er ist Open-Source und bleibt daher auch bei sensiblen Daten eine praktikable Option.
Installiere dann das Python-Paket clearml und verbinde das SDK mit deinem Server:
pip install clearmlGeneriere Anmeldeinformationen unter Settings → Workspace → Create new credentials (oben rechts in der ClearML-Benutzeroberfläche) und führe dann Folgendes aus:
clearml-initFolge den Anweisungen. Das war's – die Einrichtung ist abgeschlossen.
🚀 Training von YOLOv5 mit ClearML#
Um die Experimentverfolgung zu aktivieren, installiere das ClearML pip-Paket, falls du das noch nicht getan hast:
pip install clearmlDadurch wird die Integration in das YOLOv5-Trainingsskript aktiviert. Jeder Trainingslauf von nun an wird vom ClearML-Experimentmanager erfasst und gespeichert.
Um die Projekt- und Task-Namen anzupassen, übergib --project und --name an train.py. Die Standardwerte sind YOLOv5 und Training. ClearML verwendet / als Unterprojekt-Trennzeichen, vermeide daher / in benutzerdefinierten Projektnamen.
python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheOder mit benutzerdefinierten Namen:
python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cacheJeder Lauf erfasst:
- Quellcode und unbestätigte Änderungen
- Installierte Pakete
- Hyperparameter
- Modell-Checkpoints (verwende
--save-period n, um allenEpochen zu speichern) - Konsolenausgabe
- Skalare (mAP_0.5, mAP_0.5:0.95, Präzision, Recall, Verluste, Lernraten)
- Maschinendetails, Laufzeit und Erstellungsdatum
- Generierte Diagramme wie das Label-Correlogramm und die Konfusionsmatrix
- Bilder mit Bounding-Boxen pro Epoche
- Mosaik-Visualisierungen pro Epoche
- Validierungsbilder pro Epoche
Alles wird in der ClearML-Benutzeroberfläche angezeigt, sodass du das Training an einem Ort überwachen kannst. Füge benutzerdefinierte Spalten hinzu (zum Beispiel mAP_0.5), um nach dem am besten abschneidenden Modell zu sortieren, oder wähle mehrere Experimente aus, um sie direkt miteinander zu vergleichen.
Lies weiter für Hyperparameter-Optimierung und Remote-Ausführung.
🔗 Datensatz-Versionsverwaltung#
Die separate Versionierung von Daten und Code macht es einfach, die neueste Version abzurufen und stellt die vollständige Reproduzierbarkeit sicher. Dieses Repository akzeptiert eine Datensatz-Versions-ID, ruft die Daten automatisch ab, falls sie fehlen, und zeichnet die ID als Aufgabenparameter auf, damit du immer weißt, welche Daten in welchem Experiment verwendet wurden.

Bereite deinen Datensatz vor#
Das YOLOv5-Repository unterstützt viele Datensätze über YAML-Konfigurationsdateien. Standardmäßig werden Datensätze in den Ordner ../datasets relativ zum Repository-Stammverzeichnis heruntergeladen. Nach dem Herunterladen von coco128 sieht die Ordnerstruktur wie folgt aus:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtJeder Datensatz funktioniert, sofern du diese Struktur beibehältst.
Kopiere als Nächstes die YAML-Datei des Datensatzes in das Stammverzeichnis des Datensatzes – ClearML liest diese Datei, um den Datensatz korrekt zu verwenden. Du kannst deine eigene YAML schreiben, indem du dem Beispiellayout folgst und sicherstellst, dass sie path, train, test, val, nc und names definiert.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE
|_ LICENSE
|_ README.txtLade deinen Datensatz hoch#
Um den Datensatz als versionierten ClearML-Datensatz zu registrieren, wechsle in das Stammverzeichnis und führe Folgendes aus:
cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync ist eine Kurzform für die folgende Sequenz, die du auch explizit ausführen kannst:
# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeTraining mit einem ClearML-Datensatz#
Sobald der Datensatz registriert ist, zeige beim Training per ID darauf:
python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache👀 Hyperparameteroptimierung#
Mit versionierten Experimenten und Daten kannst du darauf aufbauen. Da jedes verfolgte Experiment die vollständige Umgebung erfasst – Code, installierte Pakete und Konfiguration –, sind Läufe vollständig reproduzierbar. ClearML ermöglicht es dir, ein Experiment zu klonen, seine Parameter zu ändern und es automatisch erneut auszuführen, was die Grundlage der Hyperparameteroptimierung (HPO) bildet.
Um HPO lokal auszuführen, verwende das mitgelieferte Skript. Stelle zuerst sicher, dass eine Trainingsaufgabe im Experiment-Manager existiert – das Skript klont sie und variiert ihre Hyperparameter.
Fülle die Vorlagen-Task-ID in utils/loggers/clearml/hpo.py aus und führe dann Folgendes aus:
# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.pyWechsle von task.execute_locally() zu task.execute(), um den Job an eine ClearML-Warteschlange zu übergeben, damit ein Remote-Agent ihn abholt.

🤯 Remote-Ausführung (Fortgeschritten)#
Das lokale Ausführen von HPO ist praktisch, aber oft möchtest du Experimente auf leistungsstärkerer Hardware durchführen – einer On-Premises-GPU-Maschine oder einer Cloud-Instanz. Genau das ist die Aufgabe des ClearML Agents:
Jedes verfolgte Experiment enthält alles, was zur Reproduktion auf einer anderen Maschine erforderlich ist (installierte Pakete, nicht bestätigte Änderungen und Konfiguration). Ein ClearML-Agent überwacht eine Warteschlange, greift eingehende Aufgaben auf, stellt die Umgebung wieder her, führt den Job aus und streamt Skalare und Diagramme zurück an den Experiment-Manager.
Verwandle jede Maschine – eine Cloud-VM, eine lokale GPU-Box oder einen Laptop – in einen ClearML-Agenten mit:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]Klonen, Bearbeiten und Einreihen#
Wenn ein Agent läuft, kannst du ihm direkt über die Benutzeroberfläche Arbeit zuweisen:
- 🪄 Rechtsklick auf ein Experiment und Klonen.
- 🎯 Bearbeite die Hyperparameter.
- ⏳ Rechtsklick auf die geklonte Aufgabe und Einreihen in eine Zielwarteschlange.

Eine Aufgabe remote ausführen#
Du kannst ein laufendes Skript auch programmatisch für die Remote-Ausführung markieren, indem du task.execute_remotely() hinzufügst, nachdem der ClearML-Logger instanziiert wurde. Füge die hervorgehobene Zeile zu train.py hinzu:
# ...
# 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 LINE
# data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
data_dict = loggers.clearml.data_dict
# ...Nach dieser Änderung führt das Ausführen des Trainingsskripts den Vorgang bis zu dieser Zeile aus, verpackt den Code und sendet ihn an die Warteschlange.
Auto-skalierende Worker#
ClearML wird mit Autoscalern geliefert, die Remote-Maschinen in AWS, GCP oder Azure hochfahren, wenn eine Warteschlange ausstehende Experimente hat, sie in ClearML-Agenten umwandeln und sie herunterfahren, wenn die Arbeit beendet ist – sodass du nur für die tatsächlich laufende Rechenleistung bezahlst.
Sieh dir das Video für den Einstieg unten an:
Mehr erfahren#
Weitere Informationen zur Integration von ClearML mit Ultralytics-Modellen findest du in unserem ClearML-Integrationsleitfaden. Entdecke dort auch, wie du deinen MLOps-Workflow mit anderen Experiment-Tracking-Tools verbessern kannst.