ロススパイクをXXす
Transformerの学習していると出てくるloss spikeなんとかころしたいですよね。
そんなあなたへの論文です。
ZClip: Adaptive Spike Mitigation for LLM Pre-Training
“ZClip: Adaptive Spike Mitigation for LLM Pre-Training” 解説
(arXiv: 2504.02507, 3 Apr 2025)
1 Introduction
巨大言語モデル(LLM)の事前学習では loss spike(突発的な損失増大)が深刻な問題になる。
- 540 B パラメータモデルで 20 回以上のスパイクが報告され、各回で数百バッチを巻き戻したという実例 [6]。
- 65 B モデルではスパイク対処だけで 129 MWh もの追加電力が必要だった [7]。
理論的には Jacobian のスペクトルノルム暴走が原因と示唆されているが(Spike-No-More [8])、学習中に動的に対処できる手法は限られている。そこで著者らは ZClip を提案する。ZClip は勾配の ノルム分布を逐次推定し、\ell_2 -score による外れ値検出と動的クリッピングでスパイクを抑制する。z
2 Gradient Clipping Methods
2.1 Fixed-threshold clipping
勾配ベクトル
が閾値
静的しきい値
- トークン長・学習率・バッチサイズなどで 最適値が変動
- 訓練後期に 過小クリップ→スパイクを許す
という欠点がある。
2.2 AutoClip
過去
2.3 ZClip
2.3.1 Spike detection
スカラー勾配ノルム
$$
g_t=\lVert g_t\rVert_2\tag{3}
$$
を用い、指数移動平均 (EMA) で
が閾値
2.3.2 Gradient adjustment
方式 | 式 | 特徴 |
---|---|---|
clip-to-mean | 不連続・最強クリップ | |
clip-to-max | 連続・弱め | |
reciprocal | 連続・外れ値ほど強く抑制 |
著者は reciprocal を推奨。
2.3.3 Warm-up初期化
最初
で統計を初期化。
2.3.4 統計更新時のスパイク処理
スパイク時は クリップ後ノルム で統計を更新
2.3.5 Algorithm 1(実装骨子)
-
Warm-up で
を計算(\mu,\sigma) - 各 step で勾配ノルム→
-scorez -
なら (7) で縮小z_t>z_{\text{thres}} - PyTorch の
clip_grad_norm_
に渡しパラメータ更新 - (10) に従い EMA を更新
3 Experiment Setup
項目 | 設定 |
---|---|
モデル | LLaMA 1 B(16 層 / hidden 2048 / RMSNorm / SwiGLU) |
データ | SmolLM 50 B token(FineWebEdu, Cosmopedia-V2, Python-Edu) |
計算環境 | 4 ノード × 8 H100, FSDP |
最大学習率 |
|
ZClip HP |
|
4 Results and Analysis
3{\times}10^{-3} )
4.1 High-LR regime (- 固定クリップ (
) は発散。c=1.0 - ZClip は同じ LR で安定し、検証 loss を 35 % 早く達成。
- HellaSwag / WinoGrande でも大幅改善(表 2)。
- ただし
では両者とも発散し、ZClip だけで LR を無限に上げられるわけではない。5{\times}10^{-3}
10^{-3} –10^{-4} )
4.2 Low-/Mid-LR regime (- スパイク発生は AutoClip と ZClip が 完全抑制 (0 回)。
- 下流性能は ZClip が最良 (HellaSwag 49.3 %, WinoGrande 54.9 %)。
- クリップ後ノルム分布が滑らかになり、過剰正則化なく情報勾配を保持。
5 Conclusion
ZClip は
-
局所ガウス仮定+EMA で
を軽量推定(\mu_t,\,\sigma_t) -
-score 外れ値 を reciprocal クリップで滑らかに抑制z
という 2 段構えで loss spike を抑える。1 B モデル実験では
- 固定閾値より 広い LR 空間 を安全に探索
-
トークン 18.6 B 削減で同等損失に到達
を実証した。将来は 7 B–70 B 規模や RL への適用が課題として挙げられている。
6 Appendix ハイライト
6.2 Percentile parameterization
AutoClip に似せて「上位
を計算し ZClip に渡すことで同等挙動を得られる(例:
6.3 クリップ戦略比較
方式 | スパイク回数 | 下流性能 |
---|---|---|
max | 1 | 中 |
mean | 0 | 低 |
reciprocal | 0 | 高 |
6.4 ノルム正規性検証
135 ステップ窓でノルム分布をフィットし、
- 早期は右裾重 (skew)
- 中盤では正規近似が良好
→ 短窓 EMA と -score の有効性を支持。z
研究・実装のポイント
-
EMA の
と\alpha はほぼ転移可能z_{\text{thres}}
著者の sweep では ,\alpha\!=\!0.97 が広範囲に妥当。z_{\text{thres}}\!=\!2.5 -
Reciprocal クリップは連続性と攻撃性のトレードオフが良好
は\xi(z)=z_{\text{thres}}^{2}/z で平均値に収束し、極端外れ値を強く抑える。z\to\infty -
実装はたった数行で既存
clip_grad_norm_
を包める
追加状態は の 2 スカラーと warm-up カウンタのみ。(\mu,\sigma) -
Spike 検出と統計更新を分離
スパイクを完全に統計から除外すると閾値が下がり過ぎ、
“クリップ後ノルムで更新” がバランスを取る。
総括 — ZClip は「確率統計的クリッピング」という位置付けで、
- 長期学習での スパイク再発防止
- ハイパーパラメータ調整コスト低減
を同時に達成する実践的なソリューションである。Transformer 系の loss spike に悩む実務・研究のどちらにも即投入できるだろう。
Discussion