ドキュメント

投機的デコーディング

高度な設定

投機的デコーディングは、大規模言語モデル (LLM) の生成速度を、応答品質を低下させることなく大幅に向上させることができる技術です。


🔔 投機的デコーディングには、現在ベータ版であるLM Studio 0.3.10以降が必要です。こちらから入手してください。

投機的デコーディングとは

投機的デコーディングは、2つのモデルの協調に依存しています

  • より大きな「メイン」モデル
  • より小さく、より高速な「ドラフト」モデル

生成中、ドラフトモデルは潜在的なトークン(サブワード)を迅速に提案します。メインモデルは、ゼロから生成するよりも速くそれらを検証できます。品質を維持するため、メインモデルは自身が生成するであろうものと一致するトークンのみを受け入れます。最後に受け入れられたドラフトトークンの後、メインモデルは常に1つの追加トークンを生成します。

モデルをドラフトモデルとして使用するには、メインモデルと同じ「語彙」を持っている必要があります。

投機的デコーディングを有効にする方法

パワーユーザーモード以上で、モデルを読み込み、チャットサイドバーの投機的デコーディングセクション内でドラフトモデルを選択します。

undefined

チャットサイドバーの投機的デコーディングセクション

互換性のあるドラフトモデルを見つける

ドロップダウンを開くと、以下の表示が出ることがあります

undefined

互換性のあるドラフトモデルなし

読み込んだモデルに、より低いパラメータのバリアントが存在する場合は、それをダウンロードしてみてください。モデルのより小さいバージョンが存在しない場合は、互換性のある組み合わせを見つけてください。

メインモデルドラフトモデル
Llama 3.1 8B InstructLlama 3.2 1B Instruct
Qwen 2.5 14B InstructQwen 2.5 0.5B Instruct
DeepSeek R1 Distill Qwen 32BDeepSeek R1 Distill Qwen 1.5B

メインモデルとドラフトモデルの両方を読み込んだら、チャットを開始するだけで投機的デコーディングが有効になります。

パフォーマンスに影響を与える主な要因

投機的デコーディングによる高速化は、一般的に以下の2つの要素に依存します

  • ドラフトモデルメインモデルと比較してどれだけ小さく、高速か
  • ドラフトモデルがどれくらいの頻度で「良い」提案をできるか

簡単に言うと、メインモデルよりもはるかに小さいドラフトモデルを選ぶと良いでしょう。また、プロンプトによっては、より良い結果が得られます。

重要なトレードオフ

投機的デコーディングを有効にするために、メインモデルと並行してドラフトモデルを実行するには、メインモデル単独で実行するよりも多くの計算リソースと計算能力が必要です。

メインモデルの生成を高速化する鍵は、小さく、かつ十分に高性能なドラフトモデルを選択することです。

以下は、メインモデルのサイズ(パラメータ数)に基づいて選択すべき最大ドラフトモデルサイズに関する一般的なガイドラインです

メインモデルサイズ高速化が期待できる最大ドラフトモデルサイズ
3B-
7B1B
14B3B
32B7B

一般的に、メインモデルとドラフトモデルのサイズ差が大きいほど、高速化の効果も大きくなります。

注記:ドラフトモデルが十分に高速でない、またはメインモデルに「良い」提案をするのに十分効果的でない場合、生成速度は向上せず、実際には低下する可能性があります。

プロンプトに依存

投機的デコーディングを使用すると、生成速度がすべてのプロンプトで一貫しないことに気づくでしょう。

高速化がすべてのプロンプトで一貫しない理由は、一部のプロンプトでは、ドラフトモデルがメインモデルに対して「良い」提案をする可能性が低いからです。

この概念を説明する極端な例をいくつか示します

1. 離散的な例:数学の問題

プロンプト:「二次方程式の公式は何ですか?」

この場合、70Bモデルも0.5Bモデルも、標準的な公式x = (-b ± √(b² - 4ac))/(2a)を提示する可能性が非常に高いです。したがって、ドラフトモデルがこの公式を次のトークンとして提案した場合、ターゲットモデルはそれを受け入れる可能性が高く、これは投機的デコーディングが効率的に機能する理想的なケースとなります。

2. 創造的な例:ストーリー生成

プロンプト:「『ドアがきしんで開いた…』で始まる物語を書いてください」

この場合、次の単語が無数の有効な可能性に分岐する可能性があるため、小さいモデルのドラフトトークンは、大きいモデルによって拒否される可能性が高くなります。

「2+2」に対する唯一の合理的な答えは「4」ですが、この物語は「モンスターが現れた」「風がうなり声を上げた」「サラは凍りついた」など、何百もの完全に有効な続き方があり、小さいモデルの具体的な単語予測が大きいモデルの選択肢と一致する可能性がはるかに低くなります。