以下は、**大規模言語モデル(LLM)の訓練**を、目的→データ→モデル→最適化→分散実装→評価→安全性→運用の流れで体系化した技術解説。 ## 0. 目的と問題設定 LLM 訓練は大きく **(A) 事前学習(pretraining)** と **(B) [[ファインチューニング]]微調整(fine-tuning / alignment)** に分かれます。 - **A. 事前学習** 目的関数:次トークン予測(自己回帰言語モデリング) $min⁡θEx∼D[−log⁡pθ(x)]\min_\theta \mathbb{E}_{x \sim \mathcal{D}}[-\log p_\theta(x)]$ 多様な生テキスト(Web、書籍、ニュース、コード等)で汎用能力を獲得。 - **B. 微調整**(用途・規範への整合) - **SFT(教師あり指示追従)**:人手や合成の「良い応答」データで MLE。 - **選好最適化(Preference Optimization)**:ペア比較データで「どちらが好ましいか」を学習(DPO/IPO/KTO など、PPO を使わないアプローチが主流化)。 - **RLHF/RLAIF**:報酬モデル(人/AIの選好)+KL 正則化で方策更新。 - **安全性・方針調整**:拒否・言い換え・証跡提示・機密回避などのポリシーを埋め込む。 - **タスク特化**:コード/数学/対話ツール使用、長文要約、多言語、マルチモーダル等。 ## 1. データエンジニアリング LLM の性能上限は **データの質と多様性** が決めます。工程は「収集→前処理→選別→混合→スケジューリング」。 1. **取得と権利** - ライセンス確認、ロボッツ遵守、出典メタデータ保持(監査のため)。 - プライバシー配慮(PII 除去、微妙な境界の人名・住所・連絡先の扱い方針)。 2. **前処理** - 正規化(Unicode、空白、句読点、HTML 除去、言語判定)。 - **重複除去(dedup)**:MinHash/LSH、n-gram 指標。 - 品質推定(ルール・モデル併用)、スパム/テンプレ/翻訳体/機械生成検出。 3. **データ混合(mixture)** - 書籍/百科/ニュース/フォーラム/コード/学術などの比率設計。 - 多言語バランス(母語・主要言語・低資源言語)。 - **温度サンプリング**やストラタム別の **reweighting** で希少だが重要な分布を強化。 4. **境界管理** - 評価セット汚染の防止(URL・ハッシュ・n-gram 照合)。 - 文書パッキング:文書境界トークンを保ちつつ長さ効率を最大化。 - **長文化**:長コンテキスト学習用に本物の長文と合成連結データを併用。 > 実務メモ:学習中に損失が頭打ちなら、データの**新規性と多様性**(≒情報エントロピー)を見直すのが最も効きます。 --- ## 2. トークナイゼーション - **方式**:Byte-level BPE / Unigram(SentencePiece)等。 - **語彙設計**:語彙サイズ(例:32k〜200k)、多言語やコード記号のカバレッジ。 - **特殊トークン**:BOS/EOS、区切り、役割(system/user/assistant)、関数呼び出し、画像・ツールプレースホルダ。 - **実務の落とし穴**:空白・改行・大文字小文字の扱い、句読点の分割規則。コードや数式はトークン化ポリシーで性能が変わりやすい。 ## 3. モデルアーキテクチャ - **基本**:デコーダ専用 Transformer、Pre-LN(RMSNorm など)、SwiGLU/GELU。 - **位置表現**:RoPE(回転位置埋め込み)、相対位置、ALiBi 等。長文最適化には RoPE スケール調整が定番。 - **注意機構の最適化**: - **MQA/GQA** で KV キャッシュを節約。 - **FlashAttention** 系で高速・省メモリなアテンション。 - **MoE([[Mixture-of-Experts]])**:計算効率と容量を両立(Top‑k ルーティング、負荷分散・安定化が要)。 - **正規化と安定化**:勾配爆発を避ける設計(学習率、初期化、Norm、スケール)。 - **マルチモーダル拡張**:視覚エンコーダ(Vision Transformer 等)とのブリッジ、画像トークン化、ツール/関数トークン。 --- ## 4. 最適化(オプティマイザ・スケジュール・正則化) - **損失**:トークンごとのクロスエントロピー(ラベル平滑化は多用しない/用途限定)。 - **オプティマイザ**:AdamW/Adafactor/Lion 等。勾配クリッピング(例:global norm)を標準装備。 - **学習率**:ウォームアップ(数百〜数千ステップ)+コサイン/多段階減衰が実務で安定。 - **数値精度**:BF16/FP16(混合精度)、FP8(最新ハード)を状況に応じて。 - **正則化**:重み減衰、ドロップアウト(大規模では控えめ)、早期停止は通常使わず**総トークン予算で完走**。 - **メモリ節約**:勾配チェックポイント、勾配累積、オプティマイザステートの圧縮/分割。 --- ## 5. スケーリングと「計算最適」 - 同一計算量なら **パラメータを増やすだけより、学習トークン数を増やす**方が汎化に有利。 - 指針:**モデル規模と学習トークンのバランス**をとり、データ品質を確保。 - 実務では、まず目標コスト(GPU 時間・電力)→目標トークン数→それに合うパラメータ規模とバッチ設計、の順で決める。 --- ## 6. 分散学習とシステム設計 - **並列化の三本柱**:データ並列(DP)、テンソル並列(TP)、パイプライン並列(PP)。 - **ZeRO / FSDP**:オプティマイザ・勾配・重みのシャーディングでメモリ分散。 - **I/O パイプライン**:圧縮 TFRecord/Parquet、プリフェッチとシャッフル、トークン化を前処理段階で完了。 - **チェックポイント**:定期保存+クラッシュ回復。 - **監視**:スループット(tokens/sec)、利用率、勾配ノルム、損失のドリフト、学習率スケジュールの適用確認。 - **再現性**:データ版管理、ランダム種、依存ライブラリの固定。 --- ## 7. 微調整とアラインメントの具体 1. **SFT(教師あり)** - 指示→応答のペアを高品質に収集(脱線や幻覚の少ないデータ)。 - 役割トークンと会話フォーマットを固定し、**プロンプト崩壊**を避ける。 - 小規模 GPU では **LoRA/QLoRA**(低ランク適応・量子化)で効率化。 2. **選好学習** - **ペアワイズ比較**(良/悪)を収集し、方針を「より好ましい応答」へ一貫して更新。 - DPO 系:明示の RL なしでロジスティック損失+参照モデルとの KL を暗黙制御。 3. **RLHF/RLAIF** - 報酬モデル(RM)で応答スコアリング。PPO などで方策更新しつつ KL で暴走抑制。 - **プロセス監督**(推論途中の品質を評価)や **段階型カリキュラム**で推論力を伸ばす。 4. **安全性微調整** - 危険・不適切領域の拒否、迂回誘導、根拠要求への対応。 - **逆プロンプト耐性**(プロンプトインジェクション等)データでの強化。 - レッドチーミング(人/自動)でギャップを継続的に埋める。 --- ## 8. ツール使用・RAG・マルチモーダル - **ツール使用**:関数呼び出しフォーマットを固定し、**観測(ツール出力)→要約**の往復を SFT/選好学習で学習。 - **RAG(検索拡張)**: - 索引(分割・埋め込み・圧縮)、再ランキング、**コンテキスト汚染**(参照の無秩序貼り付け)を防ぐプロンプト設計。 - 訓練側では「検索前提の応答」データで**外部知識利用の方略**を学習。 - **マルチモーダル**:視覚塔+LLM の結合、画像指示追従の SFT、画像・テキスト混在の会話データ整形。 --- ## 9. 評価と検証 - **事前学習指標**:損失、perplexity(領域別)。 - **機能評価**:QA、コード、数学、要約、翻訳、多言語、長文、ツール使用。 - **安全評価**:有害生成、偏り、公平性、プライバシー漏洩、プロンプトインジェクション耐性。 - **人間評価**:**ペア比較**(勝率)を主指標に。 - **汚染チェック**:評価セットと学習コーパスの重複除去、n-gram/ハッシュ照合。 - **統計**:信頼区間、分布別の分解(例:質問難易度別)、有意差検定。 - **回帰防止**:モデル更新ごとに**基準スイート**で継続的評価。 --- ## 10. プライバシー・著作権・倫理・セキュリティ - **プライバシー**:PII 除去、差分プライバシー的手法(ユースケース次第)、モデルからの訓練記憶漏洩の監査。 - **著作権**:ライセンス遵守、テイクダウン対応、出典追跡。 - **安全性**:ハームカテゴリ別の拒否方針、説明可能性(出典提示・自信指標)、誤情報抑制。 - **セキュリティ**:データ・モデルの機密保持、サプライチェーン(依存ライブラリ)管理、学習クラスタの隔離。 --- ## 11. ロングコンテキストと推論(Reasoning)強化 - **長文学習**:RoPE スケール、長文バッチ、合成連結+本物長文の混合。 - **推論データ**:分解・計画・ツール併用の**プロセス指向**データで SFT→選好。 - **テスト時計算の活用**:自己検査・多数決・逐次改善の方略を、訓練で**適切に使う振る舞い**として学習。 --- ## 12. 実装指針(ハイパーパラメータの目安) > 数値は規模・データ質で変わります。以下は**方向性**の例。 - **学習率**:事前学習で 1e‑4 前後から、数百〜数千ステップのウォームアップ後にコサイン減衰。微調整はもう一段小さく。 - **バッチ設計**:大バッチほど安定だが過学習の兆候(損失急落→停滞)に注意。 - **重み減衰**:1e‑2〜1e‑4 の範囲で要探索。 - **勾配クリップ**:global norm で固定(例:1.0 など)。 - **混合精度**:BF16 を第一候補。 - **データ反復**:高品質セットは複数エポック回す価値あり。低品質は 1 パス。 --- ## 13. 典型的な落とし穴 - 評価セット汚染(性能の過大評価)。 - 役割トークン不整合(SFT→実運用で壊れる)。 - 混ぜすぎたデータミクス(方針がぶれて選好学習が効かない)。 - RLHF の KL 制御不足(過度な冗長・保守的/逆に攻撃的)。 - 長文学習での数値不安定(RoPE 設定や学習率が要因)。 - LoRA/QLoRA の過学習(少数高品質データで rank/正則化を要調整)。 - モデル更新での**回帰**(安全性やツール使用が後退)。 ## 14. 開発ロードマップ(規模別の現実解) **A. 少リソース(数枚 GPU)** 1. 既存オープン LLM を選定 → 目的に合わせて **QLoRA で SFT**。 2. 必要なら小規模で **選好最適化(DPO 系)** を追加。 3. 評価・安全性チェック → RAG/ツール接続で機能補完。 **B. 中リソース(十数〜数十枚 GPU)** 1. ドメイン混合を設計した **SFT** + **選好学習**。 2. ロングコンテキスト・ツール使用・多言語などの**専門データバケット**を別途用意して重み付け。 3. ランブック(障害時対応)、データ版管理、回帰防止の自動評価パイプライン。 **C. 大規模(数百〜)** 1. 事前学習用コーパスの品質・ dedup の徹底。 2. DP/TP/PP+ZeRO/FSDP の最適化、プロファイリングとホットスポット解消(I/O、[[KVキャッシュ]]、通信)。 3. 事前学習→段階的 SFT→選好/RLHF→安全性調整の**多段カリキュラム**と、フェーズごとのゲート(評価基準を満たすまで次へ進めない)。 ## 15. 簡易「工程→決定→注意点」表 |工程|主な決定|失敗パターン| |---|---|---| |データ収集|出典、ライセンス、言語/領域比率|汚染・PII 漏れ・低品質過多| |前処理|正規化・dedup・品質推定|重複・機械生成混入・文書境界喪失| |トークナイザ|方式/語彙/特殊トークン|コード・多言語のカバレッジ不足| |アーキ|位置表現、MQA/GQA、MoE|長文不安定、負荷偏り| |最適化|LR/スケジュール、精度、正則化|勾配爆発、過度正則化、過学習| |並列化|DP/TP/PP、ZeRO/FSDP|通信律速、I/O 待ち| |微調整|SFT→選好→安全|方針ぶれ、KL 不足、拒否過多| |評価|汎用・安全・人間比較|セット汚染、統計不足| |運用|RAG/ツール、監視|回帰・ハルシネーション未検知| ## 16. まとめ - **事前学習**で基礎能力、**微調整**で用途と規範への整合、**評価と安全性**で品質保証、という三層構造。 - 成否の鍵は **データ品質と混合設計**、**安定した最適化**、**分散実装の健全性**。 - 近年は **選好最適化(PPO に依らない手法)** と **ツール/RAG/長文への適応** が主戦場。運用では**継続的評価と回帰防止**が不可欠。