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.