Four quantizations of Qwen3.6-27B, five capability axes, one dual-3090 rig; the quality question, settled with data instead of vibes.

Model Qwen3.6-27B Hardware 2× RTX 3090 · 48 GB OS Debian 13 Engines llama.cpp + vLLM

The finding

Quality is a wash. Across all five axes, every quant lands inside the error bars. There's no measurable difference in intelligence. What separates them is speed, heat, VRAM, and context ceiling, not how smart they are.

1 · Quality, Five Axes

Higher is better. Every gap below is smaller than its confidence interval, so the ranking is just noise. The whiskers on the chart are 95% confidence intervals and they overlap on every axis.

AxisQ4_K_XLQ6_K_XLFP8INT4-ARnVerdict
IFEval · instruction-following85.283.383.380.7150tied ±6
MMLU-Pro · knowledge + reasoning72.172.167.970.0140tied ±7
BFCL · tool-calling *84.784.080.3300tied ±4
Arena-Hard · open-ended (win %)86.175.675.766.750tied ±11
5060708090100score →IFEval (instruction-following)Q485.2Q683.3FP883.3INT480.7MMLU-Pro (knowledge + reasoning)Q472.1Q672.1FP867.9INT470.0BFCL (tool-calling)*Q484.7Q684.0INT480.3Arena-Hard (open-ended, judged)Q486.1Q675.6FP875.7INT466.7
Q4_K_XL (llama.cpp) Q6_K_XL (llama.cpp) FP8 (vLLM) INT4-AutoRound (vLLM) whisker = 95% CI

2 · Speed, Where the Real Difference Lives

Single-stream, measured with vllm bench serve. This is the axis that actually separates the options. vLLM's INT4 pulls even further ahead under concurrent load.

ConfigPrefill @1KDecode @1KTTFT @1KDecode @32K
INT4-AutoRound · vLLM~16001050.65 s98
Q4_K_XL · llama.cpp~875881.18 s71
Q6_K_XL · llama.cpp~852801.21 s67
020406080100120decode throughput (tokens / sec, single-stream)INT4-vLLM105@1K ctx98@32K ctxQ4-llama.cpp88@1K ctx71@32K ctxQ6-llama.cpp80@1K ctx67@32K ctx
INT4-vLLM Q4-llama.cpp Q6-llama.cpp solid = 1K ctx • faded = 32K ctx

INT4-vLLM is ~30–45% faster to decode and reaches first token in half the time. FP8 not shown. Its emulated on Ampere (no native FP8 on the 3090), so its speed isn't representative.

3 · Deployment, The Actual Trade-offs

Since quality is tied, these are the things you're really choosing between.

ConfigEngineQuantGPUsMax ctxCharacter
Q6_K_XLllama.cpp6-bit GGUF2262KNear-lossless, quiet, full context
Q4_K_XLllama.cpp4-bit GGUF1200KCoolest; only one that fits a single card
INT4-AutoRoundvLLMINT4 mixed2262KFastest; hottest & loudest; batches well
FP8vLLMFP8 (emul.)2Quality data-point only; no native FP8 on Ampere

4 · So Which Do You Run?

Daily solo chat · max context

Q6_K_XL · llama.cpp

Cool, quiet, full 262K, near-lossless. The default driver.

Free up a GPU

Q4_K_XL · llama.cpp

Fits one 3090. Quality within noise of Q6 - leaves a card open with Q4_0 kv.

Throughput · concurrent · agentic

INT4-AR · vLLM

Fastest, scales under load. Add a presence penalty to avoid loops; accept the heat.

FP8 on Ampere

Skip it

Emulated, slow, no quality edge. Only worth it on Hopper/Blackwell.

Method. Objective benchmarks (IFEval, MMLU-Pro, BFCL) run greedy (temp 0) with thinking disabled for valid scoring. Arena-Hard run at temp 0.6 with thinking on. Open-ended quality, judged pairwise by DeepSeek-V4-Flash against a GPT-4 baseline, answers order-swapped to cancel position bias. "Tied" = 95% confidence intervals overlap.

* BFCL note. 3 models, n=300 (6 categories × 50), run before the sampling fix. INT4's lower score traced to degenerate repetition loops from a missing presence penalty — strictly a config artifact and reproduced clean once controlled.

Caveats. Sample sizes are directional: they rule out large (>~8 pt) quality gaps, not small (3–5 pt) ones. Arena-Hard at n=50 carries ±10–13 pt bands. A full 500-prompt Arena-Hard run (~$2 on Flash) would only tighten bars around "tied." Speed is single-stream; vLLM's lead widens with concurrency.