Precisione Mista e Loss Scaling

Come i modelli imparano davvero, dalla discesa del gradiente vanilla ad Adam

L'addestramento a precisione mista usa formati numerici più piccoli per guadagnare velocità e memoria. Invece di memorizzare ogni calcolo a piena precisione (i normali float a 32 bit), molte operazioni usano float16 o bfloat16: formati a 16 bit che dimezzano la memoria in cambio di meno precisione e, per float16, un intervallo più stretto di grandezze rappresentabili.

Il rischio è l'intervallo numerico. Alcuni gradienti sono minuscoli. Se un numero minuscolo viene arrotondato a zero, l'ottimizzatore perde informazione. Il loss scaling protegge quei gradienti piccoli moltiplicando la loss prima della backpropagation, poi dividendo di nuovo i gradienti.

Una bilancia da cucina che arrotonda al grammo intero può perdere un pizzico minuscolo di spezia. Se pesi insieme dieci pizzichi identici, la bilancia riesce a vedere il totale. Poi dividi per dieci per recuperare un pizzico. Il loss scaling usa lo stesso trucco: rendere il valore piccolo più facile da rappresentare, poi riportarlo alla scala giusta. La figura sotto è un promemoria di ciò che è in gioco. La discesa funziona solo se il gradiente di ogni passo sopravvive all'aritmetica; la precisione non cambia il ciclo, decide se le pendenze minuscole vicino al minimo restano visibili.

Dove si trova nel MLLa precisione mista è uno dei motivi per cui le grandi reti neurali si addestrano velocemente sull'hardware moderno. Gli ottimizzatori richiedono ancora gli stessi concetti, ma la scala numerica diventa parte della ricetta di addestramento.
▶ Precisione Mista e Loss Scaling
← Minimi Quadrati AlternatiScalatura della Batch Size →