🏃
投機的デコーディング(Speculative Decoding)
小型モデルで予測草案を作成し大型モデルが検証
LLMのトークン生成は自己回帰(autoregressive)方式で一度に1トークンしか生成しません。GPU計算能力が余っていてもメモリ帯域幅がボトルネックとなり速度が制限されます。Speculative Decodingはこの問題を解決します。高速なDraftモデル(小型)がγ個のトークンを一度に生成し、Targetモデル(大型)がこれらを並列で一括検証します。正しければ採用、間違いならTargetモデルが修正します。Targetモデルの出力品質を維持しながら(数学的に同一の分布を保証)、速度のみ向上します。Medusa、EAGLE等の変形もあります。
キーコンセプト
1
Draft Model(小型、高速)がγ個の候補トークンを自己回帰的に生成
2
Target Model(大型、低速)が元プロンプト+Draftトークンを1回のforward passで検証
3
各Draftトークンを先頭から検証 — Targetの確率分布と比較
4
DraftトークンがTarget分布と一致すれば採用(accept)
5
不一致の最初のトークンからTargetモデルが再生成(reject + resample)
6
平均的に1回のTarget forward passで複数トークンが確定 → 速度2〜3倍向上
メリット
- ✓ 出力品質同一(数学的に同一の分布を保証)
- ✓ 2〜3倍の速度向上
- ✓ 既存モデルの修正不要
- ✓ メモリ帯域幅ボトルネックの解決
デメリット
- ✗ Draft Modelの選択が性能に影響(差が大きいとreject率が高い)
- ✗ Draft Modelの追加メモリが必要
- ✗ 実装の複雑度(検証/リサンプリングロジック)
- ✗ バッチ処理で効果が減少
ユースケース
Google DeepMind(原論文)
Apple MLX Framework
vLLM / TGIサービングエンジン
Medusa — 単一モデル内の複数ヘッドで並列予測
EAGLE — 自身のhidden stateでDraft