Scopri come la dimensione dei batch influisce sulla velocità e sulla precisione dell'addestramento del machine learning. Esplora i limiti hardware e ottimizza Ultralytics utilizzando AutoBatch.
Nel campo dell'apprendimento automatico e in particolare dell'apprendimento profondo, la dimensione del batch si riferisce al numero di esempi di addestramento utilizzati in una iterazione dell'addestramento del modello. Anziché inserire tutti i dati di addestramento nella rete neurale in una sola volta, cosa spesso impossibile dal punto di vista computazionale a causa dei limiti di memoria, il set di dati viene suddiviso in sottoinsiemi più piccoli chiamati batch. Il modello elabora un batch, calcola l'errore e aggiorna i suoi pesi interni tramite backpropagation prima di passare al batch successivo. Questo iperparametro svolge un ruolo fondamentale nel determinare sia la velocità dell'addestramento che la stabilità del processo di apprendimento .
La scelta della dimensione del batch altera in modo sostanziale il modo in cui l'algoritmo di ottimizzazione, tipicamente una variante della discesa del gradiente stocastico, naviga nel panorama delle perdite.
I professionisti devono spesso selezionare una dimensione del batch in base alle limitazioni hardware piuttosto che a preferenze puramente teoriche. I modelli di deep learning, in particolare le architetture di grandi dimensioni come i trasformatori o le reti convoluzionali avanzate, sono memorizzati nella VRAM di una GPU.
Quando si utilizza NVIDIA CUDA per l'accelerazione, la VRAM deve contenere i parametri del modello, il batch di dati di input e gli output di attivazione intermedi necessari per il calcolo del gradiente. Se la dimensione del batch supera la memoria disponibile, l'addestramento andrà in crash con un errore "Out of Memory" (OOM). Tecniche come l'addestramento a precisione mista sono spesso impiegate per ridurre l'utilizzo della memoria, consentendo dimensioni di batch più grandi sullo stesso hardware.
Per configurare efficacemente l'addestramento, è essenziale distinguere la dimensione del batch dagli altri termini temporali nel ciclo di addestramento .
La regolazione delle dimensioni dei batch è una necessità di routine quando si implementano soluzioni di visione artificiale in vari settori industriali.
Quando si utilizza la funzione Pacchetto Ultralytics Python, impostare la dimensione del batch
è semplice. È possibile specificare un numero intero fisso o utilizzare il dinamico batch=-1 impostazione, che utilizza
il Funzione AutoBatch per calcolare automaticamente
la dimensione massima del batch che l'hardware è in grado di gestire in modo sicuro.
L'esempio seguente mostra come addestrare un modello YOLO26, l'ultimo standard in termini di velocità e precisione, utilizzando un'impostazione batch specifica.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)
Per gestire esperimenti su larga scala e visualizzare come le diverse dimensioni dei batch influiscono sulle metriche di addestramento, strumenti come la Ultralytics forniscono un ambiente completo per la registrazione e il confronto delle esecuzioni. Una corretta messa a punto degli iperparametri della dimensione del batch è spesso il passo finale per ottenere le migliori prestazioni dal proprio modello.