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

Concetto

Il ciclo di addestramento

Il fine-tuning è una breve procedura ripetuta migliaia di volte: prevedere la risposta target, misurare l'errore della previsione, calcolare in quale direzione deve muoversi ciascun peso e spostarlo leggermente.

Capitolo 6Lettura di 5 min5 riferimenti

Che cos'è

Un modello linguistico è una funzione estremamente vasta con miliardi di numeri regolabili, i suoi pesi. Dato un testo, restituisce una probabilità per ogni possibile token successivo. Il fine-tuning modifica questi pesi in modo che, dato il Suo tipo di contesto, il modello assegni un'alta probabilità al tipo di risposta che Lei desidera. Il training loop è la procedura che esegue questa operazione. Non si tratta di un'unica operazione complessa, ma di un semplice step ripetuto molte migliaia di volte, dove ogni ripetizione aggiusta leggermente i pesi.

UN BATCHes. 8 esempi1. Passaggio in avantiprevedere il target, token per token2. Perditaquanto era errato? (entropia incrociata)3. Passaggio all'indietrogradiente per ogni peso addestrabile4. Aggiornamentodimensione del passo = tasso di apprendimento
Un passaggio di addestramento. Ripetendolo per ogni batch si completa un'epoca; ripetendo l'epoca il modello vede di nuovo ogni esempio.

Come funziona un singolo step

1. Forward pass. Un batch di esempi attraversa il modello. In ogni posizione di ciascuna risposta target, il modello produce una distribuzione di probabilità sull'intero vocabolario, spesso 100.000 token o più, per ciò che verrà dopo. Poiché la risposta corretta è già nota, tutte le posizioni vengono previste in parallelo in un singolo passaggio. Il modello vede sempre i token precedenti corretti anziché le proprie ipotesi, una tecnica chiamata teacher forcing.

