Glossario

Richiamo

Esplora il ruolo essenziale dei callback nell'apprendimento automatico, strumenti che monitorano, controllano e automatizzano la formazione dei modelli per migliorare l'accuratezza, la flessibilità e l'efficienza.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

Le callback sono funzioni o insiemi di funzioni eseguite in fasi specifiche durante l'esecuzione di un processo più ampio, come la formazione di un modello di apprendimento automatico. Nel contesto dell'intelligenza artificiale e del ML, le callback forniscono un potente meccanismo per monitorare gli stati interni, influenzare il comportamento del ciclo di formazione e automatizzare le azioni senza modificare il codice principale del framework di formazione. Agiscono come ganci nella pipeline di addestramento, consentendo agli sviluppatori di iniettare logica personalizzata in punti predefiniti come l'inizio o la fine di un'epoca, di un batch o dell'intero processo di addestramento.

Capire le callback nell'apprendimento automatico

Durante l'addestramento del modello, si verificano diversi eventi in sequenza: inizia l'addestramento, si verifica una Epoca inizia, viene elaborato un batch, avviene la convalida, termina un'epoca e infine si conclude l'addestramento. Le callback ti permettono di attivare azioni specifiche legate a questi eventi. Per esempio, potresti voler salvare i pesi del modello ogni volta che l'accuratezza della convalida migliora, registrare le metriche in uno strumento di visualizzazione come TensorBoardoppure interrompere la formazione in anticipo se il modello smette di migliorare. Quadri come Keras e biblioteche come la ultralytics I pacchetti Python utilizzano molto le callback per offrire flessibilità ed estensibilità.

Callback in Ultralytics

Il motore di formazione di Ultralytics fornisce un sistema di callback che vengono attivati in vari punti durante il processo di formazione. formazione, convalida, Previsione, e esportazione processi. Questi eventi includono on_train_start, on_epoch_end, on_fit_epoch_end (che include la convalida), on_batch_end, on_train_ende molti altri. Gli utenti possono definire callback personalizzati per eseguire azioni come il logging dettagliato, l'invio di notifiche o l'interazione con piattaforme quali Ultralytics HUB.

from ultralytics import YOLO
from ultralytics.engine.callbacks import BaseCallback

# Define a simple custom callback

class MyCallback(BaseCallback):
def on_epoch_end(self, trainer): # This code will run at the end of each epoch
print(f"Epoch {trainer.epoch + 1} finished.") # Example: Access metrics like validation loss
if trainer.metrics:
val_loss = trainer.metrics.get('val/loss', None) # Example metric key, adjust as needed
if val_loss is not None:
print(f"Validation loss: {val_loss:.4f}")

# Load a model

model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights

# Initialize your callback

my_callback = MyCallback()

# Add the callback to the training process

# Note: Direct addition via API might vary; often done via configuration or extending Trainer

# For demonstration, assume a mechanism exists like adding to a list or overriding methods.

# In Ultralytics, callbacks are often managed internally or via specific integrations.

# A conceptual example of how one might use it if Trainer exposed callbacks directly:

# trainer.add_callback(my_callback) # Hypothetical method

# Train the model (the callback methods are triggered automatically by the Trainer)

# The actual mechanism involves the Trainer checking for registered callbacks for specific events.

try: # This is a simplified representation. Callbacks are typically integrated deeper. # We can simulate adding callback logic by overriding trainer methods or using signals if available. # The Ultralytics framework automatically handles registered internal and integration callbacks. # To add custom behaviour like this, you might need to modify the source or use provided extension points.
print("Training started (callback logic would be triggered internally)...") # Example: Manually trigger for demonstration if needed for testing callback logic # my_callback.on_epoch_end(trainer_mock_object)
results = model.train(data='coco128.yaml', epochs=3, imgsz=640) # Training triggers internal events
print("Training finished.")

except Exception as e:
print(f"An error occurred: {e}")

# Example of using an existing integration callback (e.g., TensorBoard)

# This is usually enabled via arguments or configuration:

# results = model.train(data='coco128.yaml', epochs=3, imgsz=640, tensorboard=True)


Applicazioni del mondo reale

Le callback consentono numerose funzionalità utili durante lo sviluppo di modelli ML:

  • Checkpoint del modello: Salvataggio automatico del modello (o solo dei suoi pesi) periodicamente o ogni volta che le prestazioni su un set di dati di convalida migliorano. In questo modo si evita di perdere i progressi e si può recuperare la versione migliore del modello. I framework spesso forniscono callback integrati per questo scopo.
  • Arresto anticipato: Monitoraggio di una metrica specifica (ad esempio, la perdita di convalida o l'accuratezza) e arresto del processo di formazione se la metrica cessa di migliorare per un numero predefinito di epoche (pazienza). In questo modo si evita l'overfitting e si risparmiano risorse computazionali.
  • Programmazione del tasso di apprendimento: Regolazione dinamica del tasso di apprendimento durante l'addestramento. Ad esempio, ridurre il tasso di apprendimento quando il miglioramento del modello raggiunge un livello minimo può aiutare il modello a convergere in modo più efficace.
  • Registrazione e visualizzazione: Invio di log e metriche (come perdita e accuratezza) a strumenti di monitoraggio come TensorBoard o piattaforme cloud come Weights & Biases per la visualizzazione in tempo reale e il monitoraggio degli esperimenti. Ultralytics offre integrazioni perfette per W&B e Comet ML.
  • Monitoraggio delle risorse: Tracciamento dell'utilizzo dell'hardwareGPUutilizzo di CPU , memoria) durante la formazione per identificare i colli di bottiglia o ottimizzare l'allocazione delle risorse, particolarmente importante negli ambienti di cloud computing.

Le callback sono fondamentali per creare flussi di lavoro di apprendimento automatico flessibili, automatizzati e osservabili, consentendo agli sviluppatori di estendere e personalizzare i processi di formazione in modo efficiente. Si differenziano leggermente dagli ascoltatori di eventi generici del software perché sono strettamente integrati nelle fasi specifiche del ciclo di vita della formazione e della valutazione dell'apprendimento automatico.

Leggi tutto