勾配累積
小さなバッチを何回か回して勾配を足し合わせ、オプティマイザが更新するのはその後にする手法。メモリに収まらない大きさのバッチを、擬似的に再現できる。
手法は単純で、広く使われている。8例のマイクロバッチを4回回せば、32例を1回で回したのと同じ更新になり、そのぶん1ステップの時間は4倍かかる。唯一の落とし穴は正規化だ。損失を累積ステップ数で割らないと、勾配が4倍大きくなり、実効学習率が設定値と違ってしまう。まさにこの細部が、2024年に複数の主要な学習フレームワークで誤って実装されていたと判明した。系列長が不揃いのとき、トークン数ではなくステップ数で割っていたためだ。分散学習では、途中のステップで勾配同期を無効にしておくべきでもある。