第9章 — 投機的デコード
LLM Primer VI: AIシステムのスケーリング を章ごとに紹介していくウォークスルー、第9回。自己回帰の逐次ボトルネックには数学的な抜け穴があると分かる章 — そして、それが割に合う条件の算術を示します。
なぜこの章があるのか
第7章と第8章は同時実行数を攻め、GPUを多数の系列にわたって忙しく保ちました。どちらも、各系列が反復あたり1出力トークンを受け取るという事実は変えません。その床は逃れられないように見える。Transformerの順伝播は本当に直前に選ばれたトークンに依存するからです。投機的デコードの観察は、依存性は 生成 にあって 検証 にはない、というもの。トークン t+1 の候補が与えられれば、ターゲットモデルは「私はこれを選んだか?」と「候補が正しいと仮定した t+2 の分布」の両方を1回の順伝播で問える。第9章は機構、ドラフトアルゴリズム(EAGLE、Medusa、Lookahead、MTP、n-gram、suffix)、そして投機が勝ちになる条件の算術を歩きます。
9.1 検証の洞察は正確さを厳密に保つ
安価なドラフト機構がN個の候補トークンを提案します。ターゲット — 我々が求める高価なモデル — はプレフィックスとN候補を連結したものに対して1回の順伝播を走らせる。Transformerの順伝播は位置にわたって並列なので、ターゲットはその1回のパスでN+1位置それぞれの自身の次トークン分布を生む。候補がターゲットと一致する最長プレフィックスが受理され、最初の不一致でエンジンはターゲット自身の選択にコミットして残りを捨てる。受理規則 — ドラフトqから引かれたxをmin(1, p(x)/q(x))の確率で受理し、そうでなければ正規化された残差(p−q)₊からサンプル — により、出力分布は素のターゲットサンプリングと同一になります。投機は正確さを保存する。ドラフトは速度にしか影響しない。現代のGPUではN=4での検証パスは通常のデコードステップのおおよそ1.2〜1.5倍のコストです。アテンションがN+1のクエリ位置にまたがるからですが、メモリ律速の領域にはよく留まります。
9.2 EAGLEはドラフトをターゲットの隠れ状態に結ぶ
初期の実装は別の小さなモデルをドラフトとして使いました — Llama-7BがLlama-70Bをドラフトする — 動きますがドラフトの重みの第二のHBMストリームがコストで、2つのモデルが表現を共有しないため受理率に上限があります。EAGLEは2024〜2025年にEAGLE-2、EAGLE-3を通じて洗練され、ドラフトをターゲットに結びます。ターゲットの次層隠れ状態を予測するよう訓練された単一のTransformer層で、ターゲット自身の出力埋め込みを通して射影される。流すべき別の7Bの重みはなく、ドラフトヘッドは数百MB。EAGLE-2は動的なドラフトツリー拡張 — カスタムマスク付きで1回のアテンションパスで検証される候補ツリー — を加え、ターゲットはドラフトの単一推測ではなく複数パスの中から最良を選ぶ。EAGLE-3は多層特徴混合を追加し、末尾層だけでなく中間層のターゲットを消費する。受理率はチャットとコードでN 5〜8のとき75〜85パーセントに着地し、素のデコード比3〜4倍のエンドツーエンドスピードアップに変換されます。Medusaは別の道 — 自己回帰的にではなく1パスで複数の未来トークンを予測する並列ドラフトヘッド — で、より単純な訓練物語とわずかに低い受理率を持ちます。N-gramとsuffixデコードは、ドラフトが最近のコンテキストへの参照ルックアップに過ぎない繰り返しワークロード(コード編集、テンプレート出力)にとってのフリーランチです。
9.3 検証パス自体が上限になる
スピードアップの式は明確に書けます: E[受理トークン数] / (T_draft/T_decode + 1 + α·N)。ここでαは位置あたりの検証オーバーヘッドで、通常0.05〜0.15。2つの上限が見えます。第一に、α·NはNとともに増えるので、Nを無限に増やしても助けにならない。ピークはp=0.8でN=6〜8、p=0.9でN=10〜12あたり。Nをハードコードするエンジンはワークロード変動に対する最適から外れる。第二に、より微妙ですが、pが1に近づくときの漸近的なスピードアップは 1/α — α=0.10で約10倍、α=0.05で約20倍 — 検証パス自体が壁だからです。本番エンジンは非常に繰り返しの多いワークロードでこの範囲のピークスピードアップを測定し、それを超えていません。投機はバッチングとも相互作用します。高バッチサイズではターゲットの順伝播はすでに演算律速に近く、追加の検証トークンがそこをさらに押し、スピードアップはバッチが伸びるにつれ縮む。投機の甘い場所は、レイテンシ重視ワークロードでの低〜中バッチサイズ — まさに第1章の未使用演算が生きる領域です。
第9章が敷いたもの
第5章から第9章でモデルとランタイムの道具箱を出し尽くしました — 量子化、プルーニング、蒸留、バッチング、ページ化KV、投機的デコード。どれも pip install して忘れられるライブラリとしては出荷されません。誰かがこれらをGPU上の1つのモデルを所有し、連続バッチを走らせ、推論APIを公開するランタイムに配線しなければならない。そのランタイムがエンジンです。第10章は2026年のスタックを支配する5つのエンジン — vLLM、TensorRT-LLM、SGLang、TGI、Ollama — と、与えられた配備にとって正しい選択を決める機構的なトレードオフを歩きます。
次回 — 第10章: LLMエンジン層。 vLLM、TensorRT-LLM、SGLang、TGI、Ollama — 単一ノードランタイムとしてのエンジン、ベンチマークではなく機構で選ぶ。