Accumulation de gradient

Comment les modèles apprennent réellement, de la descente de gradient classique à Adam

L'accumulation de gradient simule un batch plus grand quand la mémoire est limitée. Au lieu de faire un pas après chaque micro-batch, vous additionnez les gradients de plusieurs micro-batches, puis vous effectuez un seul pas d'optimiseur.

La taille de batch effective est la taille du micro-batch multipliée par le nombre de pas d'accumulation. Cela permet à un petit GPU de se comporter comme s'il s'entraînait sur un batch plus grand.

Un tonneau de récupération d'eau de pluie capture bien l'idée. Une petite tasse ne peut pas arroser tout le jardin d'un coup, alors vous versez plusieurs tasses dans un tonneau puis vous utilisez la quantité du tonneau. L'accumulation de gradient collecte plusieurs petites contributions de gradient avant une seule mise à jour. La figure ci-dessous illustre littéralement ce processus : chaque nouveau terme est une tasse, et les barres qui montent sont le tonneau se remplissant vers son total. L'accumulation de gradient est une somme partielle de gradients que vous encaissez en un seul pas.

Où cela apparaît en MLL'accumulation de gradient est courante pour les grands modèles de langage, les grandes images, et une mémoire GPU limitée. Elle permet aux équipes de choisir une taille de batch effective sans exiger que ce batch entier tienne en mémoire d'un coup.
▶ Accumulation de gradient
← Mise à l'échelle de la taille de batchInitialisation et échelle du signal →