2. Loss. Per ogni token target, la loss è il logaritmo negativo della probabilità che il modello ha assegnato al token corretto. La loss del batch è la media su tutti i suoi token target. I token di contesto (il prompt di sistema, i turni precedenti, il messaggio dell'utente) vengono letti ma esclusi da questa media, in modo che vengano valutate solo le risposte da Lei scelte come target.

Loss di cross-entropia su un batch
loss = − (1 / N) × Σ log p(correct token | everything before it)

N = the number of target tokens in the batch
context tokens are masked: read, never scored
Cross-entropia su tre token
  1. Il modello assegna al token successivo corretto una probabilità di 0.9: loss = −ln 0.9 ≈ 0.11.
  2. Una probabilità di 0.5: loss = −ln 0.5 ≈ 0.69.
  3. Una probabilità di 0.05: loss = −ln 0.05 ≈ 3.00.
  4. Media sui tre token: (0.11 + 0.69 + 3.00) ÷ 3 ≈ 1.26. Un token errato con alta confidenza domina il punteggio.
  5. Per dare un'idea delle proporzioni: un modello che tira a indovinare tra 100.000 token otterrebbe un punteggio di ln 100.000 ≈ 11.5. Le loss di fine-tuning partono da valori molto inferiori, poiché il modello di base è già in grado di fare buone previsioni; l'addestramento lo perfeziona sulle Sue risposte.

3. Backward pass. La backpropagation calcola il gradiente di ogni peso addestrabile: di quanto cambierebbe la loss se quel peso si spostasse di una minima quantità, e in quale direzione. Costa circa il doppio della potenza di calcolo del forward pass e necessita dei valori intermedi (attivazioni) salvati durante il forward pass. Questo è il motivo per cui esempi più lunghi e batch più grandi richiedono maggiore memoria GPU.

4. Aggiornamento. L'ottimizzatore modifica ciascun peso in direzione opposta al suo gradiente, scalato in base al learning rate. Nella sua forma più semplice, la pura discesa del gradiente, la regola è una singola riga.

Discesa del gradiente
gradient  = ∂loss / ∂w        how the loss changes when w changes
w (new)   = w − learning_rate × gradient
perditavalore di un pesopendenza ripida all'inizio,quindi un primo passo ampioPERDITA MINIMApasso =tasso di apprendimento× gradiente
Discesa del gradiente con un singolo peso. Il gradiente è la pendenza della perdita al valore attuale; ogni aggiornamento scende di un passo pari al tasso di apprendimento moltiplicato per tale pendenza. I passi si riducono autonomamente man mano che la pendenza si appiattisce verso il fondo. Un modello reale esegue questa operazione per miliardi di pesi contemporaneamente.

L'ottimizzatore: Adam e AdamW

I modelli linguistici vengono quasi sempre addestrati con Adam o la sua variante AdamW anziché con la pura discesa del gradiente. Adam mantiene due medie correnti per ogni peso: il gradiente medio (momentum, che attenua il rumore da un batch all'altro) e la media del gradiente al quadrato (che scala lo step di ciascun peso, in modo che i pesi con gradienti costantemente ampi non compiano step enormi e quelli aggiornati raramente non vengano trascurati). Il risultato è che ogni peso si sposta all'incirca del learning rate per ogni step, indipendentemente dalla dimensione grezza del suo gradiente.

AdamW modifica il modo in cui viene applicato il weight decay, una leggera trazione dei pesi verso lo zero che scoraggia i valori estremi: viene sottratto direttamente dai pesi anziché essere mescolato nel gradiente, il che funziona in modo più affidabile con il ridimensionamento per singolo peso di Adam. È l'ottimizzatore predefinito nelle comuni librerie di addestramento.

Un aggiornamento AdamW, per un singolo peso
m = β1 · m + (1 − β1) · g        running average of gradients (momentum)
v = β2 · v + (1 − β2) · g²       running average of squared gradients
w = w − lr · m̂ / (√v̂ + ε)        a step scaled separately for every weight
w = w − lr · λ · w               decoupled weight decay (the "W" in AdamW)

g = gradient,  m̂ and v̂ = bias-corrected m and v
usual defaults: β1 = 0.9,  β2 = 0.999,  ε = 1e-8

Queste due medie mobili vengono archiviate con una precisione a 32 bit per ogni peso addestrabile: 8 byte per peso, in aggiunta ai pesi e ai gradienti stessi. Questo è il motivo principale per cui il fine-tuning completo richiede così tanta memoria e perché LoRA, che addestra solo un piccolo adattatore, ne richiede così poca.

Dagli step al modello finito

  • Gli step formano le epoche. Un passaggio su ogni esempio di addestramento costituisce un'epoca; un'esecuzione di fine-tuning richiede solitamente da una a poche epoche.
  • Il learning rate cambia durante l'esecuzione. Una pianificazione solitamente lo aumenta brevemente (warm-up) e poi lo riduce verso lo zero, in modo che i primi step non destabilizzino il modello e gli ultimi apportino regolazioni di precisione.
  • La validazione avviene in parallelo. Di tanto in tanto, il modello viene valutato su esempi tenuti da parte senza aggiornare alcun peso. Quella validation loss indica se il modello sta apprendendo il pattern o semplicemente memorizzando gli esempi.
  • Il risultato sono nuovi pesi: un modello completo aggiornato oppure un piccolo adattatore applicato sopra il modello di base invariato.

Errori comuni

  • Interpretare la loss come un punteggio di qualità. La loss indica con quanta precisione il modello prevede i Suoi token target, non se le sue risposte siano valide; a questo risponde una valutazione.
  • Confrontare i valori di loss tra diversi modelli di base. Ognuno ha il proprio tokenizer, pertanto i numeri non sono sulla stessa scala.
  • Aspettarsi che l'addestramento corregga i target errati. Il loop riduce fedelmente la loss su qualsiasi risposta Lei contrassegni come target, inclusi gli errori.
  • Presumere che il modello impari delle regole. Il modello apprende tendenze da molteplici piccoli aggiustamenti, pertanto un comportamento mostrato in soli due esempi viene a malapena assimilato.

Riferimenti e letture di approfondimento

Le fonti esterne si aprono in una nuova scheda.

  1. 01Optimizing Model ParametersPyTorch Tutorials · pytorch.orgIl ciclo in circa venti righe di codice: forward pass, loss, backward pass, step dell'ottimizzatore.
  2. 02Linear regression: Gradient descentGoogle Machine Learning Crash Course · developers.google.comUn'introduzione interattiva ai gradienti e alla loss sul modello più semplice possibile.
  3. 03Adam: A Method for Stochastic OptimizationKingma & Ba, 2014 · arXiv · arxiv.orgIl paper originale di Adam, con la regola di aggiornamento e le sue impostazioni predefinite.
  4. 04Decoupled Weight Decay RegularizationLoshchilov & Hutter, 2017 · arXiv · arxiv.orgIntroduce AdamW e spiega perché il weight decay dovrebbe essere separato dal gradiente.
  5. 05Cross-entropyWikipedia · 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