Qwen3.6-27B-MTP-48Gb

Overview

This repository hosts a production-ready Q8_0 quantization of Qwen3.6-27B, specifically optimized to run within 48 GB of VRAM (dual RTX 3090s via NVLink). The weights were calibrated using a custom iMatrix blending code, English text, agentic prompts, and French passages to precisely target layer-wise quantization sensitivity. On the tested hardware, this configuration achieves up to ~2,000 t/s prefill and ~85–90 t/s decode throughput with Multi-Token Prediction (MTP) enabled. The Q8_0 format was selected for its optimal speed-to-accuracy ratio, lower-precision variants (e.g., Q6_K) showed a 5 to 10% throughput drop alongside reduced long-context stability, capping reliable usage at ~242k tokens. By preserving critical precision in attention and KV cache operations, this quantization enables stable inference at the model’s maximum context window.

Note: Due to VRAM constraints, the MMPROJ vision encoder must be offloaded to CPU when running multimodal tasks.

Research & Methodology

Selective precision Quantization for high-speed inference

As previously said, Q8_0 was the way to go but the model became too big for the 48Gb target. Therefore, the strategy was to use Q6_K on just a few tensors. I managed to identify which were the least sensitive to quantization thanks to the iMatrix, which also identified the few tensors that needed more care in order to maintain the model's capacities. Therefore, the schema identified was :

Tensor Layers Format
ssm_alpha 57, 58, 60, 61, 62 F16
ssm_beta 57, 58, 60, 61, 62 F16
attn_q, attn_k, attn_v 3, 7 F16
attn_output 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55 Q6_K
ssm_out 0–2, 4–6, 8–10, 12–14, 16–18, 20–22, 24–26, 28–30, 32–34, 36–38, 40–42, 44–46, 48–50, 52–54, 56–58 Q6_K

Therefore, 93.91% of the model is Q8_0, 5.44% is Q6_K and 0.61% is F16.

iMatrix Calibration

The model was calibrated using a custom, shuffled iMatrix to ensure high fidelity across coding, instruction-following, and bilingual tasks (English/French).

Accuracy Analysis

To evaluate the precision loss after the mixed-quantization scheme, I compared the perplexity on Wiki-Text-raw and a custom made dataset, composed of code mainly found on llama.cpp's repo:

Metric Code WikiText-Raw
Base Mean Perplexity 1.897774 ± 0.005951 1.897743 ± 0.005951
Quant Mean Perplexity 1.898452 ± 0.005962 1.898452 ± 0.005962
PPL(Q) / PPL(Base) 1.000357 1.000373 ± 0.000117
Cor(ln PPL) 99.93% 99.93%
Mean KLD 0.001085 ± 0.000107 0.001015 ± 0.000072
99.9% KLD 0.047652 0.048484
99.0% KLD 0.011284 0.011194
95.0% KLD 0.003649 0.003636
Median KLD 0.000035 0.000035
Max KLD 25.477781 16.120018
RMS Δp 1.017 ± 0.026 % 1.002 ± 0.021%
Same Top-p 99.290 ± 0.016 % 99.299 ± 0.016%

Key Findings:

  • Near-Lossless: The perplexity degradation is minimal at +0.000709 on Wiki-Text-Raw, indicating that this mixed precision layout preserves the original model's reasoning and coding capabilities.
  • Reaches full-Q8_0 capacities: Other tests made on a 'pure' Q8_0 quantization shown the same perplexity and KL-Div results, proof that this work has achieved its goals.

Recommended Usage

To replicate the optimal performance (262K context, F16 K-Cache, Multi-GPU) using llama.cpp, use the following llama-server command. Note the specific use of --split-mode tensor and --tensor-split 1,1 for optimal PCIe bandwidth management across dual RTX 3090s. This command appeared to be the best one I could come across using an NVLink. As previously disclosed, the mmproj file will not hold on the GPU, if you want to use it you need to add --no-mmproj-offload and --image-min-tokens 1024 to the following command, alongside the --mmproj /path/to/mmproj-BF16.gguf.

/path/to/llama.cpp/build/bin/llama-server \
    -m /path/to/Qwen3.6-27B0-MTP-Q8-Opt.gguf \
    --split-mode tensor \
    --tensor-split 1,1 \
    --host 0.0.0.0 \
    --port 8080 \
    --ctx-size 262144 \
    --parallel 1 \
    --gpu-layers 999 \
    --cache-type-k f16 \
    --cache-type-v q8_0 \
    --flash-attn on \
    -b 2048 -ub 2048 \
    --spec-type draft-mtp \
    --alias Qwen3.6-27b \
    --jinja

I also developed a proxy to enable users to select thinking or non-thinking behaviors, apply the recommended sampling parameters AND the "Preserve Thinking" option. You may find it on my GitHub.

Hardware Requirements

  • Target VRAM: 48 GB (Tested on 2x NVIDIA RTX 3090 24GB).
  • RAM: Minimum 32GB system RAM (Prompt caching, system overhead and MMPROJ).
  • Context limit: The command above loads ~21GB of KV cache across the two GPUs. If you experience OOM (Out of Memory) errors, consider reducing --ctx-size or using 8-bit K-cache (--cache-type-k q8_0).

Acknowledgments

This project was made possible thanks to the outstanding tools and contributions from the open-source AI community. Special thanks to:

  • The Qwen Team: For researching and releasing the exceptional Qwen3.6 architecture.
  • llama.cpp: Using the new Tensor split mode, it finally achieves extremelly high performances on dual-GPU setups.
  • Unsloth: For the immense work done on fixing Qwen3.5 and 3.6 chat_template and the base BF16 model used for this project.
Downloads last month
15
GGUF
Model size
3.4M params
Architecture
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for AlexanderKyng/Qwen3.6-27B-MTP-48Gb

Base model

Qwen/Qwen3.6-27B
Quantized
(715)
this model

Dataset used to train AlexanderKyng/Qwen3.6-27B-MTP-48Gb