DualQuant: Dual-scale Calibration-free Weight-and-Activation Quantization for LLMs
Organizations: d-Matrix
Abstract
Low-bit inference on accelerators with native 4-bit support requires quantizing both weights and activations to realize the full throughput gains these formats provide. While post-training weight quantization has been extensively studied, activation quantization remains considerably more challenging and typically requires calibration data. In this work, we introduce DUALQUANT, a dual-scale, calibration-free post-training quantization framework that directly minimizes the weight-reconstruction Mean Squared Error (MSE) and, as an immediate by-product, yields per-channel activation rescalings prior to activation quantization. Our key observation is that the scaling factors obtained by minimizing weight-reconstruction error provide effective activation rescalings, enabling competitive activation quantization without calibration data. We formulate DUALQUANT as a non-differentiable weight-reconstruction problem and develop an efficient solver based on variable splitting and block coordinate descent, where each subproblem admits a closed-form update. DUALQUANT provides a unified algorithm supporting a wide range of formats, including the full MX family and NVFP4. To our knowledge, DUALQUANT is the first dual-scaling method to formally support MX and NV block formats. Across Llama and Qwen models evaluated on WikiText-2, C4, and zero-shot downstream tasks, DUALQUANT matches or exceeds the accuracy of calibration-based SmoothQuant across most models and formats, and substantially outperforms calibration-free baselines, with large gains for MX and NV block formats. We validate these gains with a real packed W4A4 inference path for Llama-3.1-8B on an RTX 4090. The resulting implementation closely matches the accuracy of fake quantization while delivering up to 2.61x memory reduction and up to 2.46x throughput speedup over BF16.
Figures & tables
| Bits | Format | Method | CF | WikiText-2 PPL | C4 PPL | ||||
|---|---|---|---|---|---|---|---|---|---|
| Llama-2-7B | Llama-3.1-8B | Llama-3.2-1B | Llama-2-7B | Llama-3.1-8B | Llama-3.2-1B | ||||
| BF16 (reference) | – | 5.11 | 5.62 | 8.67 | 7.04 | 8.82 | 13.53 | ||
| 4-bit | A: INT4 W: INT4 | RTN | ✓ | 5.73 | 7.11 | 12.06 | 7.97 | 11.99 | 19.69 |
| AWQ+ | ✗ | 5.57 | 6.83 | 12.46 | 7.73 | 11.51 | 20.24 | ||
| SmoothQuant | ✗ | 5.68 | 6.98 | 13.37 | 7.91 | 11.75 | 21.99 | ||
| SINQ+ | ✓ | 5.61 | 6.83 | 12.36 | 7.80 | 11.45 | 20.68 | ||
| Llama-3.1-8B | |||||||
|---|---|---|---|---|---|---|---|
| Format | Method | CF | MMLU | HellaSwag | PIQA | ARC-Easy | WinoGrande |
| INT4 (G=64) | RTN | ✓ | 54.89 | 56.44 | 77.86 | 77.40 | 68.90 |
| AWQ+ | ✗ | 55.78 | 56.65 | 78.51 | 77.19 | 69.06 | |
| SmoothQuant | ✗ | 55.24 | 55.93 | 77.31 | 77.44 | 68.75 | |
| SINQ+ | ✓ | 55.50 | 56.68 | 77.09 | 77.65 | 67.72 | |
| QuaRot | ✓ | 54.21 | 56.16 | 77.04 | 77.40 | 70.17 | |
| Workload | Memory (GB) | Memory (GB) | Memory | Throughput (tok/s) | Throughput (tok/s) | |
|---|---|---|---|---|---|---|
| BF16 | W4A4 | Reduction | BF16 | W4A4 | Speedup | |
| Prefill | 16.33 | 6.25 | 3904.6 | 6421.4 | ||
| Prefill | 16.66 | 6.58 | 8940.3 | 22003.4 | ||
| Decode | 16.34 | 6.26 | 56.6 | 83.7 | ||
| Decode | 16.75 | 6.67 | 694.5 | 964.1 |
Appendix figures & tables9 assets
Supplementary material from the paper’s appendix.
Appendix
| Projection | applied | not applied | (dB) |
|---|---|---|---|
| k_proj | 17.61 | 16.80 | |
| v_proj | 17.45 | 16.80 | |
| up_proj | 18.48 | 18.20 | |
| q_proj | 17.05 | 16.80 | |
| gate_proj | 18.36 | 18.20 | |
| o_proj | 17.40 | 17.34 |
| WikiText-2 PPL | C4 PPL | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Bits | Format | Method | CF | Qwen2.5-7B | Qwen3-0.6B | Qwen3-14B | Qwen2.5-7B | Qwen3-0.6B | Qwen3-14B |
| BF16 (reference) | – | 6.15 | 18.14 | 7.54 | 9.12 | 27.30 | 11.06 | ||
| 4-bit | A: INT4 W: INT4 | RTN | ✓ | 7.47 | 49.44 | 8.39 | 13.50 | 74.78 | 14.83 |
| AWQ+ | ✗ | 7.36 | 38.80 | 8.19 | 13.21 | 59.20 | 14.43 | ||
| SmoothQuant | ✗ | 7.10 | 30.67 | 8.12 | 12.74 | 50.73 | 14.21 | ||
| SINQ+ | ✓ | 7.28 | 30.21 | 8.02 | 12.94 | 49.05 | 14.15 | ||
| Qwen3-14B | |||||||
|---|---|---|---|---|---|---|---|
| Format | Method | CF | MMLU | HellaSwag | PIQA | ARC-Easy | WinoGrande |
| INT4 (G=64) | RTN | ✓ | 70.33 | 75.23 | 77.64 | 77.36 | 69.06 |
| AWQ+ | ✗ | 71.92 | 75.03 | 77.86 | 79.08 | 69.53 | |
| SmoothQuant | ✗ | 73.04 | 76.74 | 77.91 | 80.77 | 71.51 | |
| SINQ+ | ✓ | 72.30 | 76.23 | 77.80 | 79.59 | 70.17 | |
| QuaRot | ✓ | 71.30 | 73.52 | 76.77 | 77.99 | 67.88 | |
| Bits | Format | Method | CF | Qwen2.5-7B | Qwen3-0.6B | Qwen3-14B | Llama-3.1-8B |
|---|---|---|---|---|---|---|---|
| BF16 (reference) | – | 6.15 | 18.14 | 7.54 | 5.62 | ||
| 8-bit | A: INT8 W: INT8 | RTN | ✓ | 6.27 | 18.42 | 7.55 | 5.72 |
| SmoothQuant | ✗ | 6.25 | 18.28 | 7.50 | 5.70 | ||
| SINQ+ | ✓ | 6.67 | 18.33 | 7.49 | 5.70 | ||
| DualQuant | ✓ | 6.64 | 18.24 | 7.77 | 5.69 | ||
| A: MXINT8 W: MXINT8 | RTN | ✓ | 6.15 | 18.06 | 7.54 | 5.63 | |
| Bits | Format | Method | CF | Qwen2.5-7B | Qwen3-0.6B | Qwen3-14B | Llama-3.1-8B |
|---|---|---|---|---|---|---|---|
| BF16 (reference) | – | 6.15 | 18.14 | 7.54 | 5.62 | ||
| 4-bit | W: INT4 | RTN | ✓ | 6.67 | 26.33 | 7.93 | 6.32 |
| AWQ | ✗ | 6.50 | 21.83 | 7.72 | 6.12 | ||
| GPTQ | ✗ | 6.44 | 20.39 | 7.73 | 5.56 | ||
| SINQ | ✓ | 6.57 | 22.21 | 7.76 | 6.16 | ||
| DualQuant | ✓ | 6.55 | 21.35 | 7.88 | 6.12 | ||
| Component | Prefill ( ) | Prefill ( ) | Decode ( ) | Decode ( ) | ||||
|---|---|---|---|---|---|---|---|---|
| BF16 | W4A4 | BF16 | W4A4 | BF16 | W4A4 | BF16 | W4A4 | |
| Quantized linears (224) | 17.33 | 8.82 | 121.49 | 32.98 | 14.75 | 8.24 | 16.32 | 9.18 |
| Activation quantization (incl. ) | – | 0.82 | – | 3.09 | – | 0.70 | – | 0.72 |
| lm_head (BF16) | 1.19 | 1.19 | 9.26 | 9.26 | 1.07 | 1.07 | 1.10 | 1.10 |
| Attention | 0.19 | 0.20 | 0.93 | 0.94 | 0.42 | 0.42 | 1.73 | 1.74 |
| Norms / RoPE / KV cache / residual | 2.43 | 2.33 | 14.03 | 13.37 | 1.60 | 1.64 | 4.18 | 4.14 |
| Component | Prefill ( ) | Prefill ( ) | Decode ( ) | Decode ( ) | ||||
|---|---|---|---|---|---|---|---|---|
| BF16 | W4A4 | BF16 | W4A4 | BF16 | W4A4 | BF16 | W4A4 | |
| Quantized linear weights | 13.96 | 3.49 | 13.96 | 3.49 | 13.96 | 3.49 | 13.96 | 3.49 |
| Per-group weight scales (BF16) | – | 0.22 | – | 0.22 | – | 0.22 | – | 0.22 |
| Embedding + lm_head (BF16) | 2.10 | 2.10 | 2.10 | 2.10 | 2.10 | 2.10 | 2.10 | 2.10 |
| Runtime/allocator overhead | 0.14 | 0.11 | 0.14 | 0.11 | 0.14 | 0.11 | 0.14 | 0.11 |
| Weights subtotal | 16.20 | 5.92 | 16.20 | 5.92 | 16.20 | 5.92 | 16.20 | 5.92 |
| Category | Assets and Licenses |
|---|---|
| Models | Llama-2-7B (Llama 2 Community); Llama-3.1-8B (Llama 3.1 Community); Llama-3.2-1B (Llama 3.2 Community); Qwen2-1.5B, Qwen2.5-7B, Qwen3-0.6B, Qwen3-14B (Apache 2.0) |
| Datasets | WikiText-2 (CC BY-SA 4.0); C4 (ODC-BY 1.0); MMLU (MIT); HellaSwag (MIT); PIQA (AFL-3.0); ARC-Easy (CC BY-SA 4.0); WinoGrande (CC-BY) |
LLM Quantization
Large language model quantization reduces numerical precision to lower memory use and accelerate training or inference.
See all 381 papers