Skip to main content
PromptQuorumPromptQuorum

投機的デコーディングとは

クイック回答

投機的デコーディングは、小さなドラフトモデルと大きなターゲットモデルを組み合わせます。ドラフトモデルが数トークン先まで提案し、ターゲットモデルはトークンごとに逐次検証するのではなく、1回の並列フォワードパスですべて検証します。ドラフトの提案が採用されれば、生成が高速化します。

  • 小さなドラフトモデルが、メインモデルより先に複数のトークンを提案します。
  • より大きなターゲットモデルが、提案されたトークンを1回の並列パスで検証します。
  • 出力品質はターゲットモデルとまったく同じです — 投機的デコーディングは生成内容ではなく、速度だけを変えます。

更新: 2026年7月14日

Technique & Concept Explainers中級

重要なポイント

  • 小さなドラフトモデルが先にトークンを提案し、大きなターゲットモデルが1回の並列パスで検証する
  • 出力品質はターゲットモデル単体での実行と同一 — 変わるのは速度のみ
  • コードや反復構造など予測しやすいテキストでは、ドラフトモデルの的中率が上がり、速度向上が最大になる
  • ドラフトモデルはターゲットモデルと同じトークナイザーと語彙を共有する必要がある

仕組み

ターゲットモデルよりはるかに小さく高速なドラフトモデルが、候補トークンの短い系列を生成します。ターゲットモデルはその系列全体を1回のフォワードパスで評価し、自身が単独で生成したであろう内容と一致するトークンを採用し、それ以外(最初の不一致以降に生成されたものも含む)を破棄します。

複数トークンを並列で検証するコストは、ターゲットモデル上でトークンを1つ逐次生成するコストとほぼ同じであるため、採用された提案はそのまま最終出力を変えずに速度向上へとつながります。ターゲットモデルには常に最終決定権があり、ドラフトモデルの誤った予測は、その生成に要したわずかな時間を消費するだけで、出力に採用されることはありません。

投機的デコーディングが最も効果的な場面

コードや構造化データなど、予測しやすいテキストを生成する場合に投機的デコーディングを使いましょう。ドラフトモデルの提案が高い割合で採用され、速度向上が最大になります。プロンプト処理速度ではなく生成速度がボトルネックになっている場合にも有効です。投機的デコーディングはトークンごとの生成ステップを specifically 高速化するためです。

自由創作やブレインストーミングのような、非常に創造的で予測しにくいテキストを生成する場合は投機的デコーディングを避けましょう。ドラフトモデルの提案が採用される割合が下がり、速度向上が縮小します。最悪の場合、ドラフトモデルの追加オーバーヘッドが利得を相殺することもあります。同じファミリーの互換性のある小型モデルをドラフトモデルとして用意できない場合も避けるべきです。

ドラフトモデルのセットアップ

ドラフトモデルはターゲットモデルと同じトークナイザーと語彙を共有する必要があります。異なるファミリーのモデルを組み合わせたり、バージョン間で語彙が変わった同一モデルの異なるサイズを組み合わせたりすると機能しません。最も一般的な構成は、ターゲットと同じファミリーの小型モデルを使うことです(例:同じファミリーの13Bクラスモデルに対して1Bクラスのモデルをドラフトとして使う)。

llama.cppを含む複数のローカル推論ツールが投機的デコーディングをネイティブにサポートしています。セットアップでは通常、起動時にターゲットモデルとドラフトモデルの両方を指定するだけでよく、プロンプトの書き方を変える必要はありません。

よくある質問

投機的デコーディングは出力品質を低下させますか?
いいえ — 採用されるすべてのトークンは依然としてターゲットモデルが決定します。投機的デコーディングが変えるのはトークンが生成される速度だけで、生成される内容は変わりません。
投機的デコーディングには追加のVRAMが必要ですか?
はい — ドラフトモデルとターゲットモデルを同時にロードする必要があるため、ターゲットモデル単体を実行する場合よりVRAM使用量は増えます。このオーバーヘッドを管理しやすくするため、ドラフトモデルは意図的に小さいものが選ばれます。
どんな小型モデルでもドラフトモデルとして使えますか?
いいえ — トークンレベルの検証を機能させるには、ドラフトモデルがターゲットモデルとトークナイザーおよび語彙を共有している必要があります。実際には、ターゲットと同じモデルファミリーの小型モデルを使うのが一般的です。
実際のところ投機的デコーディングはどれくらい速くなりますか?
速度向上の度合いは、ドラフトモデルの提案がどれくらいの頻度で採用されるかに大きく依存し、コンテンツの種類によって変わります。コードや構造化出力のような予測しやすいテキストは、自由な創作テキストより速度向上が大きくなります。固定の倍率はなく、実際の利得は自分のワークロードでテストして確認してください。