【とうきてきでこーでぃんぐ】
投機的デコーディング とは?
最終更新:
💡 下書き候補をまとめて検証し、生成を速める
軽い仕組みで複数のトークンを先に下書きし、対象のLLMでまとめて検証することで文章生成を速める技術。採用・再サンプリングを適切に行う方式では、対象モデルの出力分布を保てる。
📌 このページのポイント
- 代表的な方式は、軽いドラフトモデルと対象モデルを組み合わせる
- 下書きをまとめて検証し、採用できる先頭部分を使う
- 厳密な採用・再サンプリングで、対象モデルの出力分布を保てる
- 高速化の程度は、採用率や下書きのコスト、実行環境による
なんでLLMの文章生成って時間がかかるの?
下書きがあると、どう速くなるの?
代表的な方式では軽いモデルが何個かの候補を先に作り、対象モデルがまとめて評価するよ。先頭から複数個を採用できれば、対象モデルを順番に動かす回数を減らせる。下書きする個数は方式や設定によるんだ
候補が採用されなかったら?
最初に棄却された位置から先の下書きは使わず、その位置のトークンを調整した分布から選び直すよ。単に誤字や内容の間違いを直す処理ではなく、対象モデルと下書き側の確率を使って、出力分布を保つための判定なんだ
毎回、元のモデルと同じ文章が出るの?
厳密な方式が保つのは、同じ生成設定での確率分布だよ。抽選を伴う生成で、毎回まったく同じ文章になる保証とは違うんだ。分布を保つ判定を省いた別の近似方式まで、同じ保証があるとは言えないね
いつでも2〜3倍速くなるの?
原著にはT5-XXLなど特定の実験でその程度の高速化が報告されているけれど、共通の保証ではないよ。採用率が低かったり、下書きや並列検証の負担が大きかったりすると効果が小さい。モデル、生成設定、ハードウェアなどに合わせて測る必要があるんだ
まとめ:ざっくりこれだけ覚えればOK!
「投機的デコーディング」って出てきたら「先に作った下書きをまとめて検証して、LLMの生成を速める技術」と思えばだいたいOK!
📖 おまけ:英語の意味
「Speculative Decoding」 = 投機的復号
💬 Speculativeは「投機的な・推測の」という意味。CPUの投機的実行と同じ発想で、当たりを予測して先に進めておくんだよ