投機的デコード:より高速な応答のために、大規模な言語モデル(LLMS)を加速します。 この手法により、より小さく、より高速な「ドラフト」モデルを使用して初期予測を生成することにより、出力品質を犠牲にすることなくLLM速度が大幅に向上します。 この並列処理アプローチは、レイテンシを劇的に減少させます
コアコンセプトには、2段階のプロセスが含まれます。小さなモデルを使用した「ドラフト」生成フェーズ、続いて、より大きくより正確なモデルを使用した検証と改良フェーズが続きます。これは、ドラフトモデルが初期テキストを提供し、より大きなモデルがエディターとして機能し、出力を修正および強化するライターおよびエディターのコラボレーションに類似しています。

それがどのように機能するか:
ドラフト生成:- より小さく、より高速なモデル(gemma2-2b-it)は、複数の潜在的なトークンシーケンスを生成します。
並列検証:
大きなモデル(Gemma2-9b-itなど)は、これらのシーケンスを同時に評価し、正確な予測を受け入れ、不正確なものを修正します。
-
最終出力:正確なドラフト予測と修正を組み合わせた洗練された出力が配信されます。
- 従来のデコードとの比較:従来のデコードはトークンを順次生成し、応答時間が遅くなります。対照的に、投機的なデコードは、大幅な速度の改善(30〜40%)を提供し、遅延を約25〜30秒から15〜18秒に減らします。 また、メモリの使用(26 GBから約14 GBから14 GBの削減)を最適化し、計算需要(50%)を下げます。
GEMMA2モデルによる実用的な実装:
提供されたコードは、GEMMA2モデルを使用した投機的デコードを示しています。 それは:
-
モデルとトークナイザーのセットアップ:小さい(ドラフト)およびより大きな(検証)gemma2モデルとそれらの対応するトークナーの両方をロードします。 代替モデルのペアも提案されています
- 自己回帰(正常)推論:大きなモデルのみを使用したベースライン推論方法が確立されます。
投機的解読の実装:- コードは、ドラフト生成、並列検証(log-likelihood計算を使用)、および最終出力ステップを実装しています。
レイテンシ測定:
関数は、通常の推論と投機的デコードの遅延を比較します。 log-likelihoodは、モデルのドラフトの精度の尺度として機能します。
-
テストと評価:コードは、5つの異なるプロンプトでアプローチをテストし、両方の方法で毎秒平均レイテンシとトークンを計算します。 結果は、投機的デコードによる大幅な速度の改善を示しています
-
さらなる最適化のための量子化:記事では、BitsandBytesライブラリを使用した4ビット量子化を使用して、メモリの使用量をさらに削減し、推論速度を向上させます。 この手法はモデルの重みを圧縮し、より効率的なメモリアクセスとより高速な計算につながります。 結果は、量子化による追加のレイテンシの改善を示しています
アプリケーションと課題:
この記事は、投機的デコード(チャットボット、翻訳、コンテンツ生成、ゲーム)の幅広いアプリケーションとその課題(メモリオーバーヘッド、モデルの調整、互換性の制限、検証オーバーヘッド、限られたバッチ処理サポート)を議論することにより結論付けています。
要約すると、投機的デコードは、LLMを加速するための有望なアプローチを提供し、その応答性を高め、リソースに制約されている範囲のアプリケーションに適しています。 課題は残っていますが、潜在的な利点は大きなものです
以上が投機的デコード:実装の例を備えたガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。