Views
No views yet
--speculative-config in vLLM works out of the box and roughly doubles decode throughput (measured +98 % on temp-0 prose vs the same GPU without MTP; draft acceptance 41–67 % depending on content).auto_round:auto_gptq packing (AutoRound 0.14.2, default tuning)model.language_model.layers and mtp.layersin_proj_a / in_proj_b tensors are kept bf16 (quantizing them hurts the hybrid-attention path far more than it saves)| Setup | Result |
|---|---|
| Weights in VRAM | ~18.0 GiB (TP1) / 9.1 GiB per rank (TP2) |
| RTX 5090 @ 400 W cap, TP1, fp8 KV, 215K ctx | prefill ~2,580 tok/s (74K cold doc), decode 124 tok/s with MTP n=3 / 59 without |
| 2× RTX 3090 @ 200 W cap each, TP2, fp8 KV, 262K ctx | 2.22× concurrency at full 262,144 ctx; decode ~73 tok/s with MTP |
| MTP draft acceptance | 41–46 % (prose) · ~67 % (mixed) · higher on code/predictable text |
| Tool calling | works with --tool-call-parser qwen3_coder + --enable-auto-tool-choice |
1vllm serve Frozenlock/Qwen3.8-27B-int4-AutoRound \
2 --quantization auto_round \
3 --max-model-len 215000 \
4 --kv-cache-dtype fp8 \
5 --enable-prefix-caching \
6 --reasoning-parser qwen3 \
7 --enable-auto-tool-choice --tool-call-parser qwen3_coder \
8 --speculative-config '{"method":"mtp","num_speculative_tokens":3}'rope_parameters block; budget ~35 KB of KV per token (fp8) when sizing.reasoning_effort (none/low/medium/xhigh) works as in the base model.
Note that sending chat_template_kwargs {"enable_thinking": false} makes the
template silently ignore reasoning_effort — use one knob or the other.