Quantization in Practice

Smaller numbers, served for real: formats, kernels, and the quality you pay.

QUANTIZATION · 012.7×DECODE VS BF1616 FP4 VALUES PER BLOCK, ONE SCALE EACH

NVFP4 on Blackwell: Serving a 4-Bit Model End to End

What NVFP4 stores, how vLLM serves it on Blackwell, and what it changes in memory, speed, and quality.

QUANTIZATION · 02WEIGHTSACTIVATIONSKV CACHE16 BITS → 4, 8, 8

Quantization, Mapped: Weights, Activations, KV Cache

What can be quantized in a model, what each saves (memory, bandwidth, compute), and what each risks, with Qwen3-8B's numbers.

QUANTIZATION · 033×

How Much Does Each Bit Cost? Size, Speed, and Quality, Measured

Qwen3-8B in thirteen formats from BF16 to 3-bit GGUF, on one GPU with vLLM: memory, decode speed, prompt reading, perplexity, and GSM8K, plus the formats that would not run.

QUANTIZATION · 04ONE CHANNEL26× A TYPICAL ONEQ_PROJ INPUT, LAYER 10, QWEN3-8B

Post-Training Quantization: Rounding, Calibration, and the Outlier Problem

Why rounding each weight to the nearest value is not enough, what calibration data is for, and the two kinds of outliers in a real model's activations, measured on Qwen3-8B.

QUANTIZATION · 05

GPTQ, Explained and Run

How GPTQ trades weight error for output error, in 30 lines of PyTorch on a real layer, then how to run it with llm-compressor and serve it with vLLM, and which settings actually change the result on Qwen3-8B.

QUANTIZATION · 06INPUT SIZEWEIGHT COLUMNSSCALED UP BY s1% OF CHANNELS, CHOSEN BY THEIR INPUTS

AWQ: Protecting the Weights That Matter

Which 1% of weights matter, why scaling them protects them, and the search behind AWQ, in a few lines of PyTorch on a real layer, then AWQ on Qwen3-8B with llm-compressor and vLLM against plain rounding, GPTQ and a published checkpoint.

QUANTIZATION · 07ACTIVATIONS÷ sSMOOTHEDMAX 17.5 → 1.32, PRODUCT UNCHANGED

SmoothQuant and W8A8: Quantizing Activations Too

Why activation outliers break INT8, how SmoothQuant moves them into the weights, and what it changes for FP8 W8A8, measured on Qwen3-8B with vLLM.

QUANTIZATION · 08ONE TOKEN× QROTATEDOUTLIER 29.8× → 2.1×, PRODUCT UNCHANGED

Rotations for 4-Bit Activations: QuaRot, SpinQuant, and Friends

A rotation flattens activation outliers and, on real layers, rescues INT4 activations. On Qwen3-8B in NVFP4, it cost 5 GSM8K points instead.

QUANTIZATION · 09AFTERTRAINEDWEIGHTS THAT SURVIVE ROUNDING

Quantization-Aware Training: When the Model Learns Its Own Precision

Why Kimi K2 Thinking ships in INT4 and gpt-oss and K3 in MXFP4: training with rounding in the loop, explained and measured on a small model.

QUANTIZATION · 10BF16 · 498K TOKENSFP8 · 975K4-BIT · 1.84MSAME TOKENS, FEWER BYTES

Quantizing the KV Cache: FP8 and Below

Seven KV cache formats in vLLM, from FP8 to 3-bit, on one model: how many more tokens fit, what long-context recall loses, and why speed follows the kernel.

QUANTIZATION · 11Q4BITSKK-QUANTMMIX4.0 NOMINAL → 4.9 REALBITS PER WEIGHT, QWEN3-8B Q4_K_M

GGUF Quant Types Decoded: K-Quants and I-Quants

What Q4_K_M, IQ3_XXS, and the rest mean: the block layouts from llama.cpp's source, the real bits per weight of each file, and the weight error of each type on Qwen3-8B.

QUANTIZATION · 13BF16QUANTIZEDSAME SCORE, DIFFERENT ANSWERS

Measuring the Damage: Evaluations That Catch Quantization Errors

GSM8K said every 4-bit format matched BF16. A noise baseline, paired comparisons, token-level KL, and a code benchmark showed which ones did not.