Articles

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 · 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.

SERVING IN PRODUCTION · 02QUIET · FIRST TOKEN, THEN A STEADY STREAMLOADED · LONGER WAIT, LONGER GAPSTHROUGHPUT UP, GOODPUT DOWN

TTFT, ITL, Goodput: Measuring What Users Feel

What TTFT, TPOT, ITL, end-to-end latency, and goodput each measure, how the tools compute them, and why peak throughput is the wrong target.

REQUEST TO TOKENS · 02PREFILL · ALL TOKENS, ONE PASSDECODE · ONE TOKEN PER PASS0.20 ms vs 74 ms PER TOKEN

Prefill vs. Decode: Why the Second Token Is a Different Workload

Why a prompt token costs hundreds of times less than an answer token on the same weights: prefill and decode, seen in a kernel trace.

REQUEST TO TOKENS · 01PROMPT · ONE PASSANSWER · ONE PASS PER TOKENFIRST TOKEN 82 ms · THEN 73 ms EACH

From Prompt to Token: The Life of an LLM Request

One chat request followed through a real inference server, from chat template and tokens to prefill, decode, sampling, and streaming, each stage timed.

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 · 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 · 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 · 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 · 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 · 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.

NUMBER FORMATS · 09256x² FITS IN FP1612,096A REAL ACTIVATION, FAR PAST 256

Where Low Precision Bites: Rounding, Overflow, and Accumulation

Five places where low precision breaks real computations, each reproduced on Qwen3-8B's own tensors, and the fix every serious implementation applies.

NewerPage 2 of 5Older