unsloth が Qwen3.6-27B-MTP-GGUF を公開したので試した 「生成はやっ」 - マルチトークン予測
所感
今回試した例では、約 1.6 倍。
かなり快適。何度か試した感じでは、明らかな性能低下的なものも見受けらない。
これは良い。
ただ、モデルは "unsloth/Qwen3.6-27B-MTP-GGUF" となっているが、llama-server のコマンド内では "unsloth/Qwen3.6-27B-GGUF-MTP" で、MTP の位置が違う。なぜ。
モデル
専用の llama.cpp をビルド
モデルカードの通り。
git clone -b mtp-clean https://github.com/am17an/llama.cpp.git
cmake llama.cpp -B llama.cpp/build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-server
cp llama.cpp/build/bin/llama-* llama.cpp実行
画像入力なし版
今回はこっちでお試し。
./llama.cpp/llama-server \
-hf unsloth/Qwen3.6-27B-GGUF-MTP:UD-IQ3_XXS \
-ngl 99 -c 32768 -fa on -np 1 \
--spec-type mtp --spec-draft-n-max 3 \
-ctk q8_0 -ctv q8_0 --no-mmprojVRAM 14.88 GB
画像入力あり版
./llama.cpp/llama-server \
-hf unsloth/Qwen3.6-27B-GGUF-MTP:UD-IQ3_XXS \
-ngl 99 -c 32768 -fa on -np 1 \
--spec-type mtp --spec-draft-n-max 3 \
-ctk q4_0 -ctv q4_0VRAM 15.46 GB
生成速度
スーパーマリオブラザーズを作成して
82.57 tokens per second
prompt eval time = 114.66 ms / 18 tokens ( 6.37 ms per token, 156.99 tokens per second)
eval time = 150643.49 ms / 12438 tokens ( 12.11 ms per token, 82.57 tokens per second)
total time = 150758.15 ms / 12456 tokens生成が進むと早くなるのが、なんかうれしい。
投機的デコーディングという意味では n-gram も同様に、条件が合うと速度が上がっていったが、その条件はかなり限定的だった。
しかし、MTP は、良い感じで働いていそう。
比較
公式の llama.cpp 。
./build/bin/llama-server \
-hf unsloth/Qwen3.6-27B-GGUF:UD-IQ3_XXS \
-ngl 99 -c 32768 -fa on -np 1 \
-ctk q8_0 -ctv q8_0 --no-mmproj同じプロンプトの結果。
51.22 tokens per second
prompt eval time = 115.97 ms / 18 tokens ( 6.44 ms per token, 155.21 tokens per second)
eval time = 223138.02 ms / 11429 tokens ( 19.52 ms per token, 51.22 tokens per second)
total time = 223253.98 ms / 11447 tokens