No items found.
Start Building
Technical

AWQ vs GPTQ vs FP8: LLM Quantization Methods Compared for Serving

AWQ protects the weights that matter before quantizing. GPTQ quantizes everything, then corrects the damage. FP8 skips the algorithm. Here is when each one wins.

Author photo
packet.ai Team
August 7, 2026

AWQ and GPTQ are both weight-only quantization methods that shrink model weights to INT4, running on any NVIDIA GPU. FP8 is a different kind of format entirely, native hardware support on Hopper and Blackwell that halves memory while running at roughly double throughput. The right choice depends on what GPU you have and whether a pre-quantized checkpoint for your model already exists. This post compares how AWQ and GPTQ actually work, since that's the part general quantization overviews tend to skip, and covers when each beats the other or loses to FP8 entirely.

Key takeaways

  • AWQ protects the ~1% of weight channels that matter most, found via activation magnitude. No reconstruction, no backpropagation
  • GPTQ quantizes column by column and mathematically corrects the remaining weights after each step, using a Hessian from calibration data
  • Both produce INT4 and run on any NVIDIA GPU. FP8 needs Hopper or Blackwell and skips weight quantization entirely
  • AWQ quantizes faster; GPTQ often edges ahead on raw accuracy in published benchmarks
  • Tooling has shifted: AutoAWQ → llm-compressor, AutoGPTQ → GPTQModel

Quantization in general, why reducing weight precision saves memory and what tradeoffs it introduces, is covered elsewhere on this site. This post assumes that context and goes straight to the method level: how AWQ and GPTQ actually decide what to keep and what to compress, how they differ from each other beyond just being "both INT4," and where FP8 fits as a third, structurally different option. For deeper coverage of FP8 itself, including its E4M3/E5M2 sub-formats and GPU throughput figures, see the packet.ai FP8 vs FP16 vs BF16 guide; for a quick reference table of vLLM flags across all three methods, see the quantization section of the vLLM deployment tutorial.

How AWQ Quantization Actually Works

AWQ, short for activation aware quantization, starts from an observation that isn't obvious at first: not all weights in a model matter equally, and protecting roughly 1% of the "salient" ones from quantization error can preserve most of the model's accuracy on its own. The harder question is how to find that 1% without knowing in advance which weights matter.

AWQ's answer is to look at activation magnitude, not weight magnitude. A weight can be numerically small and still be important if it's consistently multiplied by large activation values during inference; conversely, a large weight that only ever meets small activations contributes less to the output. AWQ runs a small calibration dataset through the model, measures which weight channels see the largest activations, and treats those as salient.

Once salient channels are identified, AWQ scales them up before quantizing, which reduces the relative rounding error introduced by fitting a wider range of values into fewer bits, and applies the inverse scale to the corresponding activations so the math stays equivalent. This is the entire mechanism: no gradient computation, no per-weight reconstruction step, no iterative error correction. That simplicity is exactly why AWQ quantizes faster than GPTQ and generalizes well across different domains without overfitting to whatever calibration data happened to be used.

How GPTQ Actually Works

GPTQ takes a structurally different approach: rather than deciding in advance which weights to protect, it quantizes every weight and then mathematically corrects for the error each quantization step introduces, one column at a time, within each layer.

The process is sequential. GPTQ quantizes one column of a weight matrix, measures the reconstruction error that introduced, and updates the remaining unquantized columns in that layer to compensate, before moving to the next column. The key detail is how it decides the size and direction of that compensation: it uses the Hessian of the layer's reconstruction error, computed from calibration data, which captures how sensitive the layer's output is to changes in each weight. This lets GPTQ make an informed correction rather than a naive one, at the cost of computing and inverting that Hessian for every layer.

This is meaningfully more computationally expensive than AWQ's approach, but it's still far cheaper than retraining. In the original GPTQ paper, the method quantized OPT-175B, a 175-billion-parameter model, in roughly four GPU-hours. GPTQ typically processes one full Transformer block (several layers) at a time to keep the Hessian computations manageable, then feeds that block's quantized output forward to calibrate the next one.

GPTQ's per-column quantize and correct cycle GPTQ quantizes one column of weights, measures the reconstruction error that introduced, corrects the remaining unquantized columns using Hessian-guided compensation, then repeats for the next column until the layer is done. Quantize column round to INT4 Measure error via the Hessian Correct remaining error compensation Next column repeat ↻ repeats until every column in the layer is quantized

AWQ: protect first, quantize once. Identify the ~1% of channels that matter most by activation magnitude, scale them for protection, quantize everything in one pass. No reconstruction step.

GPTQ: quantize and compensate. Quantize column by column, and after each column, mathematically correct the remaining unquantized weights using Hessian-guided error compensation. Everything gets quantized; the correction happens after the fact.

AWQ vs GPTQ (or GPTQ vs AWQ): The Practical Differences

Both AWQ and GPTQ are weight only quantization methods: they quantize LLM weights to INT4 and leave activations at full precision, running on any NVIDIA GPU, no Hopper or Blackwell requirement the way FP8 has. Both need a small calibration dataset. Beyond that, the practical differences come directly from the mechanism gap above.

Factor AWQ GPTQ
Mechanism Activation-based channel scaling Hessian-guided error compensation
Quantization speed Faster (no reconstruction) Slower (Hessian per layer)
Generalization to new domains Strong, avoids overfitting calibration set Can lean on calibration set specifics
Raw accuracy (published benchmarks) Strong Often slightly ahead
vLLM flag --quantization awq --quantization gptq
Current quantization tool llm-compressor (AutoAWQ deprecated) GPTQModel (AutoGPTQ archived)

