AI・機械学習
上級

プログレッシブトレーニング(プログレッシブトレーニング)

プログレッシブトレーニング(Progressive Training)とは、モデルのアーキテクチャやデータの複雑度を段階的に拡大しながら訓練する手法である。LLMの文脈では、小さいモデルから大きいモデルへの段階的拡張(Progressive Growing)や、短いシーケンスから長いシーケンスへの段階的延長(Progressive Length Training)が代表的な応用である。

0 回閲覧
0 いいね

プログレッシブトレーニングの基本概念

プログレッシブトレーニングは、GANの学習で大きな成功を収めたProgressive Growing(NVIDIA, 2018年)の考え方をLLMの訓練に応用したものである。核心的なアイデアは「小さく始めて徐々に大きくする」ことで、以下の3つの軸で段階的拡張が行われる。

  1. モデルサイズ軸: レイヤー数・隠れ層次元を段階的に増加
  2. シーケンス長軸: 入力コンテキスト長を段階的に延長
  3. データ複雑度軸: 訓練データの難易度を段階的に引き上げ

これらの軸は独立に、あるいは組み合わせて適用される。Google の PaLM 2 では、シーケンス長のプログレッシブ拡張により、同一の最終性能を20%少ないFLOPsで達成したと報告されている。

シーケンス長のプログレッシブ拡張

LLMの訓練で最も実用的なプログレッシブ手法は、コンテキスト長の段階的延長である。

訓練段階シーケンス長訓練トークン数バッチサイズ処理速度(tokens/sec)
Phase 1512500B40961.2M
Phase 22048800B2048800K
Phase 38192400B512350K
Phase 432768200B128120K
Phase 5131072100B3235K

短いシーケンスでの訓練は計算効率が高く(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 の関数保存変換が用いられる。幅方向の拡張は深さ方向より安定しやすいが、実装の複雑さが増す。

段階的難易度引き上げ

プログレッシブトレーニングのデータ軸では、以下のような段階設計が一般的である。

  1. Phase 1(基礎文法): Wikipedia、書籍、ニュース記事など高品質・平易なテキスト
  2. Phase 2(知識拡張): 学術論文、技術文書、専門サイトのテキスト
  3. Phase 3(推論能力): 数学問題、コード、論理パズル、多段階推論が必要なテキスト
  4. 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スケーリングなどの手法と組み合わせることも一般的である。