このガイドを求められたので、ここに載せます。昨日の誰かの投稿と一部内容が重なります。YMMV!仕事が忙しくて自分で書く時間がなかったので、Opusに代わりに書いてもらいました(内容は検証済みです!)。
q4 なんちゃらの使用については議論になるのは確実だと思います。私は自分のモデルでの動作に満足しています。お願いされれば、ハードウェアの許す範囲で、より高い q モデルを作ることもできます!
NextN MTPは、Qwen3.5/3.6ファミリーに対して、バニラ比で 品質ロスなし(ヘッドがモデル同梱) で約2.9×のデコードを実現します。35B-A3Bのような重いMoEアーキテクチャでも、3090 Tiで約150 tok/sです。注意点:この執筆時点では、上流にマージされていません—オープン中のPRを取り込む必要があります。
必須PR(チェリーピックするか、そこにあるブランチを元にビルド)
いずれも2026年5月時点でオープン—リリース時に追跡して再ビルドしてください:
#22400 —
llama: allow partial seq_rm for GDN models for speculative decodinghttps://github.com/ggml-org/llama.cpp/pull/22400 前提条件です。GDN/SSMモデル向けにkeep_intermediatesのパスを追加し、spec-decode が部分的なドラフトをロールバックできるようにします。これがないと、ハイブリッド-attnモデル(27B)では MTP が機能しません。#22673 —
llama + spec: MTP Supporthttps://github.com/ggml-org/llama.cpp/pull/22673 本命です。qwen35_mtp+qwen35moe_mtpアーキテクチャローダー、NextNグラフフォワード、--spec-type mtpフラグ、そして spec state machine を追加します。
どちらかの方法として、両方を現在の upstream master にリベースするか、am17an のブランチを直接取得してください。
私のフォーク(FYI—両方のPRがマージ済み + 追加あり)
https://github.com/nickstx/llama.cpp ブランチ crucible
#22400 + #22673 に加えて qwen3moe_mtp アーキを含みます(Qwen3-Coder ベース— coder-30B MTPヘッドの学習向けの作業中、Qwen3.5/3.6のリリースモデルには不要です)。すぐにビルドしたい場合、これが最も簡単な取り込み方法です。さらに、クロスPIDのスロット・レジュームに対応する未マージのスロットPRがいくつか入っています。
ビルド(CUDA)
bash git clone https://github.com/nickstx/llama.cpp.git cd llama.cpp git checkout crucible cmake -B build -DGGML_CUDA=on -DCMAKE_BUILD_TYPE=Release cmake --build build -j$(nproc) --target llama-server
動作するGGUFを入手
Q8nextn バリアントが必要です。これらには NextN ブロックの上書きが適用されています(公開されているほとんどの量子化では、nextn を削除するか、Q4→s less ancceptanceに量子化してしまっています)。
| モデル | ティア | リポジトリ |
|---|---|---|
| Qwen3.5-4B-MTP | Q5_K_M / IMAT-IQ4_XS / IMAT-Q4_K_M | localweights/Qwen3.5-4B-MTP-* |
| Qwen3.6-27B-MTP | IQ4_XS-Q8nextn / IMAT-IQ4_XS-Q8nextn | localweights/Qwen3.6-27B-MTP-* |
| Qwen3.6-35B-A3B-MTP | IMAT-IQ4_XS-Q8nextn / IMAT-Q4_K_M-Q8nextn | localweights/Qwen3.6-35B-A3B-MTP-* |
コレクション: https://hf.co/collections/localweights/qwen36-mtp-crucible-release-69fbdeadca3472e779dff9d2
または bf16 ソースから自分で作成します:
```bash
任意:imatrix キャリブレーション(PPLが5〜8%向上)
./build/bin/llama-imatrix -m model-bf16.gguf -f calibration.txt -ngl 999 --chunks 200 -o imatrix.dat
nextn オーバーライドで量子化(ここが多くの人が見落とす部分)
./build/bin/llama-quantize --imatrix imatrix.dat --tensor-type nextn=q8_0 model-bf16.gguf model-IMAT-IQ4_XS-Q8nextn.gguf IQ4_XS
--tensor-type nextn=q8_0 は、nextn に一致する任意のテンソルの量子化を上書きします。これがないと://////// 出力になります。
実行
bash ./build/bin/llama-server
-m Qwen3.6-35B-A3B-MTP-IMAT-Q4_K_M-Q8nextn.gguf
--port 8080 -ngl 999 -fa on --parallel 1
--ctx-size 131072 -ctk q8_0 -ctv q8_0
--kv-unified
--spec-type mtp --spec-draft-n-max 4
--metrics --jinja
重要なフラグ:- --spec-type mtp — NextN のドラフトパスを有効化(これは#22673からの新しいフラグ)- --spec-draft-n-max 4 — 1ステップあたり4トークンを提案します。チャットでは 6 に上げる(長いctx、予測しやすい)。コードでは 2 に下げます。デフォルトは 4 で問題ありません。- -ctk q8_0 -ctv q8_0 — KVをq8にすると、VRAMを約半分節約でき、このファミリーでは品質コストなし。- --kv-unified — spec-decode に必須です。
速度(3090 Ti, 350W/1700MHz, q8 KV, 約50-tok prompt → 1600-tok decode)
| モデル | tps |
|---|---|
| 4B-MTP IMAT-IQ4_XS | 181 |
| 4B-MTP IMAT-Q4_K_M | 168 |
| 35B-A3B-MTP IMAT-Q4_K_M-Q8nextn | 157 |
| 35B-A3B-MTP IMAT-IQ4_XS-Q8nextn | 149 |
| 27B-MTP IMAT-IQ4_XS-Q8nextn | 47 |
35B-A3Bは27Bを3×上回ります(A3B = 3Bのアクティブパラメータ、MoEが勝つ)。27Bは密なモデル+SSMハイブリッドなので、リンクが遅いです。
電力チューニング(3090 Ti)
継続的なMTPワークロードでは、350W + 1700MHzの固定が tok/W の最適点です:bash sudo nvidia-smi -pl 350 sudo nvidia-smi -lgc 0,1700
デフォルトの300Wだと、MTPのドラフトパスの間にクロックが約1080MHzまで崩れます—tpsが約17%低下します。280W未満に落とさないでください。再起動をまたいで適用したい場合は systemd で永続化します。
つまずきどころ
- **
////出力** = nextn ブロックがQ4で量子化されている状態です。--tensor-type nextn=q8_0で再量子化してください。 - 速度向上なし =
--spec-type mtpが有効になっていない、またはモデルに nextn テンソルがありません。確認:llama-gguf model.gguf r | grep nextn. - 長いctxでOOM = KVをf16→q8に落とす、ctxを縮小する、部分オフロード。
- 27B
bf16のダンプにinfがある =blk.18.ffn_upに発生しています。IQ4カーネルなら処理できます;Q4_K_M のバリデーションは中断します。Q4が失敗する場合は、27Bでは IQ4_XS を使ってください。 - specドラフトの受理率:
/metricsエンドポイントを確認—spec_decode_*_total。コード:~50〜65%。チャット:70%+。
クレジット
- am17an / Aman Gupta:両方の上流PR
- NextN学習済みヘッドを出荷したQwenチーム
- 実行ランタイムの ggml-org
[link] [comments]




