Callback
Entdecke, wie Callbacks das Training von Ultralytics YOLO26 optimieren. Erfahre, wie du vorzeitiges Beenden, Checkpoints und benutzerdefiniertes Protokollieren implementierst, um deine KI-Workflows zu verbessern.
Im Bereich der Softwareentwicklung und künstlichen Intelligenz (AI) ist ein Callback ein ausführbarer Codeabschnitt, der als Argument an anderen Code übergeben wird. Dieser soll das Argument zu einem bestimmten Zeitpunkt ausführen (zurückrufen). Im spezifischen Kontext von Frameworks für Deep Learning (DL) sind Callbacks wichtige Werkzeuge, mit denen Entwickler das Verhalten der Schleife für das Modelltraining anpassen können, ohne den eigentlichen Trainingscode zu ändern. Sie fungieren als automatisierte Auslöser, die in verschiedenen Phasen des Trainingsprozesses bestimmte Aktionen ausführen, etwa zu Beginn oder am Ende einer Epoche, eines Trainings-Batches oder der gesamten Trainingssitzung.
Die Rolle von Callbacks im maschinellen Lernen#
Das Training eines komplexen neuronalen Netzes kann Stunden oder sogar Tage dauern. Ohne Callbacks ist der Trainingsprozess im Wesentlichen eine „Blackbox“, die bis zum Abschluss läuft und häufig manuelle Überwachung erfordert. Callbacks schaffen Beobachtbarkeit und Kontrolle, sodass sich das System anhand von Leistungskennzahlen in Echtzeit selbst regulieren kann.
Bei der Verwendung von Bibliotheken auf höherer Abstraktionsebene wie PyTorch oder TensorFlow bieten Callbacks eine Möglichkeit, Logik in den Optimierungsalgorithmus einzuschleusen. Wenn ein Modell beispielsweise gut lernt, kann ein Callback den aktuellen Zustand speichern. Wenn es nicht mehr lernt, kann ein Callback den Prozess anhalten, um Ressourcen zu sparen. Dadurch wird der Workflow für maschinelles Lernen (ML) effizienter und robuster.
Häufige Anwendungen und Beispiele aus der Praxis#
Callbacks sind vielseitig einsetzbar und können während der Modellüberwachung und Optimierung für eine Vielzahl von Aufgaben verwendet werden.
- Frühzeitiges Beenden: Eine der häufigsten Anwendungen ist das frühzeitige Beenden. Dieser Callback überwacht eine bestimmte Kennzahl, beispielsweise den Verlust auf den Validierungsdaten. Wenn der Verlust über eine festgelegte Anzahl von Epochen nicht mehr sinkt, beendet der Callback das Training. Dadurch wird Überanpassung verhindert und sichergestellt, dass das Modell gut auf neue Daten generalisiert, anstatt sich die Trainingsdaten lediglich zu merken.
- Speichern von Modellprüfpunkten: Bei langen Trainingsläufen können Hardwareausfälle katastrophale Folgen haben. Ein Callback zum Speichern von Prüfpunkten speichert die Modellgewichte in regelmäßigen Abständen (z. B. nach jeder Epoche) oder nur dann, wenn das Modell bei Kennzahlen wie Genauigkeit oder mittlerer durchschnittlicher Präzision (mAP) einen neuen Bestwert erreicht. So steht dir immer eine gespeicherte Version des leistungsstärksten Modells zur Verfügung.
- Planung der Lernrate: Die Lernrate steuert, wie stark sich das Modell als Reaktion auf den geschätzten Fehler verändert, wenn die Modellgewichte aktualisiert werden. Ein Callback kann diese Rate dynamisch anpassen und sie verringern, wenn das Lernen stagniert. So kann das Modell besser gegen eine optimale Lösung konvergieren. Diese Technik wird häufig als Abklingen der Lernrate bezeichnet.
- Protokollierung und Visualisierung: Callbacks werden häufig verwendet, um Integrationen mit Werkzeugen zur Versuchsverfolgung zu realisieren. Sie übertragen Kennzahlen an Dashboards wie TensorBoard oder MLflow, sodass Datenwissenschaftler Verlustfunktionen und Leistungskurven in Echtzeit visualisieren können.
Callbacks mit Ultralytics YOLO implementieren#
Die Ultralytics-Bibliothek unterstützt ein leistungsfähiges Callback-System, mit dem Benutzer während des Trainings von Modellen wie YOLO26 auf Ereignisse reagieren können. Dies ist besonders nützlich für Benutzer, die Workflows auf der Ultralytics Platform verwalten und eine benutzerdefinierte Protokollierung oder Steuerungslogik benötigen.
Nachfolgend findest du ein kurzes Beispiel dafür, wie du mithilfe der Python API einen benutzerdefinierten Callback definierst und registrierst, der am Ende jeder Trainingsepoche eine Nachricht ausgibt:
from ultralytics import YOLO
# Define a custom callback function
def on_train_epoch_end(trainer):
"""Callback function to execute at the end of each training epoch."""
print(f"Epoch {trainer.epoch + 1} complete. Current Fitness: {trainer.fitness}")
# Load the YOLO26 model (latest generation)
model = YOLO("yolo26n.pt")
# Register the custom callback to the model
model.add_callback("on_train_epoch_end", on_train_epoch_end)
# Train the model with the callback active
model.train(data="coco8.yaml", epochs=3)Callbacks und Hooks im Vergleich#
Obwohl sie verwandt sind, ist es hilfreich, Callbacks von Hooks zu unterscheiden. In Frameworks wie PyTorch handelt es sich bei Hooks im Allgemeinen um Funktionen auf niedrigerer Ebene, die an bestimmte Tensor-Operationen oder Schichten neuronaler Netze angehängt werden, um Gradienten und Ausgaben während des Vorwärts- oder Rückwärtsdurchlaufs zu untersuchen oder zu verändern. Callbacks sind dagegen typischerweise Abstraktionen auf höherer Ebene, die an Ereignisse der Trainingsschleife (Start, Ende, Batch-Verarbeitung) gebunden sind und nicht an den mathematischen Berechnungsgraphen selbst.
Weiterführende Informationen und Ressourcen#
Wenn du dein Verständnis für die Optimierung von Trainingsworkflows vertiefen möchtest, ist die Auseinandersetzung mit der Hyperparameteroptimierung ein sinnvoller nächster Schritt. Außerdem liefert das Verständnis der zugrunde liegenden Aufgaben der Computer Vision (CV), etwa der Objekterkennung und der Instanzsegmentierung, den nötigen Kontext dafür, warum eine präzise Trainingssteuerung durch Callbacks erforderlich ist. Für die Verwaltung dieser Prozesse auf Unternehmensebene bietet die Ultralytics Platform integrierte Lösungen, die viele dieser durch Callbacks gesteuerten Abläufe automatisieren.









