LLM推論の高速化技術。小型ドラフトモデルが複数トークンを高速に生成し、大型ターゲットモデルが並列検証して不正解のみ棄却する。同一出力品質を維持しながら 2〜3 倍の高速化を実現する。
投機的デコーディング(Speculative Decoding、略: SD)は、LLM の自己回帰的なトークン生成のボトルネックを解決する推論高速化技術です。2023 年に Google DeepMind(Leviathan et al.)と MIT(Chen et al.)がほぼ同時期に独立して発表しました。
通常の LLM 推論は、1 トークンずつ順次生成するため、70B モデルでは GPU をフルに活用できないメモリ帯域幅ボトルネックが発生します。投機的デコーディングはこの問題を並列化によって解決します。
Step 1: ドラフト生成 小型ドラフトモデル(例: 7B)が K=5 トークンを高速生成し候補を出力します。
Step 2: ターゲットモデルによる並列検証 ターゲットモデル(大型・高精度、例: 70B)が K+1 トークンを並列に検証(1 回のフォワードパスで完了)します。不一致が見つかった時点で棄却します。
Step 3: 棄却サンプリング 不一致点以降を棄却し、ターゲットモデルが正しいトークンを補完します。1 回のフォワードパスで複数トークンを承認できるため、実質的な生成速度が向上します。
| 設定 | スループット向上 | 条件 |
|---|---|---|
| Llama 3 70B + 8B ドラフト | 約 2.5× | テキスト生成、受諾率 75% 時 |
| Gemma 27B + 2B ドラフト | 約 2.3× | Google 内部評価 |
| Medusa(複数ヘッド) | 約 1.8〜2.5× | 単一モデル版 SD |
| EAGLE-2(ツリー検索) | 約 3〜4× | 2024 年最新手法 |
| 手法 | 特徴 | 発表年 |
|---|---|---|
| Speculative Decoding | オリジナル(2モデル) | 2023 |
| Medusa | 複数の並列デコーディングヘッドを追加 | 2023 |
| EAGLE / EAGLE-2 | ドラフトモデルをツリー探索で最適化 | 2024 |
| REST | 検索ベースのドラフト生成 | 2023 |
target_model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.1-70B-Instruct",
torch_dtype=torch.float16, device_map="cuda:0",
)
draft_model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.2-1B-Instruct",
torch_dtype=torch.float16, device_map="cuda:0",
)
outputs = target_model.generate(
inputs,
assistant_model=draft_model, # HF では assistant_model で指定
max_new_tokens=512,
do_sample=False,
)
# 通常生成より約 2〜3 倍高速
Q1: 投機的デコーディングは出力品質が下がりますか? A: いいえ。棄却サンプリングの数学的保証により、ターゲットモデルと完全に同一の出力分布を持ちます。速度が上がっても品質は変わりません。
Q2: どんなタスクで高速化効果が大きいですか? A: ドラフトモデルの受諾率が高いほど効果的です。コード生成や定型文が多い要約では 3× 以上の高速化も可能。自由な創作文では 1.5〜2× 程度になります。
Q3: ドラフトモデルはターゲットと同じ系列が必要ですか? A: 同一アーキテクチャが最も効率的ですが、異なるアーキテクチャでも動作します。Llama 系列なら Llama 1B をドラフトに使うのが一般的です。