Qwopus3.6-27B-Coder — ik_llama.cpp MTP IQ-quants (GGUF)
This repo contains
ik_llama.cpp-optimized IQ-series GGUF quantizations (with importance matrix) of
Jackrong's excellent
Qwopus3.6-27B-Coder-MTP,
built specifically to run fast on a
single RTX 3090 with
Multi-Token Prediction (MTP) speculative decoding.
The original repo ships generic llama.cpp K-quants (Q4_K_S, etc.). These are different: they use
ikawrakow's SOTA non-linear quant types (IQ4_K, IQ4_KS, IQ3_K) which, on the same hardware,
decode ~40% faster at sustained generation than the generic Q4_K_S — at the same quality — because of
ik_llama's optimized GEMV kernels. MTP draft heads are preserved, so self-speculative decoding works out of the box.
⚠️
These require ik_llama.cpp, not mainline llama.cpp.
The
IQ*_K quant types and the MTP path are ik_llama features. Mainline llama.cpp / LM Studio / Ollama
will
not load these correctly.
Model lineage
| Stage | Model | By |
|---|
| Base | Qwen3.6-27B (dense, 27B) | Alibaba / Qwen |
| Finetune | Qwopus3.6-27B-Coder-MTP (reasoning-distill + agentic coding, MTP heads) | Jackrong |
| This repo | ik_llama.cpp IQ-quants + imatrix | community requant |
Quant files
| File | Type | bpw | Size | PPL (wikitext-2)¹ | Best for |
|---|
Qwopus3.6-27B-Coder-MTP-IQ4_K.gguf | IQ4_K | 4.50 | 14.4 GiB | 6.460 ±0.062 | Max quality |
Qwopus3.6-27B-Coder-MTP-IQ4_KS.gguf | IQ4_KS | 4.25 | 13.7 GiB | 6.477 ±0.062 | Recommended — same quality as IQ4_K, ~37% faster decode |
Qwopus3.6-27B-Coder-MTP-IQ3_K.gguf | IQ3_K | 3.43 | 11.1 GiB | 6.578 ±0.062 | Tight VRAM |
qwopus-imatrix.dat | — | — | 12 MB | — | importance matrix (for reproducing / making your own quants) |
¹ Perplexity over 250 chunks of wikitext-2-raw test at n_ctx=512. IQ4_K and IQ4_KS are
statistically identical (the gap is within the error bars); IQ4_KS is the recommended default since it
decodes markedly faster for no measurable quality loss.
Benchmarks (single RTX 3090, ik_llama.cpp build 4574)
Raw throughput — llama-bench, -ngl 99, no speculative decoding:
| Quant | pp512 (t/s) | tg128 (t/s) |
|---|
| IQ4_K | 993 | 31.2 |
| IQ4_KS | 1215 | 42.8 |
| IQ3_K | 1024 | 40.0 |
Real-world with MTP — llama-server, IQ4_KS, MTP on (--draft-max 2), KV cache q4_0, 200K context,
single slot (-np 1):
| Workload | Prefill (t/s) | Decode (t/s) |
|---|
| Short Q&A | 52 | 75.8 |
| 300-token gen | 231 | 59.9 |
| 900-token gen | 276 | 57.2 |
| 6021-token prompt | 802 | 74.0 |
Measured during the 900-token run: ≈258 W GPU power draw, 65 °C, 21.2 GB VRAM (at 200K context).
For reference, the generic Q4_K_S of the same model on the same machine sustains ~41 t/s decode — these
IQ quants are ~40% faster.
How these were built
Quantizing down from the near-lossless Q8_0 (not from a 4-bit quant — that would compound rounding error),
guided by an importance matrix:
1# 1. Importance matrix — run the Q8_0 model over a calibration corpus (GPU)
2# corpus: bartowski's calibration_datav3 (2481 lines); 129 chunks; ik_llama cu13-full image
3llama-imatrix -m Qwopus3.6-27B-Coder-MTP-Q8_0.gguf \
4 -f calibration_datav3.txt -o qwopus-imatrix.dat -ngl 99
5
6# 2. Quantize each target from Q8_0 with the imatrix (CPU; cpu-full image)
7# --allow-requantize is required because the source is Q8_0 (safe: Q8 is ~lossless)
8for T in IQ4_K IQ4_KS IQ3_K; do
9 llama-quantize --allow-requantize --imatrix qwopus-imatrix.dat \
10 Qwopus3.6-27B-Coder-MTP-Q8_0.gguf Qwopus3.6-27B-Coder-MTP-$T.gguf $T
11done
- Engine: ik_llama.cpp, Docker images
ghcr.io/ikawrakow/ik-llama-cpp:cu13-full (imatrix/bench) and :cpu-full (quantize), build 4574.
- Source: Jackrong's
Q8_0 GGUF (MTP variant), so the MTP draft heads carry through.
- Calibration: bartowski's calibration_datav3.
Usage (ik_llama.cpp)
Serving with an OpenAI-compatible API and MTP speculative decoding enabled:
1llama-server \
2 --model Qwopus3.6-27B-Coder-MTP-IQ4_KS.gguf \
3 -ngl 99 --ctx-size 200000 -b 4096 -ub 1024 -np 1 \
4 -ctk q4_0 -ctv q4_0 -fa on \
5 -ngld 99 --multi-token-prediction --draft-max 2 --draft-p-min 0.0 \
6 --recurrent-ckpt-mode auto --merge-qkv \
7 --jinja --parallel-tool-calls \
8 --reasoning off --reasoning-format deepseek \
9 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.0 --repeat-penalty 1.0
Then point any OpenAI-compatible client at http://localhost:8080/v1. Tool/function calling is supported
(--jinja --parallel-tool-calls). Reasoning is off by default; the source model also supports a thinking mode.
Notes:
--multi-token-prediction --draft-max 2 enables MTP self-speculation; 2 is optimal for this model
(higher draft depths gave no gain or crashed in testing).
- Keep
-np 1 on a single card — extra parallel slots divide throughput and disable MTP.
Credits
- Qwen team / Alibaba — Qwen3.6-27B base model.
- Jackrong — Qwopus3.6-27B-Coder-MTP finetune.
- ikawrakow — ik_llama.cpp, the IQ quant types and MTP support.
- bartowski — calibration dataset.
Disclaimer
Experimental community requantization for local evaluation. Quality is provided as-is — perplexity was
measured, but full coding/agentic benchmarks (HumanEval/SWE-bench/etc.) were not run for these specific
quants. License is inherited from the base (Apache-2.0). These GGUFs require ik_llama.cpp.