LLMの応答が1トークンずつしか出てこない——そのボトルネックを「先読みと並列検証」で突破する手法が、研究者・開発者の間で注目されています。

Speculative Decoding(投機的デコーディング)は、小さなドラフトモデルを使って推論を並列化し、出力品質を一切変えずに最大8.7倍の速度向上を実現する技術です。2025年から2026年にかけて複数の研究機関が改良版を発表し、vLLMやTensorRT-LLMといった主要な推論フレームワークもネイティブサポートを完了しています。

この記事でわかること:

  • LLM推論がなぜGPUを使い切れないのか
  • Speculative Decodingのドラフト・検証サイクルの仕組み
  • 最新研究が示す最大8.7倍の速度向上とその手法の違い
  • vLLMで実装する方法と効果が出る条件

LLMの推論はなぜGPUを使い切れないのか

Transformerベースの言語モデルは、テキストを1トークンずつ生成します。次のトークンを計算するには前のトークンが必要で、この処理は並列化できません。

GPUは大量の並列演算を得意としますが、トークン生成は主にメモリから重みを読み出す処理です。計算能力はあっても、メモリ帯域幅がボトルネックになっています。結果として、GPU演算の大部分が待機状態のまま推論が進みます。

Googleのリサーチブログ「Looking back at speculative decoding」では、「LLM推論はメモリバウンドであり、多くの次トークンは文脈から明らかに予測できる」という2つの観察から、この手法のアイデアが生まれたと解説されています(参考)。

小さなモデルが先読みし、大きなモデルが検証する

Speculative Decodingは、2段階のループで動作します。

まず、小さく高速な「ドラフトモデル」が次のK個のトークンを一気に生成します。次に、大きな「ターゲットモデル」がこのK個のトークンを1度のフォワードパスで並列検証します。ターゲットが同意するトークンはそのまま採用され、意見が分かれた時点で処理を打ち切り、ターゲット自身が1トークンを生成してから次のサイクルへ進みます。

この仕組みの本質は「検証は並列化できる」という点です。ターゲットモデルがK個のトークンをまとめて処理するため、1トークンずつ処理するよりGPUの計算を大幅に活用できます。出力はターゲットモデルが単独で生成した場合と統計的に等価になるため、精度は変わりません。

速度向上を左右するのは「受け入れ率(acceptance rate)」です。ドラフトモデルの提案がターゲットの予測と一致する確率が高いほど効果が出ます。一致率が低い場合は、ドラフト生成と検証のコストが無駄になります。

最新研究が示す最大8.7倍の高速化

標準的なSpeculative Decodingは、実用環境で2〜3倍の速度向上が一般的です。しかし2025年以降の研究はこれを大幅に上回っています。

Speculative Diffusion Decoding(SpecDiff)はドラフト生成に離散拡散モデルを用いる手法で、NAACL 2025に採録されました。ドラフトと検証の両方を並列化することで、標準的な自己回帰生成と比べて最大8.7倍、既存の投機的デコーディング手法と比べて最大2.5倍の速度向上を実証しています(論文)。

Mirror Speculative Decoding(Mirror-SD)はAppleの研究チームが2025年12月に発表した手法です。GPUとNPUを組み合わせたヘテロジニアス実行と、ドラフトの複数トークン同時出力を組み合わせています。14Bから66BのサーバースケールモデルでEAGLE3を平均30%上回り、2.8〜5.8倍の速度向上を達成しています(論文)。

IntelとWeizmann Instituteの研究は、ドラフトモデルとターゲットモデルの語彙が異なる場合でも使えるアルゴリズムを開発しました。ICML 2025で発表されており、異なるベンダーのモデルを組み合わせた構成で最大2.8倍の高速化を実現します。Hugging Face Transformersライブラリに統合済みで、追加実装なしに利用できます(参考)。

vLLMで実装する方法

https://docs.vllm.ai/en/latest/features/spec_decode.html

vLLMはSpeculative Decodingをネイティブでサポートしています。起動時に --speculative-model でドラフトモデルを指定し、--num-speculative-tokens で1サイクルあたりの先読みトークン数を設定するだけで有効になります。

python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-3.3-70B-Instruct \
    --speculative-model meta-llama/Llama-3.2-1B-Instruct \
    --num-speculative-tokens 5

ドラフトモデルはターゲットと同アーキテクチャの小型版を選ぶと受け入れ率が上がりやすいです。EAGLEのように、ターゲットモデルの中間層を直接活用する専用ドラフトモデルも有効な選択肢です。

BentoMLがLlama-3.3-70B-Instructで行った実測では、αが0.6以上でγが5以上の条件下で2〜3倍のスピードアップが確認されています(参考)。

効果が出る条件と出ない条件

Speculative Decodingの効果はワークロードによって大きく変わります。

バッチ処理が多い高並列環境では、ドラフトモデルとターゲットモデルを同時にメモリに乗せるコストが問題になります。BentoMLの実測では、単一H100でのLlama-3.3-70B-Instructは並行リクエスト数が20〜30を超えるとスループットが頭打ちになる傾向がありました。マルチGPU構成(TP=2)ではこの上限が伸び、より高い負荷でも効果が維持されました。

受け入れ率はタスクのドメインに大きく依存します。コード補完のように次のトークンが高い確率で一意に決まる場合は受け入れ率が高く、効果が出やすいです。創作テキストや多様な回答が求められるタスクは受け入れ率が下がりやすいです。自分のワークロードに合わせてドラフトモデルをファインチューニングすることで受け入れ率を上げられます。

まとめ

推論の高速化は、モデルのスケールアップやGPU増強だけが選択肢ではありません。Speculative Decodingは「同じモデルをどう動かすか」を見直す方向性であり、vLLMなどの既存インフラにオプションを追加するだけで導入できます。研究の進化も速く、拡散モデルやヘテロジニアス実行との組み合わせで数倍規模の速度向上が続いています。まずは自分のワークロードで受け入れ率を計測してみることが、最初のステップです。