投機的デコーディングは、大規模言語モデルのための推論時最適化技術であり、より小型で高速なドラフトモデルを使用して、メインモデルより先に複数の候補トークンを提案し、メインモデルがそれらを単一の並列パスで検証または拒否することで、自己回帰テキスト生成を高速化する。検証は複数のトークンを一度にチェックできるため、この技術は標準的なデコーディングと同じ出力分布を生成しつつ、大規模モデルを通る逐次パスの回数を減らし、モデルが生成したであろう内容を変えることなくレイテンシを低減する。
このアプローチは2022年と2023年にGoogleとDeepMindの研究で記述され、2024年までに主要な推論システムで採用され、本番環境で大規模モデルを提供するコストとレイテンシを削減する標準的な技術となった。
仕組み
標準的な自己回帰推論では、モデルは一度に1つのトークンを生成し、各トークンは次のトークンを生成する前に完全なフォワードパスを必要とする、本質的に逐次的なプロセスである。投機的デコーディングは、実行コストがはるかに低い小型のドラフトモデルが短い候補トークン列を生成することで、このボトルネックを解消する。その後、大規模なターゲットモデルは、これらすべての候補を単一のバッチフォワードパスで評価し、各提案トークンに同様の確率を割り当てたかどうかをチェックする。このチェックを通過したトークンは受け入れられ、最初に失敗したトークンはターゲットモデル自身の予測で修正され、その時点以降の残りのドラフトトークンは破棄される。複数のトークンにわたる完全なフォワードパスは、1つのトークンに対するパスとほぼ同じコストしかかからない。なぜなら、現代のGPUでは計算は算術演算よりもメモリ帯域幅によって支配されることが多いからである。受け入れられた複数トークンのステップは、実質的な正味の高速化をもたらす。
設計の変種
この中核的なアイデアにはいくつかの変種が提案されている。一部のシステムは、蒸留された、またはその他の方法で関連する小型モデルをドラフトモデルとして使用する。他のシステムは、ターゲットモデル自身の層のサブセット、または最近のコンテキストからのn-gramに基づく軽量なルックアップを使用し、別のドラフトモデルを訓練して維持する必要性を回避する。Medusaや類似のアプローチは、元のモデル自体に追加の予測ヘッドを取り付け、別のモデルなしで複数の将来トークンを提案する。ドラフト戦略の選択は、ドラフトトークンがターゲットモデルが生成したであろうものと一致する頻度を示す受け入れ率と、ドラフトステップを実行する追加コストの両方に影響を与える。
影響
投機的デコーディングは、正しく実装された場合、モデルの出力分布を変更したり再訓練を必要としたりせず、出力が計算される速度だけを変えるという点で、ほぼ無料の最適化であることで注目に値する。これは、出力品質に影響を与える可能性がある量子化や知識蒸留などの損失を伴う効率化技術とは区別される。2020年代半ばまでに、投機的デコーディングは主要なモデルプロバイダーによって標準的なサービス提供インフラの一部として広く展開され、特にチャットインターフェースやGitHub CopilotやClaude Codeなどのコーディングアシスタントといったレイテンシに敏感なアプリケーションで使用され、フロンティアモデルを大規模に実行するコストを削減するために、他のサービス提供最適化と頻繁に組み合わせられた。