Wie Modelle wirklich lernen, vom einfachen Gradientenabstieg bis zu Adam
Gradientenakkumulation simuliert einen größeren Batch, wenn der Speicher begrenzt ist. Statt nach jedem Mikro-Batch einen Schritt zu machen, addierst du die Gradienten mehrerer Mikro-Batches und führst dann einen einzigen Optimierer-Schritt aus.
Die effektive Batch-Größe ist die Mikro-Batch-Größe multipliziert mit der Anzahl der Akkumulationsschritte. Das lässt eine kleine GPU eher so trainieren, als hätte sie einen größeren Batch verwendet.
Eine Regentonne bringt die Idee auf den Punkt. Ein kleiner Becher kann nicht den ganzen Garten auf einmal bewässern, also schüttest du mehrere Becher in eine Tonne und nutzt dann die Tonnenmenge. Gradientenakkumulation sammelt mehrere kleine Gradientenbeiträge, bevor ein Update erfolgt. Die Abbildung unten ist genau dieser Prozess: Jeder neue Term ist ein Becher, und die wachsenden Balken sind die sich füllende Tonne, die sich ihrer Summe nähert. Gradientenakkumulation ist eine Partialsumme von Gradienten, die du als einen einzigen Schritt einlöst.