投機的デコーディングを1から解説 — 小さな下書きモデルで、出力を一切変えずにLLMを速くする
小型モデルに数トークン先まで下書きさせ、大型モデルが一括検証する「投機的デコーディング」。出力分布を数学的に変えないまま2〜3倍速くなる仕組みを、採択率αの直感とともに原論文から解説する。
Fast Inference from Transformers via Speculative Decoding
一次資料 — この記事の根拠
論文の発表 2022-11-30→この解説の公開 2026-08-123年8か月後
Fast Inference from Transformers via Speculative DecodingYaniv Leviathan, Matan Kalman, Yossi Matias · 2022-11-30 · v2arXiv:2211.17192論文ページ·PDF原文の要旨(Abstract)を読む
Inference from large autoregressive models like Transformers is slow - decoding K tokens takes K serial runs of the model. In this work we introduce speculative decoding - an algorithm to sample from autoregressive models faster without any changes to the outputs, by computing several tokens in parallel. At the heart of our approach lie the observations that (1) hard language-modeling tasks often include easier subtasks that can be approximated well by more efficient models, and (2) using speculative execution and a novel sampling method, we can make exact decoding from the large models faster, by running them in parallel on the outputs of the approximation models, potentially generating several tokens concurrently, and without changing the distribution. Our method can accelerate existing off-the-shelf models without retraining or architecture changes. We demonstrate it on T5-XXL and show a 2X-3X acceleration compared to the standard T5X implementation, with identical outputs.
なぜ、賢いAIほど返事が遅いのか
ChatGPTのようなモデルの文章は、1トークン(単語の断片)ずつ順番に生成されます。次のトークンを決めるには直前までの全文が必要なので、K個のトークンを出すにはモデルをK回、直列に動かすしかありません。論文はこの逐次性こそが遅さの根本原因だと指摘します(Abstract)。
もうひとつ、見逃されがちな観察があります。論文によれば、大規模モデルの推論のボトルネックは足し算掛け算の量ではなく、メモリ帯域と通信であることが多い(§1)。巨大な重みをメモリから読み出す時間が支配的で、せっかくの演算器は待ちぼうけしているのです。この「余っている計算力」を並列性で活用しよう、というのが本論文の出発点です。メモリ律速の背景はメモリの壁の記事で詳しく扱っています。
比喩: 若手の下書きと、編集長の赤入れ
編集長(大型モデル)が一語ずつ執筆するのは遅い。そこで若手ライター(小型モデル)に数語先まで下書きさせ、編集長は下書きをまとめて読んで「ここまでは私が書くのと同じ。ここから違う」と赤を入れる。編集長の仕事1回で複数語が一気に確定します。
元ネタはCPUの投機的実行(分岐予測など)です。「必要かどうか確認する前に、たぶん必要になる仕事を先にやってしまう」技法で、論文はこれを「仕事が確率的にしか決まらない」言語生成の世界へ一般化しました(§1)。
全体像: 下書き → 一括検証 → 修正(§2.1)
速くしたい本命をターゲットモデル 、下書き係を近似モデル(draft model) と呼びます。1回の反復はこう動きます。
- が 個のトークンを普通に(自己回帰で)下書きする
- を「元の文」「元の文+下書き1個」…「元の文+下書き個」の 通りに対して並列に1回走らせ、各位置の確率分布をまとめて得る
- 下書きを前から順に採択ルール(次節)で判定する。最初に棄却された位置は修正した分布から引き直し、全部通ったらおまけをもう1個サンプルする
この設計の利点は、 の1回の実行で最低1トークン、最大 トークンが必ず確定すること。つまり最悪ケースでも の直列実行回数は普通の生成を上回りません(§2.1)。論文の図1では、97Mパラメータのターゲットが6Mの下書きモデルの助けを借り、38トークンの文をわずか9回の直列実行で生成しています。
下書きがどれだけ「当たる」かは、確率分布の形にも左右されます。論文の実験では、温度を下げて分布が尖っているほど採択率が高くなりました(§4.2)。分布の尖り方は次の図で体感できます。
心臓部: 出力分布を変えない採択ルール(§2.3)
「小さいモデルの下書きを使ったら、出力の質が落ちるのでは?」——ここが本論文の最大の貢献で、投機的サンプリングという採択ルールにより、出力の確率分布はターゲット単独の場合と数学的に同一であることが保証されます(§2.3, §A.1)。近似が良ければ速く、悪くても遅くならず、出力は一切変わらない。この虫のいい話を成立させるルールは、たった3行で書けます。ここからは、その中身と「なぜ分布が保たれるのか」の証明、そして速さを支配する採択率 の正体まで一気に見ていきます。
下書きトークン について、ターゲットの確率を 、下書きモデルの確率を とすると、
- なら無条件で採択
- なら確率 で棄却
- 棄却したら、次の修正分布から引き直す
コメント
コメントにはログインが必要です