Risorse/Addestramento del modello/Cosa accade durante l'addestramento

Concetto

Epoca, batch e step

Un batch è il gruppo di esempi alla base di un aggiornamento dei pesi, uno step è un singolo aggiornamento e un'epoca è un passaggio completo sui dati di addestramento. Insieme determinano la frequenza con cui il modello cambia e quante volte analizza ciascun esempio.

Capitolo 6Lettura di 4 min4 riferimenti

Tre unità di addestramento

I dati di addestramento non vengono forniti al modello né un esempio alla volta né tutti in una volta. Vengono suddivisi in batch. Il modello elabora un batch, calcola la media dell'errore su tutti i suoi token target e aggiorna i propri pesi una volta. Quel singolo aggiornamento è uno step, chiamato anche iterazione. Quando ogni esempio di addestramento è stato utilizzato una volta, un'epoca è completa e i dati vengono solitamente rimescolati prima di quella successiva, in modo che i batch si combinino in modo diverso ogni volta.

TermineCosa conteggiaTipico nel fine-tuning
BatchGli esempi elaborati insieme prima di un aggiornamentoDa una manciata a qualche decina di esempi; spesso Auto
StepUn aggiornamento dei pesiDa decine a migliaia per esecuzione
EpocaUn passaggio completo su tutti gli esempi di addestramento1–3 per il fine-tuning supervisionato
EPOCA 1 · MESCOLATIpasso 1passo 2passo 3EPOCA 2 · RIMESCOLATOpasso 4passo 5passo 624 esempi ÷ dimensione del batch 8 = 3 passi per epoca
24 esempi con una dimensione del batch pari a 8. Ogni batch fornisce un aggiornamento dei pesi (un passaggio), quindi un'epoca corrisponde a 3 passaggi e due epoche a 6. I dati vengono mescolati a ogni epoca: l'esempio evidenziato viene visto una volta per epoca, ogni volta in un batch diverso.

L'aritmetica

Batch, step ed epoche
effective batch  = per-device batch × gradient accumulation × number of GPUs
steps per epoch  = ceil(training examples ÷ effective batch)
total steps      = steps per epoch × epochs
tokens processed = tokens in the training file × epochs
800 esempi, batch size 8, 3 epoche
  1. Step per epoca: 800 ÷ 8 = 100 step.
  2. Step totali: 100 × 3 epoche = 300 step. I pesi del modello vengono modificati 300 volte.
  3. Volte in cui ogni esempio viene visto: 3, una per epoca, ogni volta in un batch diverso poiché i dati vengono rimescolati.
  4. Un warm-up del 5%: 0,05 × 300 = 15 step di incremento graduale prima di raggiungere il learning rate completo.
  5. Gli stessi dati con batch size 32: 800 ÷ 32 = 25 step per epoca, 75 in totale. Aggiornamenti inferiori di numero e più fluidi, solitamente abbinati a un learning rate leggermente più alto.
  6. Token elaborati: se il file di addestramento contiene 400.000 token, tre epoche ne elaborano 1.200.000, che corrisponde a quanto fatturato con la tariffazione per token.

Quando i numeri non sono divisibili esattamente, l'ultimo batch di un'epoca è più piccolo: 810 esempi in batch da 8 producono 101 batch completi e uno da 2. Alcune configurazioni di addestramento mantengono quel batch parziale, altre lo scartano. In entrambi i casi l'effetto su un'esecuzione è trascurabile.

Perché la batch size è importante

Il gradiente di ogni step è una stima della vera direzione discendente, calcolata a partire dagli esempi in quel batch. Un batch piccolo fornisce una stima rumorosa: i singoli esempi trascinano i pesi in varie direzioni, ma ci sono molti aggiornamenti per epoca. Un batch grande fa la media di più esempi, quindi ogni step punta in modo più affidabile verso il basso, ma ci sono meno step e ognuno richiede più memoria GPU. La ricerca sull'addestramento con batch di grandi dimensioni mostra rendimenti decrescenti: oltre un certo limite che dipende dal task, raddoppiare il batch non dimezza più il numero di step necessari e la potenza di calcolo aggiuntiva è per lo più sprecata.

L'accumulo del gradiente separa il batch calcolato dalla GPU dal batch su cui si aggiorna l'ottimizzatore. La GPU elabora, ad esempio, 4 esempi alla volta e somma i gradienti di 8 di questi micro-batch prima di eseguire un singolo aggiornamento: un batch effettivo di 32 al costo di memoria di 4. Con più GPU, ciascuna elabora il proprio micro-batch, quindi il batch effettivo viene moltiplicato anche per il numero di GPU.

Accumulo del gradiente
per-device batch 4  ×  accumulation 8  ×  1 GPU  =  effective batch 32
memory: as for 4 examples        updates: one per 32 examples

Perché il numero di epoche è importante

Un'epoca è l'unità naturale per indicare quanto il modello ha osservato. Un'epoca su un dataset di piccole dimensioni spesso non è sufficiente per modificare il comportamento in modo evidente; molte epoche sullo stesso piccolo set consentono al modello di memorizzare le singole risposte. Il fine-tuning supervisionato su un numero di esempi compreso tra poche centinaia e qualche migliaio utilizza in genere 1–3 epoche, e il tuning delle preferenze 1–2. I dataset di piccole dimensioni possono tollerare qualche epoca in più; quelli molto grandi spesso ne richiedono solo una.

Poiché le epoche contano le ripetizioni e gli step contano gli aggiornamenti, è opportuno monitorarli entrambi. Tre epoche su 100 esempi con batch size 8 corrispondono a soli 39 step, che possono essere troppo pochi affinché una pianificazione del learning rate svolga il proprio compito. Un'epoca su 50.000 esempi corrisponde a 6.250 step: un'abbondanza di aggiornamenti e nessuna ripetizione.

Errori comuni

  • Aumentare le epoche per compensare la scarsità di dati. Più passaggi su 40 esempi insegnano quelle 40 risposte, non il task.
  • Modificare la batch size senza rivedere il learning rate. Step inferiori di numero e più ampi richiedono solitamente un rate maggiore, e viceversa.
  • Copiare un warm-up espresso in step da un'altra esecuzione. Se la nuova esecuzione ha molti meno step, un warm-up fisso può assorbire la maggior parte dell'addestramento.
  • Conteggiare i messaggi anziché i record di addestramento. A seconda del formato del provider, una conversazione con diversi target può diventare più record.

Riferimenti e letture di approfondimento

Le fonti esterne si aprono in una nuova scheda.

  1. 01Linear regression: HyperparametersGoogle Machine Learning Crash Course · developers.google.comDefinizioni chiare di batch size ed epoche, con l'aritmetica degli step per epoca spiegata nel dettaglio.
  2. 02TrainerHugging Face Transformers docs · huggingface.coRiferimento per la dimensione del batch per dispositivo, l'accumulo del gradiente, le epoche e il warm-up come argomenti di addestramento reali.
  3. 03An Empirical Model of Large-Batch TrainingMcCandlish et al., 2018 · arXiv · arxiv.orgPerché i batch più grandi sono utili fino a un certo punto e poi smettono di essere vantaggiosi.
  4. 04Stochastic gradient descentWikipedia · en.wikipedia.org

Trasformate settimane di lavoro esperto in pochi minuti

Scoprite come Scalata si adatta al vostro team, ai vostri dati e ai vostri Controlli.

Contatta il team vendite