Gradient Noise Scale(グラディエントノイズスケール)
LLM訓練における勾配ノイズの大きさとシグナルの比率を定量化する指標。最適なバッチサイズの推定や訓練効率の分析に使用され、訓練の「臨界バッチサイズ」を決定する理論的基盤。
Gradient Noise Scale(勾配ノイズスケール)とは
Gradient Noise Scale(GNS)は、ミニバッチ確率的勾配降下法(SGD)における勾配推定のノイズ量を定量化する指標です。2019年にOpenAIのMcCandlish et al.が「An Empirical Model of Large-Batch Training」で提唱し、LLMの訓練における最適バッチサイズの理論的な推定手法として注目されました。
直感的な理解
SGDでは、全データの真の勾配の代わりにミニバッチの勾配を使用します。このミニバッチ勾配にはサンプリングノイズが含まれており、バッチサイズが小さいほどノイズが大きくなります。GNSは「どのくらいのバッチサイズまでノイズの恩恵(探索効果)があり、どこからノイズが害になるか」の境界を示します。
数学的定義
GNS(B_noise)は以下で定義されます:
B_noise = tr(Σ) / |G|²
- tr(Σ): 勾配の共分散行列のトレース(ノイズの総量)
- |G|²: 真の勾配のL2ノルムの二乗(シグナルの強さ)
この比率は「ノイズ対シグナル比」であり、バッチサイズBとの関係で訓練効率が決まります。
臨界バッチサイズ
GNSの最も重要な応用は、臨界バッチサイズ(Critical Batch Size)B_critの推定です。
| バッチサイズBの関係 | 訓練効率 | 説明 |
|---|---|---|
| B << B_crit | ステップ効率的 | ノイズが支配的。各ステップの計算コストは低いが、多くのステップが必要 |
| B ≈ B_crit | 最適バランス | 計算効率とステップ効率の最適トレードオフ |
| B >> B_crit | 計算非効率 | バッチを大きくしても必要ステップ数がほぼ減らない。計算の無駄 |
B_critはGNSの値そのものであり、B_crit ≈ B_noiseと推定できます。
LLMの訓練における実測値
OpenAIの研究により、GNSは訓練中に変動することが示されました。
| 訓練段階 | GNS(概算) | 最適バッチサイズ | 解釈 |
|---|---|---|---|
| 訓練初期 | 小さい(10²-10³) | 小バッチが効率的 | ランダムな重みからの脱出にノイズが有効 |
| 訓練中盤 | 増加(10⁴-10⁵) | 中バッチが効率的 | シグナルが弱まりノイズ比が増加 |
| 訓練終盤 | 大きい(10⁵-10⁶) | 大バッチが効率的 | 精密な最適化にノイズは障害 |
この発見は、GPT-3でのバッチサイズスケジューリング(訓練初期は小バッチ→後半は大バッチ)の理論的根拠になりました。
Scaling Laws との関係
GNSはKaplanらのScaling Laws(2020年)やHoffmannらのChinchilla Scaling(2022年)と密接に関連します。Scaling Lawsが「モデルサイズ・データ量・計算量」の最適配分を示すのに対し、GNSは「計算量をバッチサイズと訓練ステップ数にどう配分するか」を示します。
| 指標 | 最適化対象 | 応用 |
|---|---|---|
| Scaling Laws | モデルサイズ vs データ量 | モデル設計 |
| Chinchilla Scaling | 同上(改良版) | 訓練予算配分 |
| GNS | バッチサイズ vs ステップ数 | 訓練パイプライン設計 |
実務での活用
GNSの計算は訓練中にオンラインで行えます。一定間隔で異なるバッチサイズの勾配を比較し、ノイズ量を推定します。ただし、計算コストが大きいため、実務では以下の簡易的なアプローチが一般的です。
- 経験則: B_crit ≈ 数百万トークン(大規模LLM)
- 段階的バッチサイズ増加: 訓練初期は小バッチ→GNSの増加に合わせてバッチ拡大
- 固定バッチ+学習率スケジュール: GNSを明示的に計算せず、学習率の減衰で対処
FAQ
Q1: GNSを実際のLLM訓練で計算する必要がありますか?
ほとんどの場合は不要です。GPT-3やLLaMAの訓練設定(バッチサイズ・学習率)が公開されており、同規模のモデルではこれらを参考にするのが実用的です。GNSの計算は研究目的や、非常に大規模な訓練で計算予算を最適化する場合に有用です。
Q2: GNSとbatch sizeの関係を一言で言うと?
「GNS ≈ 最適バッチサイズ」です。GNSより小さいバッチでは各ステップが安い代わりにステップ数が多く、GNSより大きいバッチではステップ数は減らないのに各ステップが高くつきます。
Q3: 訓練中にGNSが変化するということは、バッチサイズも変えるべきですか?
理論的にはそうですが、実装の複雑さから固定バッチサイズが主流です。例外としてGPT-3では訓練初期にバッチサイズ32Kから開始し、最終的に3.2Mまで段階的に増加させるスケジュールが使用されました。