Un batch è un gruppo di esempi che il modello processa insieme in un singolo step di training. Invece di fare un esempio alla volta (lentissimo) o tutto il dataset insieme (impossibile per memoria), si lavora a gruppi.
Tipiche dimensioni di batch:
- Modelli piccoli su una singola GPU: 16, 32, 64.
- Pretraining LLM su cluster GPU: anche 4 milioni di token per batch (effettivo, distribuito su tante GPU).
- Fine-tuning con LoRA: 1-8, dipende da quanto VRAM hai.
Vantaggi:
- GPU sfruttata: le GPU sono fatte per fare tante moltiplicazioni in parallelo. Un solo esempio le spreca.
- Gradiente più stabile: la media su tanti esempi è meno rumorosa di quella su uno solo. Il gradient descent converge meglio.
Trucchi pratici quando non hai abbastanza VRAM:
- Gradient accumulation: simuli un batch grande accumulando gradienti su batch piccoli. Più lento ma funziona con poca memoria.
- Gradient checkpointing: ricalcoli alcune attivazioni invece di salvarle. Risparmia memoria a costo di tempo.
Nota importante: batch size e learning rate vanno scelti insieme. Se raddoppi il batch, di solito devi alzare il learning rate (regola di Linear Scaling). Non è automatica, ma è il punto di partenza.