The Free Encyclopedia

GGUF Quantization Tiers Compared

Once a model is in GGUF, the next question is which quant to ship. The format supports a whole ladder of tiers, and the "k-quants" add _m (medium) and _s (small) variants on top of that. They all trade the same three things against each other: file size, answer quality, and speed. This is how we pick a rung for theLAB's ADI line.

The short version: q4_k_m is the default sweet spot, and you only climb the ladder when your own eval set tells you to. Sizes below are approximate for a 7B model — they scale with parameter count, so a 4B lands proportionally smaller.

The tiers

Quant~Size (7B)QualityUse it when
q4_k_mapproximately 4.4 GBStrong — the practical floor for "feels like the full model"Default for almost all local use
q5_k_mapproximately 5.1 GBA touch better than q4Good middle ground with spare VRAM
q6_kapproximately 5.5 GBNear-lossless vs f16Quality-critical work
q8_0approximately 7.2 GBEffectively losslessRarely worth it locally
f16approximately 14 GBUnquantized referenceConversion intermediate / baseline

Quality: where the floor is

Perplexity rises gently as you step down from q8q6q5q4. The whole top of the ladder is close enough that most users can't tell q8 from q4_k_m on general chat. The cliff is below q4: q3 and q2 degrade hard and fast. That's why we treat q4_k_m as the practical floor — the last rung that still feels like the full model.

Pick against your eval set, not vibes The right quant depends on the task. A chat model is usually fine at q4_k_m, but a coder model may need q5_k_m or q6_k to keep generated code correct — a single flipped token breaks a function in a way it never breaks a paragraph. Score it on a held-out set, don't eyeball it.

Speed and footprint

On the memory-bandwidth-bound GPUs we run, smaller quants are faster, not just lighter. Fewer bytes per weight means fewer bytes to move per token, so tokens/sec goes up, and more of the model (plus more KV cache) fits in VRAM. So the trade is clean and one-directional: smaller is faster and cheaper on memory, paid for in quality. That's the whole reason the ladder exists.

What we ship

theLAB defaults the ADI line to q4_k_m. For example, adi-qwen3.5-4b-glm5.2-general is a 2.7 GB q4_k_m for a 4B base. We bump to q5_k_m or q6_k only when there's spare VRAM and we measure real degradation on a model's eval set; q8_0 and f16 stay reserved for quality-critical models or as a conversion intermediate.

# quantize an f16 GGUF down to q4_k_m
./llama.cpp/build/bin/llama-quantize in-f16.gguf out-q4_k_m.gguf q4_k_m

# swap the last arg for a different rung: q5_k_m, q6_k, q8_0 ...
Don't quantize from an already-quantized file Always quantize down from the f16 (or bf16) GGUF, never from a lower tier. Re-quantizing a q4_k_m into q5 can't recover lost precision — it just bakes the q4 loss in and adds more on top. Keep the f16 around as the source of truth.

The rule of thumb

Default to q4_k_m. Climb to q5_k_m or q6_k if you have the VRAM and your eval set shows degradation. Reach for q8_0 or f16 only when quality is non-negotiable or you need the unquantized intermediate for a conversion.