推測的復号は大規模モデル推論加速手法です。まず、より軽量で高速なドラフトモデルが複数の候補トークンを連続して提案し、その後ターゲットの大規模モデルが並列チェックを行います。候補が受け入れられると、ターゲットモデルは単一の順位計算で複数の順位を前進させることができます。未確定な部分はターゲットモデルによって修正されます。単に2つのモデルの回答をつなぎ合わせるのではなく、生成待ち時間を最適化します。
スローダウンは各トークンによって生成されます
自己回帰モデルは通常、最初のトークンとして形成されてから2番目のトークンを進める必要があります。強力なGPU計算能力があっても、このシリアル依存性は復号時に頻繁にショートフォワード計算を引き起こし、ハードウェアが十分に活用されない可能性があります。復号はまず次の内容を下書きし、それを大規模モデルに提出してバッチ採点を行い、対象モデルへの呼び出し数を減らすと推測されています。
このプロセスは4つのステップに分かれます。
- この草案モデルは、現在の文脈に基づく短い候補配列の列を提案しています。
- ターゲットモデルはこれらの位置の確率を並行して計算します。
- 候補者は受け入れ規則に従って留まり、ポジションが一致しなければ受け入れは停止されます。
- ターゲットモデルは次のドラフトラウンド開始前に正しい部門を補完します。
標準的なアルゴリズムは、対象モデルの元のサンプリング分布を維持するために、受容および補正ルールを支持します。大規模モデルを密かに小型モデルに置き換えることも、ターゲットモデルの再学習も必要ありません。
なぜいつも速くならないのでしょうか?
重要な指標は候補者の受け入れ率です。ドラフトモデルが弱すぎると、最初の数トークンで却下されることが多く、追加のドラフト作成がオーバーヘッドとなります。ドラフトモデルが大きすぎると、「安価な生成」という意味を失います。テキストの予測可能性、ラウンドあたりの候補者の長さ、ハードウェア並列性、バッチサイズはすべて収益に影響を与えます。コードや固定フォーマットのような強い連続性のあるコンテンツは、大きく異なる作成よりも長いドラフトを受け入れやすい傾向があります。
これは問題を解決する他の加速法とは異なります
量子化は主に重みサイズと計算コストを削減し、KVキャッシュは計算された過去の注意状態を再利用します。投機的復号は、単一のターゲットモデルでより多くのトークンを確認できるようにする方法に焦点を当てています。これらの手法は組み合わせることも可能ですが、総じてメモリを消費し、スケジューリングの複雑さを増します。
採用する価値があるかどうか判断するには、デモの速度だけを見るのではなく、デプロイチームは、プロンプトの長さ、出力長、並行処理量、ハードウェアの初トークン時間、トークンごとの遅延、スループット、メモリ使用量を比較し、加速が安定性の低下を伴わないことを確認する必要があります。