みなさんこんにちは。Quantized GGUF(量子化GGUF)で、Qwen3-27BにMulti-Token Prediction(MTP)を動作させる作業を進めていて、その結果がかなり素晴らしいです。私がまとめた内容は以下のとおりです: https://huggingface.co/havenoammo/Qwen3.6-27B-MTP-UD-GGUF
これは、Qwen3-27BのUnslothによるUD XL量子化に、上からMTPのドラフトヘッドをQ8_0で移植(graft)したものです。ベースモデルは通常どおり低ビット量子化のままにしつつ、3つのMTP層はスペキュレーティブ精度を保つためQ8のままにしています。
移植済みのGGUFファイル(UD XLベース + Q8 MTP)、私が抽出した生のMTP層ソース(MTP_Q8_0.gguf)、そしてconvert.py(私がこのgistから適応した移植スクリプト)を共有します。他のモデルでも同様にやりたい人がいる場合に備えて。さらに、custom llama.cpp のフルビルド手順も同梱されています。
Qwen3は3段のMTPステップで学習されており、つまり各フォワードパスで一度に4トークンを予測します。llama.cppのメインブランチはまだMTPをサポートしていないため、まだオープンの PR #22673 からスペキュレーティブデコーディングのサポートを取り込み、masterの上にマージして、その状態でllama-serverをビルドしました。実行は次のとおりです: --spec-type mtp --spec-draft-n-max 3
結果:MTPなしで同じUD XL GGUFを実行した場合と比べて、だいたい2.5倍のトークンスループットです。さらに、ドラフトトークンの多くが保持される堅実な受け入れ率が得られており、つまりMTPヘッドは本当に役に立っていて、単に計算を浪費しているだけではありません。Q8のMTP層はモデル全体のほんの一部なので、VRAMの追加オーバーヘッドも非常に小さいです。
MTPは、スペキュレーティブデコーディングで利用可能な最大級の効率向上の1つですが、基本的にはSGLangおよびvLLMでの公式Qwen3デプロイ以外ではサポートされていません。これでGGUFとllama.cppでも使えるようになりました。つまり、すでに使っている同じツールでローカル実行できます。PR #22673 が近いうちに取り込まれて、この一連が何も考えずにそのまま動くようになることを期待しています。その間は、マージ手順は簡単です(gitコマンド3つ)。
質問があればお答えしますし、誰かが動かせるように手伝うこともできます。試してみて、どのくらいの速度が出るか教えてください!
完全な手順はHuggingFaceリポジトリにありますが、ここでは短い版を載せます:
# 1. MTPサポート付きで llama.cpp をビルド git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp git fetch origin git fetch origin pull/22673/head:pr-22673 git checkout master git reset --hard origin/master git merge --no-ff pr-22673 -m "Merge PR #22673: llama + spec: MTP Support" cmake -B build -DGGML_CUDA=ON cmake --build build --config Release --target llama-server # 2. HF から GGUF を取得 # https://huggingface.co/havenoammo/Qwen3.6-27B-MTP-UD-GGUF # 3. MTPで実行 ./build/bin/llama-server -m your-model.gguf --spec-type mtp --spec-draft-n-max 3 [link] [comments]



