Batch

[bach]

Gruppo di esempi processati insieme dal modello durante il training. Permette di sfruttare GPU e stabilizzare i gradienti.

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.