CoolFace
Modelpublic

AnthonyL1996/Qwopus3.6-27B-Coder-ik-MTP-GGUF

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
1likes92downloads
Model Card

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](https://github.com/ikawrakow/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

StageModelBy
BaseQwen3.6-27B (dense, 27B)Alibaba / Qwen
FinetuneQwopus3.6-27B-Coder-MTP (reasoning-distill + agentic coding, MTP heads)Jackrong
This repoik_llama.cpp IQ-quants + imatrixcommunity requant

Quant files

FileTypebpwSizePPL (wikitext-2)¹Best for
Qwopus3.6-27B-Coder-MTP-IQ4_K.ggufIQ4_K4.5014.4 GiB6.460 ±0.062Max quality
Qwopus3.6-27B-Coder-MTP-IQ4_KS.ggufIQ4_KS4.2513.7 GiB6.477 ±0.062Recommended — same quality as IQ4_K, ~37% faster decode
Qwopus3.6-27B-Coder-MTP-IQ3_K.ggufIQ3_K3.4311.1 GiB6.578 ±0.062Tight 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. IQ4K and IQ4KS 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:

Quantpp512 (t/s)tg128 (t/s)
IQ4_K99331.2
IQ4_KS121542.8
IQ3_K102440.0

Real-world with MTP — llama-server, IQ4KS, MTP on (`--draft-max 2`), KV cache `q40, 200K context, single slot (-np 1`):

WorkloadPrefill (t/s)Decode (t/s)
Short Q&A5275.8
300-token gen23159.9
900-token gen27657.2
6021-token prompt80274.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:

bash
# 1. Importance matrix — run the Q8_0 model over a calibration corpus (GPU)
#    corpus: bartowski's calibration_datav3 (2481 lines); 129 chunks; ik_llama cu13-full image
llama-imatrix -m Qwopus3.6-27B-Coder-MTP-Q8_0.gguf \
  -f calibration_datav3.txt -o qwopus-imatrix.dat -ngl 99

# 2. Quantize each target from Q8_0 with the imatrix (CPU; cpu-full image)
#    --allow-requantize is required because the source is Q8_0 (safe: Q8 is ~lossless)
for T in IQ4_K IQ4_KS IQ3_K; do
  llama-quantize --allow-requantize --imatrix qwopus-imatrix.dat \
    Qwopus3.6-27B-Coder-MTP-Q8_0.gguf Qwopus3.6-27B-Coder-MTP-$T.gguf $T
done
  • —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:

bash
llama-server \
  --model Qwopus3.6-27B-Coder-MTP-IQ4_KS.gguf \
  -ngl 99 --ctx-size 200000 -b 4096 -ub 1024 -np 1 \
  -ctk q4_0 -ctv q4_0 -fa on \
  -ngld 99 --multi-token-prediction --draft-max 2 --draft-p-min 0.0 \
  --recurrent-ckpt-mode auto --merge-qkv \
  --jinja --parallel-tool-calls \
  --reasoning off --reasoning-format deepseek \
  --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

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.