Speculative Decoding(投機的デコーディング)SpecDec
Speculative Decoding は、小型のドラフトモデルで複数トークンを先読み生成し、本体モデルで一括検証することで推論を高速化する手法です。出力分布は厳密に等価で、2-3倍の高速化を実現します。
詳細解説
Speculative Decoding(投機的デコーディング、スペキュレイティブデコーディング)は、Leviathan ら(Google Research)・Chen ら(DeepMind)が2022-23年に独立に提案した LLM 推論高速化手法で、小型で高速な「ドラフトモデル」が次の K トークン(典型 4-8トークン)を先読み生成し、本体モデルが1パスでまとめて検証して受理または棄却する仕組みです。重要な性質は「Rejection Sampling により本体モデルの出力分布と数学的に厳密に等価」である点で、品質低下なしに高速化できます。本体モデル単体での1トークンあたり1回の forward pass を、複数トークンを並列検証する1回に置き換えるため、メモリ帯域律速だった LLM 推論で大きな効果が出ます。Llama 3 70B + Llama 3 8B のドラフトで2.5倍程度、より工夫した EAGLE-2 では3-4倍の高速化が報告されています。発展形として、(1) 追加学習不要の Lookahead Decoding(Jacobi 反復ベース)、(2) 自己ドラフトする Medusa(本体モデルに追加ヘッド)、(3) 動的ツリー検証の EAGLE/EAGLE-2、(4) n-gram 統計でドラフトする Prompt Lookup などが派生し、vLLM・TensorRT-LLM・SGLang・llama.cpp などの主要推論エンジンが標準機能として実装しています。
実装例 / 使い方
- 01Llama 3 70B + Llama 3 8B のドラフトで生成速度が2.5倍になります
- 02EAGLE/Medusa/Lookahead Decoding など追加学習なしの派生も活発です
- 03vLLM・TensorRT-LLM・llama.cpp が標準機能として提供します
関連する用語
KV Cache(KVキャッシュ)
KV CacheKV Cache は、自己回帰生成中に過去トークンの Key・Value を保存して再利用する仕組みです。1トークン生成あたりの計算量が O(N^2) から O...
Continuous Batching(連続バッチング)
CBContinuous Batching は、LLM サービングでリクエストごとに完了したスロットを即座に新リクエストで埋めるバッチ手法です。静的バッチに比べてス...
Self-Attention(自己注意機構)
SASelf-Attention は、入力系列の各トークンが同じ系列内の他のトークンとの関連度を計算する仕組みです。Query・Key・Value の3行列に射影し...
Flash Attention(高速アテンション)
FAFlash Attention は、GPU の SRAM とタイリングを活用してアテンション行列をメモリに具体化せず計算する I/O 最適化アルゴリズムです。メ...
Transformer
Transformer (トランスフォーマー) は 2017 年 Google 論文で発表された深層学習アーキテクチャで、Self-Attention 機構を核...
Speculative Decoding(投機的デコーディング)を、実際に活用する
用語の意味は分かった。次は実装。EXBANK の無料診断で、貴社で具体的にどう活用できるかをご提案します。
営業時間 平日10-18時 / 通常24時間以内に返信
