プログレッシブトレーニング(プログレッシブトレーニング)
プログレッシブトレーニング(Progressive Training)とは、モデルのアーキテクチャやデータの複雑度を段階的に拡大しながら訓練する手法である。LLMの文脈では、小さいモデルから大きいモデルへの段階的拡張(Progressive Growing)や、短いシーケンスから長いシーケンスへの段階的延長(Progressive Length Training)が代表的な応用である。
プログレッシブトレーニングの基本概念
プログレッシブトレーニングは、GANの学習で大きな成功を収めたProgressive Growing(NVIDIA, 2018年)の考え方をLLMの訓練に応用したものである。核心的なアイデアは「小さく始めて徐々に大きくする」ことで、以下の3つの軸で段階的拡張が行われる。
- モデルサイズ軸: レイヤー数・隠れ層次元を段階的に増加
- シーケンス長軸: 入力コンテキスト長を段階的に延長
- データ複雑度軸: 訓練データの難易度を段階的に引き上げ
これらの軸は独立に、あるいは組み合わせて適用される。Google の PaLM 2 では、シーケンス長のプログレッシブ拡張により、同一の最終性能を20%少ないFLOPsで達成したと報告されている。
シーケンス長のプログレッシブ拡張
LLMの訓練で最も実用的なプログレッシブ手法は、コンテキスト長の段階的延長である。
| 訓練段階 | シーケンス長 | 訓練トークン数 | バッチサイズ | 処理速度(tokens/sec) |
|---|---|---|---|---|
| Phase 1 | 512 | 500B | 4096 | 1.2M |
| Phase 2 | 2048 | 800B | 2048 | 800K |
| Phase 3 | 8192 | 400B | 512 | 350K |
| Phase 4 | 32768 | 200B | 128 | 120K |
| Phase 5 | 131072 | 100B | 32 | 35K |
短いシーケンスでの訓練は計算効率が高く(Self-Attentionの計算量がO(n²)のため)、基礎的な言語パターンを高速に学習できる。長いシーケンスでの訓練は計算コストが高いが、長距離依存関係の理解に不可欠である。
Meta の LLaMA 3.1 では、事前学習の最終15%のステップでコンテキスト長を8Kから128Kに拡張するプログレッシブ戦略を採用。これにより128Kコンテキスト対応を、全訓練を128Kで行う場合の約1/5のコストで実現した。
モデルサイズのプログレッシブ拡張
スタッキング(Stacking)
小さいモデルの重みを複製・拡張して大きいモデルの初期化に使用する手法。具体的には、12層のTransformerの重みを24層モデルに「スタック」(各層を2回繰り返し)して初期化する。
Microsoft Research の2024年の論文では、GPT-3 175B 相当のモデルをスタッキングで訓練し、ランダム初期化対比で収束までの計算量を30%削減した。ただし、スタッキング直後のモデルは不安定になりやすく、低学習率でのウォームアップフェーズが必要である。
幅方向の拡張(Width Expansion)
隠れ層の次元数を段階的に増加させる手法。新しいニューロンの初期化にはNet2Net(Chen et al., 2016)やBERT2BERT の関数保存変換が用いられる。幅方向の拡張は深さ方向より安定しやすいが、実装の複雑さが増す。
段階的難易度引き上げ
プログレッシブトレーニングのデータ軸では、以下のような段階設計が一般的である。
- Phase 1(基礎文法): Wikipedia、書籍、ニュース記事など高品質・平易なテキスト
- Phase 2(知識拡張): 学術論文、技術文書、専門サイトのテキスト
- Phase 3(推論能力): 数学問題、コード、論理パズル、多段階推論が必要なテキスト
- Phase 4(専門特化): ターゲットドメインの専門データ(法律、医療、金融など)
Anthropic の Claude 3.5 Sonnet の訓練プロセスでは、類似のマルチフェーズ構成が採用されていると推測されており、特にPhase 3での推論データ増強がベンチマーク性能に大きく寄与していると分析されている。
実装上の注意点
学習率の再調整
段階が切り替わるタイミングで、学習率のリセットまたは再ウォームアップが必要になることが多い。特にシーケンス長の大幅な変更時には、勾配のスケールが変化するため、学習率を一時的に下げる(1/2〜1/10)ことが推奨される。
チェックポイント管理
各段階の終了時にチェックポイントを保存し、次段階での不安定化が検出された場合にロールバック可能にする。プログレッシブ訓練では段階間の遷移が最もリスクが高く、損失スパイクの頻度が通常の3〜5倍になることがある。
バッチサイズの動的調整
シーケンス長の増加に伴いGPUメモリ消費が増大するため、バッチサイズの自動調整メカニズムが必要である。DeepSpeed ZeRO-3やFSDP(Fully Sharded Data Parallel)と組み合わせることで、メモリ効率を維持しつつプログレッシブ拡張を実現できる。
FAQ
Q: プログレッシブトレーニングは全てのLLMに有効ですか?
A: 10B パラメータ以上のモデルで効果が顕著である。小規模モデル(1B以下)では、プログレッシブ拡張のオーバーヘッド(段階切り替え時の不安定化、ハイパーパラメータ再調整)が利益を上回ることがある。
Q: 段階の切り替えタイミングはどう決定しますか?
A: バリデーション損失の改善率が閾値(一般に0.1%/1000steps)を下回った時に次の段階に移行するのが標準的である。固定ステップ数での切り替えも使われるが、適応的な切り替えの方が最終性能が高い傾向にある。
Q: シーケンス長のプログレッシブ拡張でRoPE(回転位置エンコーディング)のベース周波数は変更しますか?
A: はい、段階ごとにRoPEのベース周波数を調整することが推奨される。LLaMA 3.1では128Kフェーズでベース周波数を500,000に引き上げ、長距離位置エンコーディングの精度を維持している。YaRN(Yet another RoPE extensioN)やNTK-awareスケーリングなどの手法と組み合わせることも一般的である。