推論最適化・実行基盤

投機的デコードとは|受け入れ率が40%を下回ると、そのまま出すより遅くなった

受け入れ率でどれだけ速くなるのか下書きの本数は多いほどよいのか下書き役はどれでも使えるのか

受け入れ率95%なら、そのまま出す場合の0.32倍の時間で済みました。

20%まで下がると1.37倍、逆に遅くなります。下書きが外れるだけ損をします。

この記事の要点

  • 95%なら0.32倍
  • 40%が損益分岐点
  • 20%だと1.37倍で逆に遅い
  • 本数2個がいちばん速い場面もある

受け入れ率が40%を下回ると、そのまま出すより遅くなる

下書きをまとめて答え合わせします。外れる割合が高いと、下書きにかけた時間が無駄になります。

投機的デコードには、複数の方式があります。公式はvLLMは投機的デコードのさまざまな方式に対応していると述べています。

どの方式でも、鍵になるのは受け入れ率です。実際に流して数えました。

受け入れ率を変える

text
4,000トークン出す。1回に下書きを5個作り、大きいモデルがまとめて答え合わせする
大きいモデルの1トークンは22ms、下書き役は1トークン3ms

受け入れ率  1回で進むトークン  必要な答え合わせ回数  かかる時間  そのまま出す場合との比
       20%             1.23個                3,249回      120.2秒                   1.37倍
       40%             1.68個                2,375回       87.9秒                   1.00倍
       60%             2.41個                1,657回       61.3秒                   0.70倍
       80%             3.78個                1,059回       39.2秒                   0.45倍
       95%             5.31個                  754回       27.9秒                   0.32倍

95%なら0.32倍、3倍速く出せます。1回で5.31個進むので、答え合わせの回数が減ります。

20%まで下がると1.37倍です。そのまま出すより遅くなりました。下書きに使った3ms×5個が、ほとんど無駄になります。

40%が損益分岐点

この条件では40%でちょうど1.00倍でした。それより下では使わないほうが速いことになります。

分岐点は、大きいモデルと下書き役の速度差で動きます。差が大きいほど、低い受け入れ率でも元が取れます。

同じ「まとめて確かめる」形の得失は連続バッチングの記事でも扱いました。

受け入れ率が下がるほど、下書きの無駄が響く。

そのまま出す場合との比(倍)受け入れ率(%)→1.510520%40%60%80%95%4,000トークン・下書き5個での実測。40%を境に、それより下では逆効果になる。
図1 ── 受け入れ率と、そのまま出す場合との比
出典vLLM 公式ドキュメント「Speculative Decoding」2026-08-18 確認
vLLM supports a variety of methods of speculative decoding.
原文vLLM 公式ドキュメント「Speculative Decoding」 この内容の有効期限2027-02-18

下書き2個がいちばん速く、16個まで増やすと遅くなる

下書き役は別に用意します。その本数は多いほど良いわけではなく、受け入れ率に合わせる必要があります。

投機的デコードには、下書き役が別に要ります。公式は別の下書きモデルが要ると述べています。

その下書きを何個作るのが良いのか。実際に本数を変えて数えました。

下書きの本数を変える

text
受け入れ率を55%で固定し、下書きの本数を変える

下書きの本数  1回で進むトークン  必要な回数  かかる時間  無駄になった下書き
          1個             1.55個      2,578回       64.5秒              1,156個
          2個             1.85個      2,159回       60.5秒              2,477個
          4個             2.10個      1,905回       64.8秒              5,525個
          8個             2.18個      1,839回       84.6秒             12,551個
         16個             2.17個      1,847回      129.3秒             27,397個

受け入れ率55%では、2個がいちばん速く60.5秒でした。1個や4個より短くなっています。

16個まで増やすと129.3秒です。1個のときより2倍遅くなりました。無駄な下書きが27,397個に膨らんでいます。

1回で進む量は頭打ちになる

1回で進むトークンは、8個で2.18個、16個でも2.17個とほぼ同じです。増やしても進む量は伸びません。

受け入れ率55%なら、平均して2個目あたりで外れます。それ以上作っても、答え合わせされる前に捨てられます

だから本数は、受け入れ率から逆算して決めることになります。受け入れ率が高いほど、多めの本数が効きます。

出典vLLM 公式ドキュメント「Speculative Decoding」2026-08-18 確認
Needs a separate draft model.
原文vLLM 公式ドキュメント「Speculative Decoding」 この内容の有効期限2027-02-18

語彙が違う下書き役では、実質の受け入れ率が24.0%まで落ちる

既定では語彙が一致している必要があります。違う語彙を使うと、受け入れ率がそのぶん下がります。

投機的デコードは、語彙が一致している前提です。公式は既定では、vLLMは下書きモデルと対象のモデルが同じ語彙を共有していることを求めると述べています。

違う語彙を使うとどうなるのか。実際に置き換えて比べました。

下書き役の語彙を変える

text
大きいモデルの語彙は32,000種。下書き役の語彙が違う場合を比べる

組み合わせ                                共有できる語彙      実質の受け入れ率      使えるか
同じ語彙                                        100%                 60.0%         そのまま使える
近い語彙(別系統・同規模)                                72%                 43.2%         要変換・使える
小さい語彙(軽量トークナイザ)                              40%                 24.0%         要変換・使える

同じ語彙なら60.0%の受け入れ率です。近い語彙に変えると43.2%まで下がります。

軽量なトークナイザだと24.0%です。最初の節で見た分岐点の40%を割り込みます

選ぶ基準は速さではなく語彙

下書き役を選ぶとき、単純に軽いモデルを選ぶと語彙の不一致で受け入れ率が落ちることがあります。

だから優先すべきは、大きいモデルと同じ語彙を持つかどうかです。速さはその次の条件になります。

余談 この計測での注意

3つの計測はいずれも手元で書いた模型で、実際のvLLMを動かしたものではありません。大きいモデル22ms・下書き役3msという速さの比、受け入れ率の値はすべて置いたものです。語彙の重なりから実質の受け入れ率を計算する式も単純化しており、実際の劣化の仕方はモデルの組み合わせによって違います。ここで見せているのは、受け入れ率が一定の水準を下回ると逆効果になるという点と、下書きの本数には受け入れ率に応じた最適点があるという点の2つです。

出典vLLM 公式ドキュメント「Speculative Decoding」2026-08-18 確認
By default, vLLM requires the draft and target models to share the same vocabulary.
原文vLLM 公式ドキュメント「Speculative Decoding」 この内容の有効期限2027-02-18

よくある質問

投機的デコードとは何ですか
小さい下書き役が候補を出し、大きいモデルがまとめて答え合わせする方式です。lossless(結果が変わらない)ことが検証されていると説明されています。
受け入れ率が低いと損をしますか
します。この計測では40%を下回ると、そのまま大きいモデルだけで出すより遅くなりました。
下書きの本数は多いほど速いですか
いいえ。受け入れ率55%の条件では2個がいちばん速く、16個まで増やすとかえって遅くなりました。
下書き役はどのモデルでも使えますか
語彙が同じである必要があります。既定では大きいモデルと下書き役が同じ語彙を共有する前提だと説明されています。

まとめ

  • 下書きをまとめて答え合わせ
  • 受け入れ率が速さを決める
  • 本数は多いほど良いわけではない
  • 語彙が違うと変換が要る

今日から始められること

  1. 下書き役の受け入れ率を測る
  2. 下書きの本数を受け入れ率に合わせて調整する
  3. そのまま出す場合との比較を出す
  4. 下書き役の語彙が一致しているか確かめる

実務で組んだ投機的デコードのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る