Batch Size
Impara come la dimensione del batch influisce sulla velocità e sull'accuratezza dell'addestramento nel machine learning. Esplora i vincoli hardware e ottimizza Ultralytics YOLO26 usando AutoBatch.
Nel campo del machine learning e in particolare del deep learning, il Batch Size indica il numero di esempi di addestramento utilizzati in un'iterazione dell'addestramento del modello. Invece di fornire l'intero set di training data alla rete neurale in un'unica soluzione, cosa spesso computazionalmente impossibile a causa dei limiti di memoria, il dataset viene suddiviso in sottoinsiemi più piccoli chiamati batch. Il modello elabora un batch, calcola l'errore e aggiorna i suoi model weights interni tramite la backpropagation prima di passare al batch successivo. Questo iperparametro svolge un ruolo fondamentale nel determinare sia la velocità di addestramento che la stabilità del processo di apprendimento.
Le dinamiche dell'addestramento con i batch#
La scelta del batch size altera radicalmente il modo in cui l'algoritmo di ottimizzazione, tipicamente una variante della stochastic gradient descent, esplora lo spazio della perdita (loss landscape).
- Batch Size ridotte: L'utilizzo di un numero ridotto (ad esempio 8 o 16) porta ad aggiornamenti "rumorosi". Sebbene la stima del gradiente sia meno accurata per l'intero set di dati, questo rumore può talvolta aiutare il modello a sfuggire ai minimi locali, portando potenzialmente a una migliore generalizzazione. Tuttavia, i batch più piccoli richiedono più aggiornamenti per epoca, il che può rendere l'addestramento più lento in termini di tempo effettivo a causa dell'overhead.
- Batch Size elevati: Un batch più grande (ad esempio 128 o 256) fornisce una stima più accurata del gradiente, portando a una convergenza più fluida della loss function. Consente una massiccia parallelizzazione sull'hardware moderno, accelerando notevolmente il calcolo. Tuttavia, se il batch è troppo grande, il modello potrebbe stabilizzarsi su minimi accentuati e non ottimali, causando overfitting e riducendo la capacità di generalizzare su nuovi dati.
Implicazioni per l'hardware e la memoria#
Spesso i professionisti devono selezionare un batch size in base ai limiti hardware piuttosto che per pura preferenza teorica. I modelli di deep learning, soprattutto le grandi architetture come i transformer o le reti neurali 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 il batch size supera la memoria disponibile, l'addestramento si interromperà con un errore "Out of Memory" (OOM). Tecniche come l'addestramento a mixed precision vengono spesso impiegate per ridurre l'utilizzo della memoria, consentendo batch size maggiori sullo stesso hardware.
Distinguere concetti correlati#
Per configurare efficacemente l'addestramento, è essenziale distinguere la batch size da altri termini temporali nel ciclo di addestramento.
- Batch Size vs. Epoch: Un'epoca rappresenta un passaggio completo attraverso l'intero dataset di addestramento. Il batch size determina in quanti blocchi viene suddiviso il dato all'interno di quell'epoca. Ad esempio, se hai 1.000 immagini e un batch size di 100, ci vorranno 10 iterazioni per completare un'epoca.
- Batch Size vs. Iteration: Un'iterazione (o passaggio) consiste nell'elaborare un batch e aggiornare i pesi. Il numero totale di iterazioni nell'addestramento è il numero di batch per epoca moltiplicato per il numero totale di epoche.
- Batch Size vs. Batch Normalization: Sebbene condividano il nome, la Batch Normalization è un tipo di livello specifico che normalizza gli input del livello in base alla media e alla varianza del batch corrente. Questa tecnica dipende fortemente dal batch size; se il batch size è troppo piccolo (ad esempio 2), le stime statistiche diventano inaffidabili, potenzialmente degradando le prestazioni.
Applicazioni nel mondo reale#
Regolare la batch size è una necessità di routine quando si implementano soluzioni di computer vision in vari settori.
-
Imaging medico ad alta fedeltà: Nel campo dell'AI in healthcare, i professionisti lavorano spesso con dati volumetrici 3D come scansioni MRI o TAC. Questi file sono estremamente densi e richiedono molta memoria. Per eseguire attività come l'medical image analysis o la complessa image segmentation senza mandare in crash il sistema, gli ingegneri riducono spesso il batch size a un numero molto piccolo, a volte persino un batch pari a 1. In questo caso, la priorità è elaborare dettagli ad alta risoluzione anziché la velocità di addestramento pura.
-
Controllo qualità industriale: Al contrario, nell'AI in manufacturing, la velocità è fondamentale. I sistemi automatizzati che ispezionano i prodotti su un nastro trasportatore devono elaborare migliaia di immagini all'ora. Durante l'inference, gli ingegneri possono aggregare i feed di telecamere in arrivo in batch più grandi per massimizzare l'utilizzo dei dispositivi di edge AI, garantendo un elevato throughput per il rilevamento dei difetti in tempo reale.
Configurare la Batch Size in Python#
Quando si utilizza il Ultralytics Python package, impostare il batch size è semplice. Puoi specificare un numero intero fisso oppure usare l'impostazione dinamica batch=-1, che sfrutta la AutoBatch feature per calcolare automaticamente il batch size massimo che il tuo hardware può gestire in sicurezza.
Il seguente esempio mostra come addestrare un YOLO26 model — l'ultimo standard per velocità e precisione — utilizzando un'impostazione di 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 la gestione di esperimenti su larga scala e la visualizzazione di come i diversi batch size influiscono sulle metriche di addestramento, strumenti come la Ultralytics Platform offrono un ambiente completo per la registrazione e il confronto delle esecuzioni. Una corretta hyperparameter tuning del batch size è spesso il passaggio finale per ottenere le migliori prestazioni dal tuo modello.






