大規模言語モデル(LLM)
Large Language Models — GPT から Claude へ — 上級(研究者・実務者向け)
大規模言語モデル(LLM: Large Language Model)とは、 自己回帰型 Transformer を数十億〜数兆パラメータ規模に拡大し、 大量のテキストデータで事前学習した言語モデルである。 事前学習後、RLHF などのアラインメント手法で 人間の意図に沿った応答を生成できるよう調整される。 本記事では、注意機構と Transformer の理解を前提に (未読の場合は先に参照されたい)、 LLM 固有の技術を体系的に解説する。
1. トークナイゼーション(Tokenization)
LLM はテキストを直接処理するのではなく、まずトークンと呼ばれる 部分文字列の列に変換する。語彙サイズと未知語の扱いがモデル性能に直結するため、 サブワード分割が標準的に用いられる。
BPE(Byte-Pair Encoding)のアルゴリズム
- 初期語彙を文字(またはバイト)レベルに設定する
- コーパス内で最も頻出する隣接トークン対を見つける
- そのペアを新しいトークンとしてマージし、語彙に追加する
- 目標語彙サイズに達するまで 2〜3 を繰り返す
例: "l o w" と "l o w e r" が頻出すると、まず "lo" → "low" とマージされ、 効率的な部分文字列表現が得られる。
2. LLM のアーキテクチャ(Architecture)
現代の LLM は、Transformer デコーダをベースとし、 いくつかの改良を加えた構造を採用している。
RMSNorm
LayerNorm から平均の減算を除去し、二乗平均平方根(RMS)のみで正規化する軽量な手法である。
$$\text{RMSNorm}(\boldsymbol{x}) = \frac{\boldsymbol{x}}{\sqrt{\frac{1}{d}\sum_{i=1}^{d} x_i^2 + \epsilon}} \odot \boldsymbol{\gamma}$$RoPE(Rotary Position Embedding)
相対位置情報を、Query と Key のベクトルに回転行列を乗じることで注入する。 $d$ 次元ベクトルを2次元ずつのブロックに分割し、 各ブロックに位置 $m$ に応じた回転を施す:
$$\begin{pmatrix} x'_{2i} \\ x'_{2i+1} \end{pmatrix} = \begin{pmatrix} \cos m\theta_i & -\sin m\theta_i \\ \sin m\theta_i & \cos m\theta_i \end{pmatrix} \begin{pmatrix} x_{2i} \\ x_{2i+1} \end{pmatrix}, \quad \theta_i = 10000^{-2i/d}$$この回転により、位置 $m$ の Query と位置 $n$ の Key の内積は 位置差 $m - n$ のみに依存する。 絶対位置エンコーディングと異なり相対位置情報が自然に注入され、 かつ学習パラメータを追加しない。
Grouped-Query Attention(GQA)
MHA(Multi-Head Attention)では各ヘッドが独立の Q, K, V を持つが、 GQA では複数の Query ヘッドが Key-Value ヘッドを共有する。 これにより KV キャッシュのメモリ使用量を削減しつつ、MHA に近い性能を維持する。
MHA vs MQA vs GQA
- MHA(Multi-Head): 各ヘッドに独立の K,V → メモリ大
- MQA(Multi-Query): 全ヘッドで K,V を共有 → メモリ最小、精度やや低下
- GQA(Grouped-Query): G グループで K,V を共有 → MHA と MQA の中間
SwiGLU
ReLU を Swish(SiLU)に置き換え、ゲート機構を加えた活性化関数である。
$$\text{SwiGLU}(\boldsymbol{x}) = (\boldsymbol{x} W_1) \odot \text{Swish}(\boldsymbol{x} W_\text{gate}) \cdot W_2$$$\text{Swish}(x) = x \cdot \sigma(x)$ であり、$\sigma$ はシグモイド関数である。
3. スケーリング則(Scaling Laws)
LLM の研究で最も重要な発見の一つが、モデル性能とスケールの関係を定量的に記述する スケーリング則(Scaling Laws)である。
Kaplan のスケーリング則
テスト損失 $L$ は、パラメータ数 $N$、データ量 $D$、計算量 $C$ に対してそれぞれべき乗則に従う:
$$L(N) \propto N^{-0.076}, \quad L(D) \propto D^{-0.095}, \quad L(C) \propto C^{-0.050}$$これは、モデルを 10 倍大きくすると損失が一定量改善し、 さらに 10 倍にするとまた同じ量改善する、という予測可能な関係を意味する。 ただしこれらの指数は、他の2変数が十分に大きい(ボトルネックにならない)場合の値であり、 実際にはデータ量や計算量が不足すると収束が鈍化する。
Chinchilla のスケーリング則
Hoffmann et al. (2022) は、計算予算が固定された場合の最適なパラメータ数とデータ量の関係を導いた。
Chinchilla 最適則
計算予算 $C$ に対して、最適なパラメータ数 $N^*$ と訓練トークン数 $D^*$ はともに $C$ に比例してスケールすべきである:
$$N^* \propto C^{0.50}, \quad D^* \propto C^{0.50}$$つまり、パラメータ数を 2 倍にするなら、訓練データも 2 倍にすべきである。 これは、当時の多くのモデル(GPT-3 など)が過小訓練であったことを示唆した。
- GPT-3(175B パラメータ):300B トークンで訓練 → Chinchilla 基準では約 3.5T トークンが最適
- Chinchilla(70B パラメータ):1.4T トークンで訓練 → GPT-3 より小さいが性能は同等以上
- LLaMA 2(70B パラメータ):2T トークンで訓練 → Chinchilla 最適を超過
- LLaMA 3(8B パラメータ):15T トークンで訓練 → Chinchilla 最適の約 100 倍
オーバートレーニング戦略
Chinchilla 則は「訓練コスト最小化」の最適であり、 「推論コスト最小化」の最適ではない。 LLaMA 3 のように小さなモデルを Chinchilla 最適を大幅に超えて訓練すると、 訓練コストは増加するが、デプロイ後の推論コストは 同性能の大型モデルに比べて大幅に削減される。 推論回数が訓練回数を圧倒的に上回る実運用では、 この「オーバートレーニング」戦略が経済的に合理的であり、 現在の主流となっている。
4. 事前学習(Pre-training)
LLM の事前学習は、大規模コーパスに対する次トークン予測(Causal Language Modeling)である。
事前学習の目的関数
トークン列 $x_1, x_2, \ldots, x_T$ に対して、自己回帰的な対数尤度を最大化する:
$$\mathcal{L}_{\text{pretrain}} = -\sum_{t=1}^{T} \log P_\theta(x_t \mid x_1, \ldots, x_{t-1})$$訓練データ
典型的には Web クロール(CommonCrawl 等)、書籍、論文、コードなど数兆トークン規模のコーパスを使用する。 データの品質(重複除去、フィルタリング)が性能に大きく影響する。
訓練の安定性
- 学習率スケジューラ:ウォームアップ + コサイン減衰が標準
- 勾配クリッピング:勾配ノルムを制限し訓練の崩壊を防止
- 混合精度訓練:BF16/FP16 で計算しつつ FP32 でマスター重みを保持
- 分散訓練:データ並列、テンソル並列、パイプライン並列を組み合わせ
5. RLHF(人間のフィードバックによる強化学習)
事前学習だけでは、LLM は有害なコンテンツを生成したり指示に従わなかったりすることがある。 RLHF(Reinforcement Learning from Human Feedback)は、 人間の好みに沿うようモデルを調整する手法で、ChatGPT の成功の鍵となった技術である。
RLHF の3ステップ
-
教師ありファインチューニング(SFT)
人間が書いた高品質な指示+応答ペアで、事前学習モデルを微調整する。 -
報酬モデル(RM)の訓練
同じプロンプトに対する複数の応答を人間がランク付けし、 そのランキングを再現するスカラー報酬を出力するモデルを訓練する。 損失関数は Bradley-Terry モデルに基づく: $$\mathcal{L}_{\text{RM}} = -\log \sigma\bigl(r_\theta(x, y_w) - r_\theta(x, y_l)\bigr)$$ ここで $y_w$ は好ましい応答、$y_l$ はそうでない応答である。 -
PPO(Proximal Policy Optimization)による強化学習
報酬モデルのスコアを報酬として、SFT モデルを方策とする強化学習を行う: $$\max_\pi \mathbb{E}_{x \sim \mathcal{D},\, y \sim \pi(\cdot|x)}\bigl[r_\theta(x, y)\bigr] - \beta \cdot D_{\text{KL}}\bigl(\pi \| \pi_{\text{SFT}}\bigr)$$ KL ペナルティにより、SFT モデルからの過度な乖離を防ぐ。
DPO(Direct Preference Optimization)
Rafailov et al. (2023) が提案した手法で、報酬モデルの明示的な訓練を省略し、 人間のランキングデータから直接方策を最適化する。 PPO のような強化学習ループを使わず、 好ましい応答と好ましくない応答の確率比を直接学習する点が核心である。
$$\mathcal{L}_{\text{DPO}} = -\log \sigma\left(\beta \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right)$$PPO のような不安定な強化学習ループが不要で、 教師あり学習と同じ枠組みで実装できるため、実用上広く採用されている。
Constitutional AI(RLAIF)
人間のラベル付けの代わりに、AI 自身が「憲法」(原則のリスト)に基づいて 応答を評価・改善する手法である。Anthropic の Claude で採用されている。
その他のアラインメント手法
DPO の発展形として、SFT と選好最適化を単一ステップに統合する ORPO(Odds Ratio Preference Optimization)や、 参照モデルを不要とする SimPO など、 より簡素で効率的なアラインメント手法が次々と提案されている。
6. 推論の最適化(Inference Optimization)
数十億パラメータの LLM を実用的な速度で動作させるには、推論の最適化が不可欠である。
KV キャッシュ
自己回帰生成では、新しいトークンを 1 つ生成するたびに全トークンの Attention を再計算する。 KV キャッシュは過去のトークンの Key と Value を保持し、再計算を回避する。
KV キャッシュのメモリ量
$L$ 層、KV ヘッド数 $n_{\text{kv}}$、ヘッド次元 $d_k$、 シーケンス長 $S$、バッチサイズ $B$ のとき、 KV キャッシュの FP16 メモリ量は:
$$\text{Memory}_{\text{KV}} = 2 \times 2 \times B \times L \times S \times n_{\text{kv}} \times d_k \;\text{bytes}$$MHA では $n_{\text{kv}} = n_{\text{heads}}$ なので $n_{\text{kv}} \times d_k = d_{\text{model}}$ となる。 例: MHA 構成で $L=80,\; d_{\text{model}}=8192,\; B=1,\; S=4096$ → 約 10 GB。 一方、LLaMA 2-70B は GQA を採用し $n_{\text{kv}} = 8$(Query ヘッド数 64)であるため、 KV キャッシュは $8/64 = 1/8$ に削減され約 1.3 GB となる。
量子化
重みやアクティベーションを低ビット(INT8, INT4, NF4 など)で表現し、 メモリ使用量と計算量を削減する。
- GPTQ: 重みのみの事後量子化(Post-Training Quantization)
- AWQ: 活性化の分布を考慮した重み量子化
- GGUF: llama.cpp 向けの量子化フォーマット(CPU 推論に最適化)
- bitsandbytes: QLoRA で使用される NF4 量子化
継続的バッチングと PagedAttention
従来の静的バッチングでは、バッチ内の最長シーケンスに合わせて全リクエストが待機するため GPU 利用率が低下する。継続的バッチング(Continuous Batching)は、 完了したリクエストを即座にバッチから除去し新しいリクエストを挿入することで、 スループットを大幅に向上させる。
PagedAttention(vLLM で採用)は、KV キャッシュをページ単位で管理する OS の仮想メモリに着想を得た手法である。 シーケンスごとに連続メモリを確保する必要がなくなり、 メモリの断片化を解消してバッチサイズを拡大できる。
投機的デコーディング(Speculative Decoding)
小さな「ドラフトモデル」で複数トークンを先読み生成し、 大きな「ターゲットモデル」で一括検証する。 ターゲットモデルの出力分布は変わらないまま、生成速度を 2〜3 倍に向上させる。
必要 VRAM 簡易計算機
推定 VRAM: 35.0 GB
※ 重みのみの概算値。KV キャッシュやアクティベーションのメモリは含まない。
7. 主要モデルの系譜(Model Lineage)
| モデル | 年 | パラメータ数 | 特徴 |
|---|---|---|---|
| GPT-3 | 2020 | 175B | Few-shot 学習の実証 |
| PaLM | 2022 | 540B | Pathways システム、Chain-of-Thought |
| ChatGPT | 2022 | — | RLHF で対話に特化 |
| LLaMA 2 | 2023 | 7B〜70B | オープンウェイト、GQA |
| GPT-4 | 2023 | 推定 1T+ | マルチモーダル(テキスト+画像) |
| GPT-4o | 2024 | — | テキスト・画像・音声の統合マルチモーダル |
| Claude 3.5 | 2024 | — | Constitutional AI、200K 文脈長 |
| LLaMA 3 | 2024 | 8B〜405B | 15T+ トークン、オーバートレーニング |
| Gemma 2 | 2024 | 2B〜27B | 小型高効率、知識蒸留 |
| Qwen 2.5 | 2024 | 0.5B〜72B | 多言語対応、MoE 版あり |
| DeepSeek-V3 | 2024 | 671B (MoE) | Mixture-of-Experts、高効率 |
8. 新興トピック(Emerging Topics)
Mixture of Experts(MoE)
FFN 層を複数の「エキスパート」に分割し、ルーターが各トークンに対して 上位 $k$ 個のエキスパートのみを活性化する。 総パラメータ数は大きいが、推論時の計算量は小さい。
$$y = \sum_{i=1}^{k} g_i \cdot E_i(x), \quad g_i = \text{TopK}\bigl(\text{softmax}(W_r \cdot x)\bigr)_i$$長文脈への対応
- RoPE の外挿: YaRN, NTK-aware scaling で訓練長を超える文脈に対応
- Ring Attention: GPU 間でシーケンスを分割し、百万トークン級の文脈を処理
マルチモーダル LLM
テキストだけでなく画像・音声・動画を統合的に処理する。 画像は ViT でパッチ埋め込みに変換し、テキストトークンと同じ系列に連結する。 GPT-4V、Claude 3、Gemini などが代表例である。
ツール使用とエージェント
LLM が外部ツール(検索エンジン、計算機、API)を呼び出すことで、 知識の制限や計算能力の限界を補完する。 RAG もこの枠組みの一種である。
まとめ
- トークナイゼーション:BPE / SentencePiece でサブワード分割
- アーキテクチャ:RMSNorm + RoPE + GQA + SwiGLU が現代の標準構成
- スケーリング則:損失はパラメータ数・データ量のべき乗に従う
- 事前学習:数兆トークンに対する次トークン予測
- RLHF / DPO:人間の好みに沿うよう方策を最適化
- 推論最適化:KV キャッシュ、量子化、投機的デコーディング
- 新興技術:MoE、長文脈、マルチモーダル、エージェント
参考文献
- Vaswani et al., "Attention Is All You Need" (2017)
- Kaplan et al., "Scaling Laws for Neural Language Models" (2020)
- Hoffmann et al., "Training Compute-Optimal Large Language Models" (Chinchilla, 2022)
- Ouyang et al., "Training language models to follow instructions with human feedback" (InstructGPT, 2022)
- Rafailov et al., "Direct Preference Optimization" (DPO, 2023)
- Touvron et al., "Llama 2: Open Foundation and Fine-Tuned Chat Models" (2023)
- Su et al., "RoFormer: Enhanced Transformer with Rotary Position Embedding" (RoPE, 2021)
- 大規模言語モデル - Wikipedia
よくある質問
Q: ローカル環境で LLM を動かすことはできますか?
A: 量子化技術(GGUF, AWQ 等)により、7B〜13B パラメータのモデルであれば 16 GB 程度の VRAM を持つ GPU で動作する。 llama.cpp を使えば CPU のみでの推論も可能であるが、速度は大幅に低下する。 70B 以上のモデルには 48 GB 以上の VRAM(A6000, H100 等)が必要になる。
Q: RLHF と DPO はどちらを使うべきですか?
A: DPO は報酬モデルの訓練と PPO による強化学習ループが不要で、 実装が容易かつ学習が安定するため、実務では DPO が広く採用されている。 一方、報酬モデルを明示的に制御したい場合や、 オンライン学習を行いたい場合は RLHF が適する。
Q: LLM の推論にはどの程度の GPU が必要ですか?
A: FP16 の場合、パラメータ数 × 2 バイトが最低限の VRAM 容量となる (70B モデルなら約 140 GB)。INT4 量子化を使えば約 1/4 に削減でき、 70B モデルでも 40 GB 程度の VRAM で動作する。 KV キャッシュの追加メモリ(長文脈ほど大きい)も考慮する必要がある。