Why Quantization Formats Exist
Quantization shrinks a model by storing weights in fewer bits — typically 4-bit instead of 16-bit — which cuts memory ~4x and often speeds up inference. The catch: the weights are stored in different layouts with different reconstruction methods, and each runtime only supports certain layouts. That's why the same model ships in three flavors. Our GGUF explainer covers the local side in depth, and Q4_K_M vs Q8_0 covers picking a quant level within GGUF.
GGUF vs AWQ vs GPTQ: The Comparison
| GGUF | AWQ | GPTQ | |
|---|---|---|---|
| Best for | CPU, Apple Silicon, mixed CPU+GPU, laptops | GPU serving with high throughput | GPU, mature ecosystem (ExLlamaV2) |
| Runtime | Ollama, llama.cpp, LM Studio, GGUF Loader | vLLM, SGLang, TensorRT-LLM, LMDeploy | ExLlamaV2, AutoGPTQ, vLLM |
| Quant levels | Many — Q2_K to Q8_0 (and beyond) | Mostly 4-bit (W4A16), some 3-bit | Mostly 4-bit (W4A16) |
| Calibration data | Optional (imatrix) | Yes — activation-aware scaling | Yes — second-order error minimization |
| Memory | ~0.56 bytes/param at Q4_K_M + overhead | ~0.6 bytes/param at 4-bit | ~0.6 bytes/param at 4-bit |
| Hardware flexibility | Runs anywhere; offloads excess layers to RAM | Needs enough VRAM — no graceful offload | Needs enough VRAM |
💡 The mental model: GGUF is format + ecosystem built for "run it anywhere" — the same file works on a Raspberry Pi and a 48GB workstation. AWQ and GPTQ are methods tuned for GPUs, where you have a fixed, known amount of VRAM and want maximum tokens/sec.
Each Format, Up Close
🟢 GGUF — The Local Standard
Created by the llama.cpp project (originally GGML), GGUF is a single-file format that bundles the weights, tokenizer, and metadata — plus support for many quant levels in one ecosystem. Its killer feature is layer offloading: if a model doesn't fit in VRAM, GGUF quietly keeps the overflow in RAM, so it runs on machines with far less GPU memory than the model needs. This is why Ollama, LM Studio, and GGUF Loader all use it. On CPU and Apple Silicon it's the fastest option; on GPU it's competitive but usually slightly behind AWQ for throughput.
🔴 AWQ — The Activation-Aware Upstart
AWQ (Activation-aware Weight Quantization, MIT) protects the ~1% of weights that matter most, scaling them before quantizing instead of rounding them away. The result is strong 4-bit quality that often beats GPTQ at the same size, plus excellent GPU kernel support in vLLM and SGLang for high throughput. It's the modern default for GPU serving when you don't have a legacy reason to pick GPTQ. Models: search "model AWQ" on Hugging Face.
🔵 GPTQ — The Veteran GPU Format
GPTQ (Generative Pretrained Transformer Quantization) was the first widely adopted GPU 4-bit method and remains everywhere: ExLlamaV2, AutoGPTQ, vLLM. It uses second-order (Hessian-based) error minimization during calibration, which produces excellent quality, though it's more sensitive to calibration data than AWQ. If you see a model with a "GPTQ" folder and a "4bit" subfolder, that's this format — mature, fast on GPU, and the safe choice for older tooling.
🟡 What about FP16, Q8, and others?
Outside the big three: FP16/BF16 are the lossless originals (2 bytes/param); Q8_0 is nearly lossless GGUF at half size; Q2/Q3 GGUF levels are for extreme memory limits with noticeable quality loss; bitsandbytes 4-bit (QLoRA) is for loading models in transformers for fine-tuning, not inference serving. The download guide in Top 10 GGUF by RAM maps files to hardware tiers.
How to Pick (Decision Guide)
| Your situation | Pick |
|---|---|
| Laptop, CPU-only, or Apple Silicon | GGUF (Q4_K_M or Q5_K_M) via Ollama/llama.cpp |
| Single GPU, chat, Ollama/LM Studio | GGUF — same ecosystem, no reason to switch |
| GPU serving many users (vLLM/SGLang) | AWQ 4-bit — throughput + quality |
| Legacy tooling, ExLlamaV2, older stack | GPTQ 4-bit |
| Model doesn't fit VRAM, want it to still run | GGUF — offloads to RAM gracefully |
| Maximum quality, plenty of storage | GGUF Q8_0 or FP16 |
🎯 The rule that beats every table: match the format to your runtime, not to hype. If you run Ollama or llama.cpp (which almost everyone running locally does), GGUF is the only choice that plugs in — and it's excellent. If you're building a GPU inference service, AWQ is the modern default with GPTQ as the veteran. All three are good at 4-bit; the biggest quality mistakes come from running a format your runtime handles poorly, not from picking the "wrong" format.
Converting Between Formats
You're not stuck with what you downloaded:
- FP16/other → GGUF: llama.cpp's
convert_hf_to_gguf.pyhandles most model types, thenllama-quantizeproduces the quant you want — see our step-by-step conversion tutorial. - FP16 → GPTQ: AutoGPTQ's
quantizescript with a calibration dataset. - FP16 → AWQ: the AWQ repo's
quantizescript, or prebuilt AWQ weights from the community. - GGUF → GPU formats: dequantize back to FP16 first (llama.cpp
llama-quantize --dequantize), then quantize to the target format.
🚀 Need pre-quantized files?
For GGUF downloads with direct links and daily updates, check Local AI Zone. For a zero-CLI way to run GGUF models, GGUF Loader handles drag-and-drop local inference. And if you're deciding between quant levels inside GGUF, our Q4_K_M vs Q8_0 guide has the exact numbers.
Frequently Asked Questions (FAQ)
What is the difference between GGUF, AWQ, and GPTQ?
GGUF is a file format and runtime ecosystem (llama.cpp) built for CPU-first local inference, with many quant levels from Q2_K to Q8_0. GPTQ and AWQ are GPU-oriented quantization methods that keep weights in 4-bit with calibration: GPTQ minimizes output error via second-order optimization, AWQ protects the most important weights by scaling. In practice: GGUF for laptops/CPU and Ollama, AWQ or GPTQ for GPU serving.
Which is better: GGUF or AWQ?
It depends on your hardware. GGUF is better for CPU, Apple Silicon, and mixed CPU+GPU setups — it is the format Ollama and llama.cpp use, and it degrades gracefully when weights don't fit in VRAM. AWQ is generally better for pure GPU serving with vLLM or SGLang, offering higher throughput and strong 4-bit quality.
Can I run AWQ or GPTQ models in Ollama or llama.cpp?
Ollama and llama.cpp use GGUF only. If you download AWQ or GPTQ weights, convert them to GGUF (llama.cpp's convert script can read some formats) or use a GPU runtime like vLLM, SGLang, or ExLlamaV2 that natively supports them.
Which quantization format is fastest?
On a GPU, AWQ and GPTQ generally match or beat GGUF for throughput because they are optimized for tensor-core 4-bit matmuls (ExLlamaV2, vLLM). On CPU or Apple Silicon, GGUF wins because llama.cpp's kernels are heavily optimized for it. The format should match the hardware, not the other way around.
Does quantization hurt quality?
Yes, but the loss is small at 4-bit — typically a few percent on benchmarks, often imperceptible in chat. Q4_K_M (GGUF) and 4-bit AWQ/GPTQ are the practical sweet spots. Below 4-bit (Q2/Q3) quality drops noticeably; Q8_0 and FP16 are nearly lossless.
Where can I download GGUF, AWQ, and GPTQ models?
Hugging Face hosts all three: search a model name plus GGUF, AWQ, or GPTQ. Ollama pulls GGUF directly. Curated directories like Local AI Zone list quantized GGUF models with direct links.