⚡ Note on tooling

If you're quantizing a model yourself rather than using a pre-quantized checkpoint, the tooling has moved. AutoAWQ is no longer maintained; llm-compressor is the current path for producing AWQ checkpoints. AutoGPTQ was archived in April 2025; GPTQModel is the drop-in replacement, and it also enables vLLM's Marlin and Machete kernels for better serving throughput on both Ampere and Hopper GPUs. A lot of older tutorials still reference the deprecated tools.

In practice, checkpoint availability often decides this before the theoretical comparison matters. AWQ has become the more commonly published community format for popular open models, so an AWQ checkpoint frequently already exists where a GPTQ one doesn't, and vice versa for some model families. Quantizing from scratch is straightforward with either tool, but starting from an existing checkpoint is faster and lower-risk than reproducing someone else's calibration run.

Where FP8 Fits: A Structurally Different Option

FP8 isn't a competing algorithm in the same sense as AWQ or GPTQ; it's a different kind of format decision entirely. The FP8 vs AWQ question is really a hardware-generation question first: AWQ and GPTQ are algorithms that decide how to compress existing BF16 or FP16 weights down to INT4. FP8 is a native floating-point format that Hopper and Blackwell GPUs execute directly in hardware through NVIDIA's Transformer Engine, no weight-compression algorithm required at all beyond standard calibration.

That difference has real consequences. FP8 needs no separate quantization tool, no Hessian computation, no activation-magnitude analysis; the framework handles calibration and the hardware handles execution. But it only runs on H100, H200, or B200; A100 and older GPUs get none of it. AWQ and GPTQ run on any NVIDIA GPU, including A100 and older, which is the entire reason weight-only INT4 quantization still matters even as Hopper and Blackwell adoption grows.

For a full breakdown of FP8's own sub-formats, GPU throughput numbers, and mixed-precision training details, the FP8 vs FP16 vs BF16 guide covers that in depth; this post treats FP8 as the third branch of the decision rather than repeating that ground.

Which Is the Best Quantization Method for Serving?

Choose FP8 when

  • Running on H100, H200, or B200
  • You want the simplest setup with no quantization tooling
  • Throughput matters more than fitting on older hardware

Choose AWQ when

  • Running on Ampere or older GPUs
  • A community AWQ checkpoint already exists for your model
  • You need to quantize quickly or across varied domains

Choose GPTQ when

  • No AWQ checkpoint exists but a GPTQ one does
  • Raw accuracy matters more than quantization speed
  • You have time for the slower, Hessian-based quantization pass

None of these are mutually exclusive with hardware you already have. The GPU generation you're running on rules FP8 in or out immediately; only after that does the AWQ-versus-GPTQ choice come down to checkpoint availability and how much quantization time you're willing to spend.

Running This on packet.ai

Testing which quantization method actually performs best on your workload means running the same model three different ways and comparing real throughput and quality, not benchmark numbers from someone else's hardware. H100 and B200 instances support all three approaches, including FP8, so the comparison can happen on the same hardware you'd actually deploy on rather than extrapolating from a different GPU generation. packet.ai's Dynamic tier bills hourly rather than requiring a fixed allocation, which makes it a practical place to spin up an AWQ checkpoint, a GPTQ checkpoint, and an FP8 configuration in sequence and compare them directly before committing to one.

Frequently asked questions

AWQ identifies the roughly 1% of weight channels that matter most by measuring activation magnitude, then scales those channels to protect them before quantizing, with no reconstruction step. GPTQ quantizes every weight column by column and mathematically compensates the remaining unquantized weights after each step, using Hessian information from calibration data to guide the correction. AWQ is faster to run; GPTQ often edges out AWQ on raw accuracy in published benchmarks.
If you're running on H100, H200, or B200, FP8 generally makes more sense: no quantization tooling required, and native hardware support delivers roughly double throughput over BF16. AWQ becomes the better choice on Ampere or older GPUs, which don't support FP8 at all, or when you need the smallest possible memory footprint via INT4 weights.
The older AutoAWQ and AutoGPTQ tools are no longer the right path. AutoAWQ is deprecated in favor of llm-compressor. AutoGPTQ was archived in April 2025 in favor of GPTQModel, which also enables vLLM's Marlin and Machete kernels for faster serving. Many older tutorials still reference the deprecated tools, so check which one a guide is using before following it.
Yes, INT4 is the most common target for both, though both support other bit widths as well. The 4-bit target is what makes both methods effective for fitting large models onto GPUs with limited VRAM, since it quarters memory usage versus BF16 or FP16 weights.
Both introduce some quality loss versus full-precision weights, though generally modest for most tasks. AWQ's activation-aware scaling and GPTQ's Hessian-guided error compensation both exist specifically to minimize that loss compared to naive rounding. GPTQ has an edge in raw accuracy in several published benchmarks, while AWQ tends to generalize better to domains outside its calibration set since it doesn't reconstruct or overfit to that data.

Last reviewed: August 7, 2026. For FP8's own mechanics and GPU throughput figures, see the FP8 vs FP16 vs BF16 guide. For a quick vLLM flag reference across all three methods, see the vLLM deployment tutorial.

Waste less compute.

Same models. Same API. Fraction of the cost. Start free — no credit card required.

Start Building →

More from the blog