事前訓練とファインチューニング

LLMの訓練パラダイム。事前訓練で汎用的知識を獲得し、ファインチューニングで特定タスクや対話能力に適応。SFT、RLHF、DPO、LoRAの役割と使い分け。

最終更新:2025年11月

1. 訓練パラダイムの概要

1.1 3段階のパイプライン

現代のLLM訓練は通常3段階:

  1. Pre-training:大規模テキストで言語モデリング
  2. SFT(Supervised Fine-Tuning):指示-応答ペアで訓練
  3. RLHF/DPO:人間の選好でアライメント

1.2 各段階の役割

  • Pre-training:知識・言語能力の獲得
  • SFT:指示に従う能力、フォーマット学習
  • RLHF:有用性、安全性、人間の好みへの適合

1.3 計算コストの分布

Pre-training >> SFT > RLHF(計算量ベース)

Pre-trainingが全体の99%以上のコストを占める。

2. 事前訓練(Pre-training)

2.1 目的

大規模テキストコーパスから汎用的な言語理解・生成能力を獲得。

2.2 訓練目標

Next Token Prediction(自己回帰):

GPT系。過去のトークンから次を予測。

L = -Σ log P(xₜ | x₁, ..., xₜ₋₁)

Masked Language Modeling:

BERT系。マスクされたトークンを予測。

L = -Σ log P(x_masked | x_context)

2.3 データ

規模:数百B〜数十Tトークン

ソース:

  • Web(CommonCrawl等)
  • 書籍(Books3等)
  • Wikipedia
  • コード(GitHub)
  • 学術論文

データ品質:

  • 重複排除(deduplication)
  • 品質フィルタリング
  • 有害コンテンツ除去
  • 言語・ドメインバランス

2.4 計算要件

  • 数千〜数万GPU
  • 数週間〜数ヶ月
  • 数億〜数十億ドルのコスト(大規模モデル)

3. 教師ありファインチューニング(SFT)

3.1 Instruction Tuning

指示-応答ペアで訓練し、指示に従う能力を獲得。

指示:以下の文を要約してください。
入力:[長いテキスト]
出力:[要約]

3.2 データセット

  • FLAN:1,800+タスク
  • Natural Instructions:60以上の言語
  • Alpaca:52Kの指示データ
  • ShareGPT:ユーザーとの対話ログ

3.3 効果

  • 指示追従能力の大幅向上
  • Zero-shot性能の改善
  • 対話的応答の学習
  • フォーマット・スタイルの整形

3.4 データ量

Pre-trainingより遥かに少量(数千〜数十万例)で効果的。

品質 > 量。高品質な少量データが重要。

3.5 FLAN-T5の発見

Chung et al. (2022)。多タスクInstruction Tuningで:

  • 未見タスクへの汎化
  • Chain-of-Thought能力の向上
  • スケールとの相乗効果

4. RLHF・アライメント訓練

4.1 RLHF(Reinforcement Learning from Human Feedback)

Ouyang et al. (2022) InstructGPT。

3ステップ:

  1. SFT:高品質な指示データで訓練
  2. 報酬モデル訓練:人間の選好から報酬を学習
  3. RL最適化:PPOで方策を更新

4.2 報酬モデル

人間のランキングデータから訓練。

「応答Aと応答B、どちらが良いか」

Loss = -log σ(r(x, y_preferred) - r(x, y_rejected))

4.3 DPO(Direct Preference Optimization)

Rafailov et al. (2023)。報酬モデルを介さず直接最適化。

  • RLHFの簡素化
  • 訓練が安定
  • 計算効率が良い

現在の主流手法の1つ。

4.4 その他のアライメント手法

  • IPO:DPOの改良
  • KTO:バイナリフィードバック対応
  • RLAIF:AIによるフィードバック
  • Constitutional AI:原則に基づく自己改善

4.5 効果

  • 有用性の向上
  • 有害出力の削減
  • 人間の好みへの適合
  • 幻覚の低減(一定程度)

5. パラメータ効率的手法(PEFT)

5.1 動機

全パラメータのファインチューニングは:

  • 計算コストが高い
  • メモリを大量に消費
  • タスクごとに全パラメータを保存

5.2 LoRA(Low-Rank Adaptation)

Hu et al. (2022)。低ランク行列で重み更新を近似。

W' = W + BA
(B: d×r、A: r×d、r << d)
  • 訓練パラメータ数を1%以下に削減
  • Full Fine-tuningに匹敵する性能
  • 複数タスクで効率的に切り替え可能

5.3 QLoRA

Dettmers et al. (2023)。量子化 + LoRA。

  • 4-bit量子化したモデルにLoRA適用
  • 単一GPUで65Bモデルのファインチューニング

5.4 その他のPEFT手法

  • Adapter:小さなモジュールを挿入
  • Prefix-Tuning:学習可能なプレフィックス
  • Prompt Tuning:Soft Promptの学習
  • DoRA:方向と大きさを分離

5.5 使い分け

  • リソース制約あり:QLoRA
  • 複数タスク:LoRA(タスクごとにアダプタ)
  • 最高性能:Full Fine-tuning(リソースがあれば)

6. 実践的考慮事項

6.1 いつ何を使うか

状況 推奨手法
少量データ、多タスク ICL / Prompting
特定タスク、中量データ LoRA / QLoRA
特定ドメイン、大量データ Full Fine-tuning / Continued Pre-training
対話能力の向上 SFT + DPO

6.2 注意点

  • Catastrophic Forgetting:ファインチューニングで元の能力が失われる
  • Overfitting:少量データでの過学習
  • 分布シフト:訓練・評価データの違い

6.3 ベストプラクティス

  • まずはPromptingで試す
  • データ品質を優先
  • 適切な評価指標を設定
  • 段階的にアプローチを強化

7. 参考文献

SFT・Instruction Tuning

  • Wei et al. (2022) "Finetuned Language Models Are Zero-Shot Learners" (FLAN)
  • Chung et al. (2022) "Scaling Instruction-Finetuned Language Models" (FLAN-T5)
  • Taori et al. (2023) "Stanford Alpaca"

RLHF・アライメント

  • Ouyang et al. (2022) "Training language models to follow instructions" (InstructGPT)
  • Rafailov et al. (2023) "Direct Preference Optimization" (DPO)
  • Bai et al. (2022) "Constitutional AI" (Anthropic)

PEFT

  • Hu et al. (2022) "LoRA: Low-Rank Adaptation of Large Language Models"
  • Dettmers et al. (2023) "QLoRA: Efficient Finetuning of Quantized LLMs"

関連ページ