Skip to main contentThe Local Bench

Explainer · REV 2026.10 · reviewed 2026-10-13 · 8 min

GGUF, EXL2/EXL3, AWQ or GPTQ — which quantized file should you download?

The four file formats you'll see on every model page, which runtime each one belongs to, and a one-line rule for picking the right file for your hardware.

Discrete graphics card

The 50-word answer

Choose by runtime, not by name. GGUF is for llama.cpp, Ollama and LM Studio, and runs on CPUs, Macs and any GPU. EXL2 and EXL3 are for ExLlama on NVIDIA GPUs and allow any average bit rate. AWQ and GPTQ are 4-bit GPU formats for vLLM-style servers. At similar bits per weight, quality differences are small.

The plain version

The quantization explainer covers why you shrink a model. This one is about the containers those shrunk models come in. Open any popular model on Hugging Face and you'll find the same weights packaged five ways: -GGUF, -exl2, -exl3, -AWQ, -GPTQ. They aren't interchangeable. Each format belongs to a family of runtimes, so pick your software first and the format follows.

An everyday analogy. It's like video files. The same film can come as MP4, MKV or a Blu-ray disc image. Quality depends far more on the bit rate than on the container, but your player decides which ones will open at all.

Format
Made for
Runs on
Bit rates
Pick it when
GGUFllama.cpp, Ollama, LM Studio, JanCPU, Apple, NVIDIA, AMD, Intel; mixed CPU+GPUFixed presets (Q2_K … Q8_0)Almost always, and always on a Mac, a mini PC, or a GPU that's too small
EXL2 / EXL3ExLlamaV2/V3 via TabbyAPINVIDIA GPUs (CUDA)Any average, about 2–8 bpwEverything fits in VRAM and you want the best quality per gigabyte
AWQvLLM, SGLang, TransformersNVIDIA and other GPUsUsually 4-bitServing several users on a GPU server
GPTQvLLM, Transformers, ExLlamaNVIDIA and other GPUs2–8 bit, usually 4As AWQ; older but widely available

GGUF is the default for home use. It's a single file holding the weights and everything needed to run them (the tokenizer, the chat template, and the architecture details). It loads fast and runs on almost anything, and llama.cpp can split it between your graphics card and system RAM when it doesn't fit. Its Q4_K_M-style names are presets of the k-quant family.

EXL2 and EXL3 come from the ExLlama project and target NVIDIA GPUs only. Their trick is any bit rate you like: EXL2 mixes 2- to 8-bit pieces inside one model to hit an exact average, such as 4.65 bits per weight, so you can fill a 24 GB card precisely. ExLlamaV2 is now archived. Development continues in ExLlamaV3, whose EXL3 format is based on the QTIP method.

AWQ and GPTQ are 4-bit-centric GPU formats from research papers. GPTQ uses approximate second-order information to quantize one layer at a time. AWQ notices that protecting about 1% of "salient" weights, found by looking at the activations, removes most of the error. Both are first-class in vLLM and SGLang, the servers built for many simultaneous users.

What about MXFP4, FP8 and NVFP4? These are number formats rather than file families. gpt-oss ships its MoE weights in MXFP4, a 4-bit floating-point format with a shared scale per small block. GGUF, vLLM and others can all carry it. FP8 and NVFP4 need recent NVIDIA hardware to get the speed benefit.

  • Comparing quality across formats

    Bits per weight (bpw) is the fair unit, not the name. Q4_K_M averages about 4.8–4.9 bpw on most models, so compare it with EXL3 at 4.8, not 4.0. The best single metric is KL divergence against the full-precision model on your own kind of text. Perplexity alone hides tail errors.

    Calibration data

    GPTQ, AWQ and EXL2/EXL3 all use a calibration set to decide where precision matters. GGUF k-quants work without one, but an importance matrix (--imatrix) brings calibration to GGUF too. Calibration on mostly English text can cost more in other languages or in code; check what the uploader used.

    Running each one

    # GGUF
    llama-server -hf ggml-org/gemma-3-4b-it-GGUF:Q4_K_M --port 8080
    # AWQ / GPTQ in vLLM (the quantization method is read from the model config)
    vllm serve <org>/<model>-AWQ
    

    EXL2/EXL3 run through TabbyAPI, which the ExLlama README recommends as the official server. Its configuration lives in a YAML file rather than in command-line flags.

    Pitfalls

    • Old GGUFs break chat templates. Re-download if tool calling or "thinking" misbehaves; newer files embed fixed templates.
    • Same name, different recipe. Two "Q4_K_M" uploads with and without an imatrix differ measurably.
    • 4-bit AWQ is not 4.0 bpw. Group scales add about 0.15–0.25 bpw, so check the actual file size.

Sources

  1. ggml docs: GGUF file format specification
  2. ExLlamaV2 README: EXL2 format (archived; continues as ExLlamaV3)
  3. ExLlamaV3 README: EXL3, based on QTIP
  4. Lin et al., "AWQ: Activation-aware Weight Quantization" (arXiv 2306.00978)
  5. Frantar et al., "GPTQ" (arXiv 2210.17323)
  6. vLLM docs: supported quantization methods

Other explainers: Context length and RoPE · KV cache · Memory bandwidth · Mixture of experts · Quantization · RAG and embeddings · Speculative decoding · Tool calling and MCP