Gradiëntaccumulatie

Hoe modellen daadwerkelijk leren, van gewone gradient descent tot Adam

Gradiëntaccumulatie simuleert een grotere batch wanneer het geheugen beperkt is. In plaats van na elke micro-batch een stap te zetten, tel je gradiënten van meerdere micro-batches bij elkaar op, en zet dan één optimizer-stap.

De effectieve batchgrootte is de micro-batchgrootte maal het aantal accumulatiestappen. Zo kan een kleine GPU meer aanvoelen alsof hij op een grotere batch heeft getraind.

Een regenton vangt het idee. Een klein bekertje kan niet de hele tuin in één keer besproeien, dus je giet meerdere bekertjes in een ton en gebruikt daarna de hoeveelheid uit de ton. Gradiëntaccumulatie verzamelt meerdere kleine gradiëntbijdragen voordat er één update volgt. De figuur hieronder is letterlijk dit proces: elke nieuwe term is één bekertje, en de oplopende balken zijn de ton die naar zijn totaal toe vult. Gradiëntaccumulatie is een deelsom van gradiënten die je verzilvert als één enkele stap.

Waar dit voorkomt in MLGradiëntaccumulatie komt veel voor bij grote taalmodellen, grote afbeeldingen en beperkt GPU-geheugen. Het laat teams een effectieve batchgrootte kiezen zonder dat die hele batch tegelijk moet passen.
▶ Gradiëntaccumulatie
← Batchgrootte schalenInitialisatie & signaalschaal →