Callback
Entdecke, wie Callbacks das Training von Ultralytics YOLO26 optimieren. Lerne, Early Stopping, Checkpointing und benutzerdefiniertes Logging zu implementieren, um deine KI-Workflows zu verbessern.
Im Bereich der Softwareentwicklung und künstlichen Intelligenz (KI) ist ein Callback ein Stück ausführbarer Code, das als Argument an anderen Code übergeben wird, von dem dann erwartet wird, dass er das Argument zu einem bestimmten Zeitpunkt ausführt (zurückruft). Im spezifischen Kontext von Deep Learning (DL)-Frameworks sind Callbacks wesentliche Werkzeuge, mit denen Entwickler das Verhalten der Modelltrainings-Schleife anpassen können, ohne den eigentlichen Trainingscode selbst zu verändern. Sie fungieren als automatisierte Auslöser, die spezifische Aktionen in verschiedenen Phasen des Trainingsprozesses ausführen, wie etwa zu Beginn oder am Ende einer Epoche, eines Trainings-Batches oder der gesamten Trainingseinheit.
Link to this sectionDie Rolle von Callbacks beim 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 oft manuelle Überwachung erfordert. Callbacks führen Beobachtbarkeit und Kontrolle ein, sodass sich das System auf der Grundlage von Leistungsmetriken in Echtzeit selbst regulieren kann.
Bei der Verwendung von High-Level-Bibliotheken wie PyTorch oder TensorFlow bieten Callbacks eine Möglichkeit, Logik in den Optimierungsalgorithmus einzubringen. Wenn ein Modell beispielsweise gut lernt, könnte ein Callback den aktuellen Zustand speichern; wenn es aufhört zu lernen, könnte ein Callback den Prozess anhalten, um Ressourcen zu sparen. Dies macht den Workflow beim maschinellen Lernen (ML) effizienter und robuster.
Link to this sectionHäufige Anwendungen und Beispiele aus der Praxis#
Callbacks sind vielseitig und können für eine breite Palette von Aufgaben während der Modellüberwachung und Optimierung verwendet werden.
- Early Stopping: Eine der häufigsten Anwendungen ist Early Stopping. Dieser Callback überwacht eine bestimmte Metrik, wie etwa den Verlust bei Validierungsdaten. Wenn der Verlust über eine festgelegte Anzahl von Epochen nicht mehr abnimmt, stoppt der Callback das Training. Dies verhindert Overfitting und stellt sicher, dass das Modell gut auf neue Daten verallgemeinert, anstatt die Trainingsdaten auswendig zu lernen.
- Modell-Checkpointing: Bei langen Trainingsläufen können Hardwareausfälle katastrophal sein. Ein Checkpointing-Callback speichert die Modellgewichte in regelmäßigen Abständen (z. B. jede Epoche) oder nur dann, wenn das Modell einen neuen „Bestwert“ bei Metriken wie Genauigkeit oder mean average precision (mAP) erreicht. Dadurch stellst du sicher, dass du immer eine gespeicherte Version des am besten funktionierenden Modells hast.
- Learning Rate Scheduling: Die Lernrate steuert, wie stark sich das Modell bei jedem Update der Modellgewichte in Reaktion auf den geschätzten Fehler verändert. Ein Callback kann diese Rate dynamisch anpassen und sie verringern, wenn das Lernen stagniert, um dem Modell zu helfen, eine optimale Lösung zu finden – eine Technik, die oft als Learning Rate Decay bezeichnet wird.
- Protokollierung und Visualisierung: Callbacks werden häufig verwendet, um Tools zur Experimentnachverfolgung zu integrieren. Sie streamen Metriken an Dashboards wie TensorBoard oder MLflow, sodass Data Scientists Verlustfunktionen und Leistungsdiagramme in Echtzeit visualisieren können.
Link to this sectionImplementierung von Callbacks mit Ultralytics YOLO#
The Ultralytics library supports a robust callback system, allowing users to hook into events during the training of models like YOLO26. This is particularly useful for users managing workflows on the Ultralytics Platform who need custom logging or control logic.
Unten findest du ein prägnantes Beispiel dafür, wie man einen benutzerdefinierten Callback definiert und registriert, der am Ende jeder Trainingsepoche mithilfe der Python API 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)Link to this sectionCallbacks vs. Hooks#
While related, it is helpful to distinguish callbacks from hooks. In frameworks like PyTorch, hooks are generally lower-level functions attached to specific tensor operations or neural network layers to inspect or modify gradients and outputs during the forward or backward pass. In contrast, callbacks are typically higher-level abstractions tied to the training loop events (start, end, batch processing) rather than the mathematical computation graph itself.
Link to this sectionWeiterführende Literatur und Ressourcen#
Für alle, die ihr Verständnis für die Optimierung von Trainings-Workflows vertiefen möchten, ist die Auseinandersetzung mit Hyperparameter-Tuning der nächste logische Schritt. Zudem hilft das Verständnis der zugrunde liegenden Computer Vision (CV)-Aufgaben wie Objekterkennung und Instanzsegmentierung dabei, den Kontext zu verstehen, warum eine präzise Trainingssteuerung mittels Callbacks notwendig ist. Für die Verwaltung dieser Prozesse auf Unternehmensebene bietet die Ultralytics Platform integrierte Lösungen, die viele dieser Callback-gesteuerten Verhaltensweisen automatisieren.






