Callback
Scopri come i callback ottimizzano l'addestramento di Ultralytics YOLO26. Impara a implementare early stopping, checkpointing e logging personalizzato per migliorare i tuoi flussi di lavoro IA.
Nell'ambito dell'ingegneria del software e dell'intelligenza artificiale (IA), un callback è un frammento di codice eseguibile passato come argomento ad altro codice, che deve poi eseguire (chiamare) tale argomento in un momento prestabilito. Nel contesto specifico dei framework di deep learning (DL), i callback sono strumenti essenziali che consentono agli sviluppatori di personalizzare il comportamento del ciclo di addestramento del modello senza modificare il codice di addestramento principale. Agiscono come trigger automatizzati che eseguono azioni specifiche in varie fasi del processo di addestramento, come all'inizio o alla fine di un'epoca, di un batch di addestramento o dell'intera sessione di addestramento.
Link to this sectionIl ruolo dei callback nel machine learning#
L'addestramento di una rete neurale complessa può richiedere ore o addirittura giorni. Senza i callback, il processo di addestramento è essenzialmente una "scatola nera" che viene eseguita fino al completamento, richiedendo spesso una supervisione manuale. I callback introducono osservabilità e controllo, consentendo al sistema di autoregolarsi in base a metriche di performance in tempo reale.
Quando si utilizzano librerie di alto livello come PyTorch o TensorFlow, i callback forniscono un modo per inserire logica all'interno dell'algoritmo di ottimizzazione. Ad esempio, se un modello sta imparando bene, un callback potrebbe salvare lo stato corrente; se smette di imparare, potrebbe interrompere il processo per risparmiare risorse. Ciò rende il flusso di lavoro di machine learning (ML) più efficiente e robusto.
Link to this sectionApplicazioni comuni ed esempi reali#
I callback sono versatili e possono essere utilizzati per un'ampia gamma di attività durante il monitoraggio del modello e l'ottimizzazione.
- Early Stopping: Uno degli utilizzi più comuni è l'early stopping. Questo callback monitora una metrica specifica, come la perdita sui dati di convalida. Se la perdita smette di diminuire per un numero stabilito di epoche, il callback interrompe l'addestramento. Ciò previene l'overfitting, garantendo che il modello si generalizzi bene su nuovi dati invece di memorizzare semplicemente i dati di addestramento.
- Model Checkpointing: In sessioni di addestramento lunghe, i guasti hardware possono essere catastrofici. Un callback di checkpoint salva i pesi del modello a intervalli regolari (ad esempio, ogni epoca) o solo quando il modello ottiene un nuovo punteggio "migliore" su metriche come l'accuratezza o la precisione media media (mAP). Ciò garantisce di avere sempre una versione salvata del modello con le migliori prestazioni.
- Learning Rate Scheduling: Il learning rate controlla quanto il modello cambia in risposta all'errore stimato ogni volta che i pesi vengono aggiornati. Un callback può regolare dinamicamente questo tasso, riducendolo quando l'apprendimento rallenta per aiutare il modello a convergere su una soluzione ottimale, una tecnica spesso definita come learning rate decay.
- Logging e visualizzazione: I callback vengono frequentemente utilizzati per l'integrazione con strumenti di tracciamento degli esperimenti. Trasmettono le metriche a dashboard come TensorBoard o MLflow, consentendo ai data scientist di visualizzare le funzioni di perdita e i grafici delle prestazioni in tempo reale.
Link to this sectionImplementare i callback con 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.
Di seguito è riportato un esempio conciso di come definire e registrare un callback personalizzato che stampa un messaggio alla fine di ogni epoca di addestramento utilizzando la Python API:
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 sectionCallback vs. Hook#
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 sectionUlteriori letture e risorse#
Per chi desidera approfondire la comprensione di come ottimizzare i flussi di lavoro di addestramento, esplorare l'ottimizzazione degli iperparametri è un logico passo successivo. Inoltre, comprendere le attività di computer vision (CV) sottostanti, come l'object detection e l'instance segmentation, fornirà il contesto sul perché sia necessario un controllo preciso dell'addestramento tramite callback. Per la gestione di questi processi a livello aziendale, la Ultralytics Platform offre soluzioni integrate che automatizzano molti di questi comportamenti basati sui callback.






