Come i modelli imparano davvero, dalla discesa del gradiente vanilla ad Adam
La gradient accumulation simula una batch più grande quando la memoria è limitata. Invece di fare un passo dopo ogni micro-batch, sommi i gradienti di più micro-batch, poi compi un solo passo dell'ottimizzatore.
La batch size effettiva è la dimensione del micro-batch moltiplicata per il numero di passi di accumulazione. Questo permette a una piccola GPU di comportarsi più come se si fosse addestrata su una batch più grande.
Un barile per l'acqua piovana cattura l'idea. Una piccola tazza non può innaffiare tutto il giardino in una volta, quindi versi diverse tazze nel barile e poi usi la quantità del barile. La gradient accumulation raccoglie diversi piccoli contributi di gradiente prima di un aggiornamento. La figura sotto è letteralmente questo processo: ogni nuovo termine è una tazza, e le barre che salgono sono il barile che si riempie verso il suo totale. La gradient accumulation è una somma parziale di gradienti che incassi come un unico passo.