Meet YOLO26: next-gen vision AI.

Link to this sectionClearML-Integration#

ClearML MLOps experiment tracking platform

Link to this sectionÜ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 verwalte deine benutzerdefinierten Trainingsdaten mit dem integrierten ClearML-Datenversionierungstool.
  • 🔦 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.

ClearML-Skalare-Dashboard mit YOLOv5-Trainingsmetriken

Link to this section🦾 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 somit auch für sensible Daten eine praktikable Option.

Installiere dann das clearml Python-Paket und verbinde das SDK mit deinem Server:

pip install clearml

Generiere Anmeldedaten unter Settings → Workspace → Create new credentials (oben rechts in der ClearML-Benutzeroberfläche) und führe dann Folgendes aus:

clearml-init

Folge den Anweisungen. Das war's – die Einrichtung ist abgeschlossen.

Link to this section🚀 Training von YOLOv5 mit ClearML#

Um die Experimentverfolgung zu aktivieren, installiere das ClearML pip-Paket, falls du das noch nicht getan hast:

pip install clearml

Dies ermöglicht die Integration mit dem YOLOv5-Trainingsskript. Jeder Trainingslauf ab jetzt wird vom ClearML-Experiment-Manager erfasst und gespeichert.

Um die Projekt- und Aufgabenamen anzupassen, übergib --project und --name an train.py. Die Standardwerte sind YOLOv5 und Training. ClearML verwendet / als Trennzeichen für Unterprojekte, vermeide also / in benutzerdefinierten Projektnamen.

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Oder mit benutzerdefinierten Namen:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Jeder Lauf erfasst:

  • Quellcode und unbestätigte Änderungen
  • Installierte Pakete
  • Hyperparameter
  • Modell-Checkpoints (verwende --save-period n, um alle n Epochen 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-Korrelogramm und die Konfusionsmatrix
  • Bilder mit Bounding-Boxen pro Epoche
  • Mosaik-Visualisierungen pro Epoche
  • Validierungsbilder pro Epoche

Alles erscheint in der ClearML-Benutzeroberfläche, sodass du das Training zentral überwachen kannst. Füge benutzerdefinierte Spalten hinzu (zum Beispiel mAP_0.5), um nach dem leistungsstärksten Modell zu sortieren, oder wähle mehrere Experimente aus, um sie direkt zu vergleichen.

Lies weiter für Hyperparameteroptimierung und Remote-Ausführung.

Link to this section🔗 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.

ClearML-Schnittstelle zur Datensatz-Versionsverwaltung

Link to this sectionBereite 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 so aus:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

Jeder Datensatz funktioniert, sofern du diese Struktur beibehältst.

Kopiere als Nächstes die YAML-Datei des Datensatzes in den Stammordner des Datensatzes – ClearML liest diese Datei, um den Datensatz korrekt zu verwenden. Du kannst deine eigene YAML-Datei schreiben, indem du dem Beispiel-Layout folgst und sicherstellst, dass sie path, train, test, val, nc und names definiert.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

Link to this sectionLade 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 Abkürzung 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 close

Link to this sectionTraining 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

Link to this section👀 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.

Trage die Vorlagen-Aufgaben-ID in utils/loggers/clearml/hpo.py ein und führe dann Folgendes aus:

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

Ändere task.execute_locally() zu task.execute(), um den Job in eine ClearML-Warteschlange zu verschieben, damit ein Remote-Agent ihn übernehmen kann.

ClearML HPO-Dashboard mit YOLOv5-Metriken

Link to this section🤯 Remote-Ausführung (Fortgeschritten)#

Das lokale Ausführen von HPO ist bequem, aber oft möchtest du Experimente auf leistungsfähigerer Hardware ausführen – einer On-Premise GPU-Maschine oder einer Cloud-Instanz. Das ist die Aufgabe des ClearML Agent:

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]

Link to this sectionKlonen, 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 über die Benutzeroberfläche einreihen

Link to this sectionEine 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.

Link to this sectionAuto-skalierende Worker#

ClearML wird mit Autoscalern geliefert, die Remote-Maschinen in AWS, GCP oder Azure starten, wenn eine Warteschlange ausstehende Experimente hat, sie in ClearML-Agenten umwandeln und sie herunterfahren, wenn die Arbeit beendet ist – du zahlst also nur für die Rechenleistung, die tatsächlich läuft.

Sieh dir das Video für den Einstieg unten an:

Video ansehen

Link to this sectionMehr erfahren#

Weitere Informationen zur Integration von ClearML mit Ultralytics-Modellen findest du in unserem ClearML-Integrationsleitfaden. Entdecke zudem, wie du deinen MLOps-Workflow mit weiteren Tools zur Experimentverfolgung verbessern kannst.

Kommentare