localweights/Qwen3.5-4B-MTP-IQ4_XS-GGUF
Qwen3.5-4B-MTP-GGUF
Qwen3.5-4B (qwen35 dense hybrid arch) with NextN/MTP head preserved. Built via the patched convert_hf_to_gguf.py from patched llama.cpp build with Qwen3.5/3.6 MTP support.
Files
Build pipeline
python convert_hf_to_gguf.py /path/to/Qwen3.5-4B \
--outfile Qwen3.5-4B-MTP-bf16.gguf
llama-quantize Qwen3.5-4B-MTP-bf16.gguf \
Qwen3.5-4B-MTP-IQ4_XS.gguf IQ4_XSRequired adding the qwen35 pre-tokenizer chkhsh entry to convert_hf_to_gguf.py:1531 (vendored in the fork).
Optimal serving config (RTX 3090 Ti)
Recommended `--spec-draft-n-max 2` for this model size. Larger n drops accept rate faster than throughput grows; sweet spot is shallower than the 27B/35B (which peak at n=4).
llama-server -m Qwen3.5-4B-MTP-IQ4_XS.gguf \
-ngl 999 -fa on \
--spec-type mtp --spec-draft-n-max 2 \
--no-mmap \
--ctx-size 8192 -ctk q4_0 -ctv q4_0 \
--parallel 1 --kv-unified \
--metrics --jinjaPerformance — --spec-draft-n-max sweep
Measured 2026-05-06, IQ4_XS, 3090 Ti, no thinking, 200-token decode:
Without spec-decode (baseline): 207 tok/s. So peak MTP gives +40% vs baseline.
Tokenizer
qwen35 pre-tokenizer, 151,936 vocab. Standard chat template.
License
Apache 2.0.
Provenance
Built on Crucible: 9950X / 96 GB DDR5 / RTX 3090 Ti. Sibling: localweights/Qwen3.6-{27B,35B-A3B}-MTP-IQ4_XS-GGUF.
