投機的デコーディングって何?
大規模モデルが文を書くとき、単語を1つずつ出していて、どの一歩も高くつきます。投機的デコーディングは巧みな裏技。小さなモデルに先に「下書き」させ、大きなモデルがその下書きを一気に「査読」する——合っている所は残し、間違いは直します。結果は同じなのに、何倍も速い。どう動くのか
小さいモデルが先に推測小さくて速いモデルが、続きの単語をいくつか「先読み」して候補文を素早く作ります。
大きいモデルが一括検証
大規模モデルはその候補を一気に読み、どれが合っていたかを判定。合っていた分は採用し、間違っていた所で止めて直します。
どこで省けるか
大きいモデルは一度に複数の単語を「検証」でき、1語ずつ生成する代わりに、高価な工程をまとめて処理します。
なぜ役立つのか
速くなるだけで劣化しない最終的に大モデルが検証するので、出力の品質は直接生成とほぼ同じ。速くなるだけです。
アーキテクチャ変更が不要
大モデルを再訓練する必要はなく、小さなモデルを組み合わせるだけ。導入しやすい。
幅広く使える
翻訳・文章生成・コード生成、あらゆる生成タスクで効果があります。
限界は?
加速の度合いは、小さなモデルの「当たり」次第。よく当たれば長い区間を一気に検証でき、外れれば通常の速度に戻ります。2つのモデルの相性が大切です。まとめ:投機的デコーディングは、小さなモデルが「下書き」し、大きなモデルが「査読」して、まとめ検証で速度を稼ぐ技術です。
コメント