Speculative Decoding (SD)は, LLMの推論を高速化するための手法です.
まずはSDを簡単に説明します.
SDでは高速化したいLLM (verifierと呼ばれます)とは別に, drafterと呼ばれる小型で高速なLLMを用意します. そして, そのdrafterに下書きを書かせ, verifierは下書きのチェック・検証に専念することでverifierの処理を減らし高速化します.
LLMの高速化・効率化を扱う研究分野には, 量子化や蒸留, pruningなど様々なものがあります. その中でも, 私はSDには特有の面白さがあると感じています.
その理由の一つが, 速度と性能のバランスを人間が恣意的に選べないことです.
例えば量子化や蒸留では, 高速化やモデルの小型化と引き換えに, ある程度の性能低下を許容することがあります. 「元のモデルの性能を90%維持できれば十分」といった基準を人間側で設定することもできます. 多くの場合, この「n %維持」のnを下げれば下げるほど高速化の余地が生まれるので, nの選び方次第でどんどん速くできてしまいます.
もちろん実用上は重要な考え方ですが, 個人的には少しだけ後ろめたさがあります. 性能をどこまで捨ててよいかを, こちら側で決められてしまうからです.
一方, SDではそうではありません. SDにはlosslessという理論的な保証があります. 適切に設計されたSDでは, 高速化しても最終的な生成分布は変わりません. 言い換えると「生成結果を変えずに高速化できる」ということです. そのため「高速化の代償にLLMの推論性能が落ちていないか」を心配せずに済みます.
では, SDには速度と精度のトレードオフが存在しないのでしょうか.
実際には, その問題はdrafter側に移動します.
drafterを小さく, 軽くすれば高速になります. しかし予測性能が下がれば, drafterが生成した下書きが検証で棄却される割合が増えます. すると高速化のためにdrafterを軽くしたはずなのに, システム全体としてはかえって遅くなることがあります.
つまり,
「精度を捨てて速度だけを追求する」
という逃げ方ができません.
速いdrafterを作りながら, 同時に高い予測性能も求めなければならない.
私は, この制約がSDという分野に深みを与えていると感じています.
単にdrafterを速くするだけでは不十分で, 予測性能だけを追っても意味がありません. 速さと予測性能の両方を同時に成立させる必要があります.この少し厳しい制約の中で, どうすればより高速化できるのかを考えるところが, 私がSDを面白いと思う理由です.
Leviathan, Y., Kalman, M., & Matias, Y.
Fast Inference from Transformers via Speculative Decoding.
ICML 2023, PMLR 202:19274–19286.
https://icml.cc/virtual/2023/oral/25546