Yolo Vision Shenzhen
Shenzhen
Iscriviti ora
Glossario

Dimensione del Batch

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 dinamica della formazione con i batch

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.

  • Batch di piccole dimensioni: l'utilizzo di un numero ridotto (ad esempio 8 o 16) comporta aggiornamenti "rumorosi". Sebbene la stima del gradiente sia meno accurata per il set di dati nel suo complesso, 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ò rallentare l'addestramento in termini di tempo reale a causa del sovraccarico.
  • Dimensioni dei batch grandi: un batch più grande (ad esempio, 128 o 256) fornisce una stima più accurata del gradiente, portando a una convergenza più fluida della funzione di perdita. Consente una massiccia parallelizzazione su hardware moderno, velocizzando significativamente il calcolo. Tuttavia, se il batch è troppo grande, il modello potrebbe stabilizzarsi su minimi bruschi e subottimali, portando a un overfitting e a una ridotta capacità di generalizzazione a nuovi dati.

Implicazioni relative all'hardware e alla memoria

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.

Distinguere i concetti correlati

Per configurare efficacemente l'addestramento, è essenziale distinguere la dimensione del batch dagli altri termini temporali nel ciclo di addestramento .

  • Dimensione batch vs. Epoca: un'epoca rappresenta un passaggio completo attraverso l'intero set di dati di addestramento. La dimensione del batch determina in quanti blocchi vengono suddivisi i dati all'interno di quell'epoca. Ad esempio, se si dispone di 1.000 immagini e una dimensione batch di 100, saranno necessarie 10 iterazioni per completare un'epoca.
  • Dimensione del batch vs. iterazione: Un'iterazione (o passo) è l'atto di 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.
  • Dimensione del batch vs. Normalizzazione del batch: Sebbene condividano lo stesso nome, la Normalizzazione del batch è 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 dalla dimensione del batch; se la dimensione del batch è troppo piccola (ad esempio, 2), le stime statistiche diventano inaffidabili, con un potenziale degrado delle prestazioni.

Applicazioni nel mondo reale

La regolazione delle dimensioni dei batch è una necessità di routine quando si implementano soluzioni di visione artificiale in vari settori industriali.

  1. Immagini mediche ad alta fedeltà: nel campo dell' intelligenza artificiale in ambito sanitario, i professionisti lavorano spesso con dati volumetrici 3D come risonanze magnetiche o TAC. Questi file sono incredibilmente densi e richiedono molta memoria. Per eseguire attività come l'analisi di immagini mediche o la complessa segmentazione delle immagini senza mandare in crash il sistema, gli ingegneri spesso riducono la dimensione del batch a un numero molto piccolo, a volte anche a un batch di 1. In questo caso, la priorità è l'elaborazione dei dettagli ad alta risoluzione piuttosto che la velocità di addestramento grezza.
  2. Controllo qualità industriale: al contrario, nell' AI nella produzione, la velocità è fondamentale. I sistemi automatizzati che ispezionano i prodotti su un nastro trasportatore devono elaborare migliaia di immagini all'ora. Durante l' inferenza, gli ingegneri potrebbero aggregare i feed delle telecamere in arrivo in batch più grandi per massimizzare l'utilizzo dei dispositivi AI edge, garantendo un throughput elevato per il rilevamento dei difetti in tempo reale .

Configurazione della dimensione del batch in Python

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.

Unitevi alla comunità di Ultralytics

Entra nel futuro dell'AI. Connettiti, collabora e cresci con innovatori globali

Iscriviti ora