Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Batch Size

La dimensione del batch è il numero di esempi di addestramento che un modello elabora per ogni aggiornamento dei pesi. Determina l'uso della memoria GPU, la velocità di addestramento e il rumore dei gradienti.

La dimensione del batch è il numero di esempi di addestramento che un modello elabora insieme prima di aggiornare i pesi del modello. Invece di inviare l’intero dataset di addestramento alla rete neurale in una sola volta, l’addestramento lo suddivide in batch. Per ogni batch, il modello produce predizioni, la funzione di perdita le valuta, la retropropagazione calcola i gradienti e l’ottimizzatore compie un passo. La dimensione del batch è un iperparametro che determina contemporaneamente tre aspetti: quanta memoria GPU serve per l’addestramento, quanto dura ogni epoca e quanto è rumorosa ogni stima del gradiente.

Effetti della dimensione del batch sull’addestramento#

Ogni batch fornisce all’algoritmo di ottimizzazione una stima del gradiente sull’intero dataset, e la stima diventa più precisa man mano che cresce il batch. Il frammento PyTorch qui sotto misura direttamente tale precisione calcolando la media dei gradienti per campione su numerosi batch casuali di diverse dimensioni:

import torch

torch.manual_seed(0)

# Per-sample gradients of a squared-error loss for 10,000 samples
x = torch.randn(10_000)
y = 2 * x + torch.randn(10_000)
w = torch.tensor(0.0)
per_sample_grads = 2 * (w * x - y) * x

# Estimate the gradient from 1,000 random batches at each batch size
for batch_size in (8, 64, 512):
    idx = torch.randint(0, len(x), (1000, batch_size))
    batch_grads = per_sample_grads[idx].mean(dim=1)
    print(f"batch {batch_size:3d}: gradient std {batch_grads.std():.3f}")

La dispersione della stima del gradiente scende da 2.248 con una dimensione del batch pari a 8, a 0.771 con 64 e a 0.267 con 512. Ogni aumento di 8 volte della dimensione del batch riduce il rumore di circa 2.9 volte, un valore vicino alla radice quadrata di 8, come accade quando si calcola la media di campioni indipendenti.

Questo rumore determina il compromesso tra batch piccoli e grandi:

  • Batch piccoli (per esempio, da 8 a 32): aggiornamenti rumorosi e molti passaggi per epoca. Il rumore agisce da lieve regolarizzatore e spesso aiuta la discesa del gradiente stocastica (SGD) a generalizzare; i batch piccoli si adattano inoltre a hardware modesto, ma ogni epoca dura di più perché la GPU rimane parzialmente inattiva.
  • Batch grandi (per esempio, da 256 in su): gradienti più regolari, meno passaggi per epoca e utilizzo elevato dell’hardware. Come hanno rilevato Keskar et al., i batch molto grandi tendono a convergere verso minimi acuti che generalizzano peggio; inoltre, poiché comportano meno passaggi per epoca, richiedono un tasso di apprendimento proporzionalmente maggiore e un periodo di warmup. Applicando questa regola di scalatura lineare, Goyal et al. hanno addestrato ResNet-50 su ImageNet con una dimensione del batch di 8,192 usando 256 GPU in un’ora, raggiungendo un’accuratezza pari a quella dell’addestramento con batch piccoli.

Limiti di memoria e accumulo dei gradienti#

La memoria GPU deve contenere i pesi del modello, lo stato dell’ottimizzatore e le attivazioni intermedie necessarie alla retropropagazione; inoltre, la memoria occupata dalle attivazioni cresce linearmente con la dimensione del batch e la risoluzione delle immagini. Se un batch non entra in memoria, l’addestramento si interrompe con un errore di memoria esaurita (OOM). L’addestramento a precisione mista riduce all’incirca della metà la memoria occupata dalle attivazioni, mentre l’accumulo dei gradienti consente di raggiungere un batch effettivo più grande sommando i gradienti di diversi batch piccoli prima di ogni aggiornamento dei pesi.

L’addestramento Ultralytics YOLO include questa funzionalità: accumula i gradienti finché non ha elaborato circa 64 immagini, la nbs dimensione nominale del batch, quindi, dopo il warmup, l’impostazione predefinita batch=16 esegue un aggiornamento dei pesi ogni quattro batch. Impostando batch=-1 si avvia AutoBatch, che seleziona il batch più grande compatibile con circa il 60% della memoria CUDA libera e ripiega su una dimensione del batch pari a 16 su dispositivi CPU e Apple MPS.

from ultralytics import YOLO

# Carica un modello YOLO26n preaddestrato
model = YOLO("yolo26n.pt")

# batch=-1 consente ad AutoBatch di scegliere la dimensione del batch in base alla memoria GPU disponibile
# Usa un numero intero (batch=16) per una dimensione fissa oppure un numero decimale (batch=0.70) per una frazione della memoria
results = model.train(data="coco8.yaml", epochs=5, batch=-1)

Prima che inizi l’addestramento, AutoBatch esegue il modello YOLO26 con dimensioni del batch da 1 a 16 (fino a 64 sulle GPU con almeno 16 GB), adatta una retta ai valori di memoria misurati e la risolve per determinare la dimensione del batch che raggiunge la frazione obiettivo.

  • Epoca e iterazione: un’epoca è un passaggio sull’intero dataset, mentre un’iterazione è un aggiornamento dei pesi. Il numero di iterazioni per epoca è pari alla dimensione del dataset divisa per la dimensione del batch, arrotondando per eccesso; quindi, 1,000 immagini con una dimensione del batch di 100 richiedono 10 iterazioni.
  • Mini-batch: nella maggior parte dei testi sul deep learning è sinonimo di batch. In senso stretto, la discesa del gradiente batch usa l’intero dataset per ogni aggiornamento, la discesa del gradiente stocastica usa un singolo esempio e la discesa del gradiente mini-batch si colloca tra le due: è il metodo usato per addestrare quasi tutte le reti moderne.
  • Normalizzazione batch: uno strato che normalizza le attivazioni usando la media e la varianza del batch corrente; le sue statistiche diventano quindi inaffidabili con batch molto piccoli. La Group Normalization evita questa dipendenza e ha registrato un errore inferiore del 10.6% rispetto alla normalizzazione batch su ResNet-50 e ImageNet con una dimensione del batch pari a 2.
  • Dimensione del batch in inferenza: al momento della distribuzione, il batching scambia la latenza di inferenza con la velocità di elaborazione. Raggruppare i fotogrammi di più telecamere aumenta il numero di immagini elaborate al secondo, mentre ogni fotogramma attende che il batch sia completo.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning