llama.cppで推測デコード(speculative decode)を組み合わせられない理由

Reddit r/LocalLLaMA / 2026/5/7

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical UsageModels & Research

要点

  • 著者はQwen3.6 27Bで「mtp speculative decode」を試して有望だと感じる一方、エージェント型コーディングでは「ngram」の方が大きな改善が見られると述べています。
  • モデルがしばしば、すでに見たコードの一部をそのまま繰り返すため、ngramはそれに対して多くのトークンを非常に高速に推測できるというのが理由です。
  • しかし、llama.cppに両方の手法をコマンドライン引数で渡すとngramだけが有効になり、同時利用できないことを確認しています。
  • 著者は、その原因が技術的な根本制約なのか、それとも実装上の制限で今後修正され得るのかを質問しています。
  • 追記として、関連するllama.cppのGitHubプルリクの議論で同様の質問が投稿されていたことが示され、対応が検討されている可能性が示唆されています。

qwen3.6 27bの新しいmtpによる推測デコードをいじってみたところ、とても良いです。ですが、エージェント的なコーディングでは、ngramからの大きな改善が見られました。というのも、(たとえば編集ツールを呼び出すような)それなりの割合の時間、モデルが単に、すでに見たコードの一部分をそのまま逐語的に繰り返しているだけだからです。ngramは、比較すると非常に高速に大量のトークンについて推測できます。

両方を同時に使って組み合わせられたら最高なのですが、コマンドライン引数に両方を追加しても、有効なのはngramだけのように見えます。

両方を同時に使えない理由はありますか? 基本的な制約でしょうか、それとも、実装上の制限で、修正がもうすぐ来そうなだけですか?

編集: さっきPRをもう一度見たら、PmNz8が私がこれを投稿する約2時間前に同じ質問をしていました。ぜひアップドートを! https://github.com/ggml-org/llama.cpp/pull/22673#issuecomment-4394544777

投稿者 /u/Qwoctopussy
[リンク] [コメント]