Transforms for LLM Quantization: The Great Inversion and Format Co-Design
Abstract
Most competitive 4-bit LLM research pipelines now open the same way: apply a linear, function-preserving transform (rotation, scaling, permutation, non-orthogonal affine) so the outlier mass sits more favorably against the group scales, and only then round. Yet we are aware of no survey dedicated to this transform stage, and its literature is quietly re-deriving an older theory. We identify and formalize the principle that organizes it, the Great Inversion: allocation-flexible coding rewards energy concentration, whereas the grouped shared-scale quantization a deployed matrix instruction performs rewards within-group flattening. Classical transform coding (1963: decorrelate, allocate bits, quantize) spends different bits per coordinate at a fixed total rate; for a Gaussian source at high rate the Karhunen-Loeve transform's concentration minimizes distortion. A deployed operand tile instead carries one absolute-maximum scale per group and equal bits everywhere, with no allocation; on a uniform grid that objective rewards flattening, approached by Hadamard incoherence. We prove that opposition under within-group majorization: the prescriptions point in opposite directions, each backed by a proof against its own objective, and for a generic spectrum no optimality guarantee transfers. A second axis is the number format: the non-uniform FP4 grid makes flattening buy less, MXFP4's power-of-two block scale still rewards a rotation confined to that block, and NVFP4's mantissa-carrying scale largely removes that pull, so the target pole depends jointly on allocation regime and format. We survey 200 works to a June 2026 cutoff; classify 43 transform methods by structure, data-awareness, searched-versus-constructed, and runtime cost; record, where reported, how they compose with GPTQ rounding; distill a first-choice guide by deployment regime; and close with the open problems it exposes.
Figures & tables
| # | Result (what is proven) | Regime | Objective it optimizes | Reference |
|---|---|---|---|---|
| 1 | For a Gaussian source with at high rate, the KLT with optimal (logarithmic) bit allocation, every coordinate receiving positive rate, is MSE-optimal at a fixed total rate among orthogonal transforms ; the optimal transform concentrates energy | Allocation-flexible concentrate | MSE at fixed total rate (per-coefficient allocation) | Huang & Schultheiss (1963) ; Goyal (2001) ; Theorem 3.3 |
| 2 | Coding gain (the arithmetic-over-geometric-mean measure of the transformed variances; the cited source uses the geometric-over-geometric variant) is maximized by maximally unequal variances; when all coefficients share one scale-invariant quantizer family, a KLT is optimal among orthogonal transforms for any bit allocation | Allocation-flexible concentrate | Coding gain (distortion reduction at fixed rate) | Goyal (2001) |
| 3 | Nested-lattice quantization is asymptotically optimal for the matrix-multiplication distortion (i.i.d. Gaussian matrices) | Lattice / rate–distortion | Inner-product MSE at fixed rate | Ordentlich & Polyanskiy (2024) |
| 4 | - incoherence processing bounds the proxy quantization error; a random rotation achieves low coherence with high probability | Shared-scale flatten | Layer-output MSE under uniform quant | Chee et al. (2023) |
| 5 | A randomized Hadamard with a dithered Lloyd/Gaussian-companded scalar quantizer attains the same leading MSE constant that Zandieh et al. (2025) proved for a fully random rotation, up to an vanishing as the bit-width grows | Shared-scale flatten (companded grid) | Per-vector MSE (worst-case unit vector) | Feng et al. (2026) |
| 6 | Block-Hadamard rotation has non-asymptotic bounds on the outlier suppression it can achieve | Shared-scale flatten | Post-rotation within-group , set by how evenly mass is spread across blocks | Sanjeet et al. (2026) |
| Method | Fam. | D | L | Cost | Transform, in one line |
|---|---|---|---|---|---|
| CLE ( Nagel et al., 2019 ) | Diag | N | N | fold | Data-free pairwise channel rescale equalizing adjacent-layer weight ranges via ReLU scale-equivariance. |
| Outlier Supp. ( Wei et al., 2022 ) | Diag | N | N | fold | Fold LayerNorm’s per-channel (the outlier amplifier) into the next weight, with a compensating parameter on the residual branch (data-free); token-wise clipping is a separate calibrated add-on. |
| SmoothQuant ( Xiao et al., 2023 ) | Diag | Y | N | fold | migrates activation outliers into weights. |
| AWQ ( Lin et al., 2024b ) | Diag | Y | Y | fold | Per-channel scale protecting the channels salient by activation magnitude; grid-searched on output MSE. |
| Outlier Supp.+ ( Wei et al., 2023 ) | Diag | Y | Y | fold | Per-channel shift (center) then scale (outlier threshold grid-searched); both migrated into the next weight and bias. |
| OmniQuant ( Shao et al., 2024 ) | Diag | Y | Y | fold | Gradient-learned per-channel scale and shift (LET) plus learnable weight clipping (LWC). |
| Method | Type | Optimizes | Relation to transform |
|---|---|---|---|
| WaterSIC ( Lifar et al., 2026 ) | grid/allocation (variable-rate) | geometric-mean (det ) distortion; basis-free scalar-INT optimum under entropy coding (rates reported as entropy, not log-cardinality) | near-substitute for a rotation at high rate (waterfills grid spacings instead); the worst-case equivalence is left open and the overlap shrinks at – bits |
| FLUTE ( Guo et al., 2024 ) | kernel | throughput: LUT dequant keeping pace with tensor cores | none directly; it serves the codebook stage downstream of the transform, and only the scalar lookup-table codebooks, vector and lattice ones being future work in the source |
| GPTQ ( Frantar et al., 2023 ) | rounder | quadratic layer loss; fixed-order blocked error feedback | applies no basis-changing transform; rounds on the given basis (composes; at high rate it is a rotation and per-coordinate allocation that are the near-substitutes, not the rounder, Section 7.2 ) |
| GPFQ ( Lybrand & Saab, 2021 ) | rounder | layer output error under the mismatched input pair; greedy path-following | composes; corrects the committed previous-layer input mismatch, adjusts no future weights |
| LDLQ (QuIP) ( Chee et al., 2023 ) | rounder | quadratic proxy loss ; proved optimal, worst and average case, among rounders whose linear feedback depends on and not on , when rounding to integers | composes; QuIP pairs it with incoherence processing, which supplies nearly all of the 2-bit gain ( Section 7.2 ) |
| OBC ( Frantar et al., 2022 ) | rounder | quadratic layer loss; exact greedy per-row order with optimal compensation | rounds on transform’s basis (composes) |
| Method | Target format | Transform used | Scale treatment |
|---|---|---|---|
| HiFloat4 ( Luo et al., 2026 ) | HiFloat4 (E1M2 elements) | none (format definition) | E6M2 per-block base scale (8 b) two levels of 1-bit micro-exponents (8-way, 16-way); 32 b metadata per G=64 block |
| QuEST ( Panferov et al., 2025 ) | INT or FP4 (grid-agnostic; QAT), INT the main setting | Hadamard (Gaussianize) | single MSE-optimal clip threshold |
| INT-FP flip (high-rate) ( Ordentlich & Polyanskiy, 2026a ) | INT vs FP, 4–8 bit ( block-scaled) | random rotation (analyzed, not proposed) | real scales; high-rate rate–distortion (INT absmax/ , FP joint concentration ) |
| Block Rotation ( Shao et al., 2025b ) | MXFP4 | block-confined Hadamard (block ), its sole proposed transform, a learned block rotation being evaluated as a variant, applied on top of GPTQ | E8M0 power-of-two |
| MR-GPTQ ( Egiazarian et al., 2026 ) | MXFP4 NVFP4 | fused block-diagonal Hadamard (tunable block ) | alternating per-tensor per-group MSE fit, reported for NVFP4 without rotations; a static value for MXFP4 with rotations; separately, a proposed E8M0 exponent grid fitted to the tensor’s scale range |
| Quartet ( Castro et al., 2025 ) | MXFP4 | block-diagonal Hadamard (block=G=32) | E8M0 power-of-two |
| Element grid | no rotation | Hadamard | gain |
|---|---|---|---|
| INT4 (uniform) | |||
| FP4 (E2M1) |
| Method | Tensor / site | Lever | Key idea |
|---|---|---|---|
| OSCAR ( Zhou et al., 2026 ) | KV-keys values | rotation | keys rotated by the query covariance , values by the score-weighted covariance ( Hadamard); minimizes the downstream attention ( / ) distortion, not cache reconstruction |
| KIVI ( Liu et al., 2024c ) | KV-keys/KV-values | none | per-channel keys, per-token values from an element-distribution study; tuning-free, FP16 residual window of recent tokens, fused 2-bit kernel |
| KVQuant ( Hooper et al., 2024 ) | KV-keys/KV-values | none | per-channel keys, per-token values, pre-RoPE, Fisher-weighted codebook + dense-and-sparse |
| RotateKV ( Su et al., 2025 ) | KV-keys/KV-values | rotation | Walsh–Hadamard + calibrated channel permutation, grouped heads on keys, pre-RoPE |
| PolarQuant (Han et al.) ( Han et al., 2025 ) | KV-keys/KV-values | reparam. | random-rotation preconditioning makes recursive-polar angles data-independent; stores no per-block scale or zero-point; small per-level angle codebooks; KV compression |
| PolarQuant (Wu et al.) ( Wu et al., 2025 ) | KV-keys | reparam. | 2D sub-vectors (radius angle) exploiting RoPE’s paired rotations; precomputed into a decode-time lookup table |
| Method | Role | What it provides | Rate |
|---|---|---|---|
| CCQ ( Zhou et al., 2025 ) | fixed-rate coder | 2-bit (2.06 bpw) lookup-free convolutional code, bit-shift decode (no codebook lookup) | fixed-rate |
| HadaCore ( Agarwal et al., 2024 ) | kernel | online Walsh–Hadamard rotation for incoherence processing | fixed-rate |
| QUIK ( Ashkboos et al., 2024b ) | kernel | mixed-precision W4A4 GEMM; 256 outlier columns kept in FP16, summed into the INT4 GEMM epilogue (no extra round-trip) | fixed-rate |
| DFloat11 ( Zhang et al., 2025f ) | lossless-coder | BF16 exponent field, GPU decode at transformer-block granularity, 30% weight-memory cut | variable-length |
| NeuZip ( Hao et al., 2024 ) | lossless-coder | BF16 exponent field, GPU pre-GEMM decode | variable-length |
| ZipNN ( Hershcovitch et al., 2025 ) | lossless-coder | BF16 exponent field for storage/network transfer | variable-length |
| Accelerator (arch.) | Low-precision matmul | MX/NVFP4 | Bearing on the dequantization cost |
|---|---|---|---|
| A100 (Ampere, ’20) | INT4 , INT8 , FP16 / BF16 | – | INT4 GEMM is tensor-core-native ( FP16 ), but W4A4’s per-group scales still rescale INT32 partial sums on the CUDA cores. |
| H100/H800 (Hopper, ’22) | FP8 , INT8 , FP16 / BF16 | – | INT4 dropped from the tensor core: it compiles to CUDA-core IMAD ; low-bit compute shifts onto the FP8 / INT8 path. |
| B200/GB200 (Blackwell, ’24) | FP4 , FP6 , FP8 , INT8 , FP16 / BF16 | NVFP4 , MXFP4/6/8 | The tensor core applies the block scale in hardware, so the FP4 block-scale “dequantization” is not a separate software step. |
| MI300X (CDNA3, ’23) | FP8 , INT8 , FP16 / BF16 | – | FP8 / INT8 matrix-core path; no native FP4 / FP6 . |
| MI355X (CDNA4, ’25) | FP4 , FP6 , FP8 , INT8 , FP16 / BF16 | MXFP4/6/8 | First AMD data-center FP4 ; the MX block scale is handled in the matrix core. |
| Lane | W / A | Where the per-scale-group multiply lands, and representative kernels |
|---|---|---|
| W4A16 | INT4 / FP16 | Weight-only: an INT4 FP16 upconversion that a well-pipelined kernel hides behind the weight loads it saves at the batch sizes decode runs at (Marlin holds near- to batch – ; Machete), or eliminates outright by tabulating partial products (LUT-GEMM); at larger batch the GEMM turns compute-bound and the memory saving has nothing left to hide behind. |
| W4A8 | INT4 / INT8 | INT4 weights decoded to INT8 (register-level, or the scale folded offline), then INT8 INT8 on the tensor cores: no partial-sum rescale (QServe/QoQ, QQQ, LiquidGEMM). |
| W4A4 INT , coarse | INT4 / INT4 | Any scale constant along (per-tensor, per-token activation, or per-output-channel weight) one rescale of the INT32 accumulator in the epilogue (cheap); viable once a strong transform flattens the tensor (QuaRot) or the outliers are pulled to FP16 (QUIK), with MergeQuant folding the scale away and PrefixQuant making it static. |
| W4A4 INT , per-group | INT4 / INT4 | Per-group scale varies along partial sums rescaled in the main loop on the CUDA cores, the upper end of the – dequantization tax QServe measures across INT4 methods (Atom fuses it into the pipeline; COMET, APEX4 attack it directly). |
| W4A4 FP4 , native | FP4 / FP4 | Per-block ( or ) scale applied inside the tensor core by a block-scaled MMA: no software step (Blackwell tcgen05.mma ; CDNA4 documents the capability without naming the instruction). |
| Transform family | Representative | W4A4 PPL |
|---|---|---|
| Diagonal (rebalance) | SmoothQuant † | 83.12 |
| Permutation (regroup) | Atom | 6.12 |
| Fixed orthogonal (Hadamard) | QuaRot | 6.19 |
| Learned orthogonal | SpinQuant | 5.95 |
| Non-orthogonal affine | FlatQuant † | 5.78 |
| Sequence & frame | PrefixQuant | 5.93 |
| Method (family) | L2-7B | L2-13B | L2-70B | L3-8B | L3-70B |
|---|---|---|---|---|---|
| WikiText-2 perplexity | |||||
| FP16 (reference) | 5.47 | 4.88 | 3.32 | 6.14 | 2.86 |
| SmoothQuant (diagonal) | 83.12 | 35.88 | 26.01 | 210.19 | 9.60 |
| QuaRot (fixed rotation) | 6.10 | 5.40 | 3.79 | 8.16 | 6.60 |
| SpinQuant (learned rotation) | 5.96 | 5.24 | 3.70 | 7.39 | 6.21 |
| FlatQuant (learned affine) | 5.78 | 5.11 | 3.54 | 6.90 | 3.77 |
| Bits | Method | L2-7B | L2-13B | L2-70B |
|---|---|---|---|---|
| 16 | FP16 (reference) | 5.47 | 4.88 | 3.32 |
| 4 | AWQ | 6.15 | 5.12 | – |
| OmniQuant | 5.74 | 5.02 | 3.47 | |
| QuIP# | 5.56 | 4.95 | 3.38 | |
| 3 | AWQ | 24.0 | 10.5 | – |
| OmniQuant | 6.58 | 5.58 | 3.92 |
| Format | Method | MMLU-CoT | GSM8K | HellaSw. | WinoG. | Avg. |
|---|---|---|---|---|---|---|
| BF16 | (reference) | 72.76 | 85.06 | 80.01 | 77.90 | 78.93 |
| NVFP4 | RTN | 68.26 | 78.39 | 78.15 | 74.11 | 74.73 |
| RTN block-H | 67.41 | 78.01 | 77.31 | 73.48 | 74.05 | |
| QuaRot (global) | 66.50 | 77.40 | 77.25 | 75.14 | 74.10 | |
| GPTQ | 68.85 | 81.25 | 78.26 | 74.51 | 75.72 | |
| MR-GPTQ | 69.12 | 80.80 | 78.17 | 75.24 | 75.84 |
| Method | KV4 | KV3 | KV2 |
|---|---|---|---|
| FP16 (reference) | 5.68 | ||
| INT (naive, per-token) | 5.98 | 10.87 | 11779 |
| Atom | 5.77 | 6.17 | 37.37 |
| FlexGen | 5.73 | 5.93 | 11.09 |
| KVQuant | 5.72 | 5.87 | 7.23 |
| KVQuant outliers | 5.69 | 5.75 | 6.01 |
| System | Regime | Reported gain (metric) | Baseline |
|---|---|---|---|
| QuaRot ( Ashkboos et al., 2024c ) | W4A4 | – prefill; memory † | FP16 |
| FlatQuant ( Sun et al., 2025 ) | W4A4 | up to prefill; decode ‡ | FP16 |
| QUIK ( Ashkboos et al., 2024b ) | W4A4 § | up to end-to-end | FP16 |
| Atom ( Zhao et al., 2024 ) | W4A4 | up to throughput (fixed latency) | FP16 |
| QServe ( Lin et al., 2025 ) | W4A8KV4 | – throughput | TensorRT-LLM |
| HadaCore ( Agarwal et al., 2024 ) | Hadamard kernel | – A100; – H100 ¶ | prior FWHT kernel |
| Scenario | First choice | Rationale / governing result |
|---|---|---|
| Weight-only W4A16 , INT | Per-channel scaling + error-feedback rounding; codebook (NF4) if a LUT kernel is available | Activations stay high-precision, so the weight distribution alone matters; AWQ’s scaling is reported orthogonal to GPTQ and composes with it ( Lin et al., 2024b ) ; NF4 matches the codebook to the Gaussianized weight distribution, while QuIP#’s lattice codebook adds the space-filling gain of Theorem 3.2 ( Section 7.3 ). A rotation typically helps little at 4-bit weight-only, though it becomes valuable at 2–3 bits ( Table 12 ). |
| W4A4 , INT | Randomized Hadamard rotation (fixed, i.e. data-free) learned rotation learned affine (FlatQuant); + GPTQ | The activation crest factor is the wall; incoherence is near-optimal at zero calibration ( Proposition 2.15 ), while a data-aware whitening is near-optimal for the integer grid within a factor, the transform block size, on Gaussian or Laplacian data (a factor for arbitrary distributions; WUSH, Theorem 4.9 ), worth adding where a fused kernel exists. This is the regime the rotations were built for ( Figure 6 ; six families, Table 10 ). |
| W4A4 , MXFP4 (power-of-two E8M0 block scale) | Block-sized (group-matched) Hadamard for the scale ; avoid a global rotation; add a WUSH-style data-aware block whitening where a fused kernel exists | The FP element grid already handles per-coordinate range, so a rotation buys less, and on an ideal grid it can cost by destroying a favorable weight–activation anti-alignment ( Section 8.2 ); the coarse power-of-two E8M0 block scale then re-imposes an -like penalty at the block maximum, so a rotation helps again provided its support stays near that block (MR-GPTQ, whose block is a tunable power of two, Table 13 ; Quartet fixes its block to the microscaling group at training time). The source reports a single static grid value sufficing once a block rotation is in place, so per-layer scale re-optimization is not the lever here. |
| W4A4 , NVFP4 (mantissa-carrying FP8 block scale) | Little or no plain rotation; a data-aware block whitening (WUSH) where a fused kernel exists; per-block scale fitting; consider a normalized architecture if training | The mantissa-carrying FP8 scale removes most of the block-level penalty ( Table 13 ); normalized architectures show the rotation can sometimes be dropped entirely ( Section 8 ). A data-aware whitening still leads: WUSH, exactly optimal for the floating-point AbsMax model ( Theorem 4.9 ), holds the best average on both FP4 formats in Table 13 , by points on MXFP4 and here, the source describing its NVFP4 gains as often within run-to-run variability. |
| KV-cache, low-bit | Per-channel keys / per-token values, pre-RoPE; at 2-bit either add a codebook with outlier retention or switch to a per-token rotation | Keys carry per-channel outliers and RoPE destroys the structure ( Section 9 ); axis choice suffices at 3–4 bit (KVQuant, Table 14 ). At 2-bit the two routes diverge: keep the per-channel axis and add a non-uniform codebook with outlier retention (KVQuant) or a residual window (KIVI), or go per-token under a pre-RoPE grouped-head Hadamard (RotateKV), whose rotation replaces the per-channel axis rather than composing with it. |
| Attention matmuls | Mean-subtraction smoothing of K; exploit softmax boundedness for P; two-level scale for P in FP4 | The probability matrix is bounded and needs a scale trick, not a transform; K has a shared-bias outlier (SageAttention, Section 9 ). |
Appendix figures & tables2 assets
Supplementary material from the paper’s appendix.
Appendix
| Symbol | Meaning |
|---|---|
| ambient dimension: the number of coordinates a transform acts on ( for a layer’s input and output). Wherever the WUSH guarantee is stated ( or factor- near-optimality, Theorem 4.9 ), is instead the transform’s block dimension, which Chen et al. (2026a) set equal to ; in the W A KV shorthand it is a bit-width | |
| a layer’s weight matrix | |
| the layer’s input activations ( tokens as rows) | |
| the normalized stream: the output of whichever RMSNorm opens the sub-block under discussion, that norm taking the layer input in attention and the post-attention residual in the MLP ( Section 2.1 ) | |
| the layer output the quantized layer must preserve | |
| a function-preserving transform; |
| Work | Section | Role |
|---|---|---|
| Classical transform coding and quantization ( Section 3 ) | ||
| Ahmed et al. (DCT) ( Ahmed et al., 1974 ) | 3 | The discrete cosine transform; the fixed, data-independent transform that approximates the KLT for correlated sources. |
| Ben-Basat et al. (RHT proven) ( Ben-Basat et al., 2026 ) | 2 | Composing two randomized Hadamards puts every marginal within of a Gaussian, and three makes the coordinate covariance decay, so Haar-designed codebooks transfer to Hadamards. |
| Bennett (1948) ( Bennett, 1948 ) | 2 | Bennett’s integral and the additive-white-noise high-resolution model behind the 6 dB/bit law. |
| Choi Hessian-weighted ( Choi et al., 2017 ) | 3 | Diagonal-Hessian-weighted Lloyd–Max quantization; the CNN-era sibling of GPTQ’s second-order objective, not its parent. |
| Conway–Sloane lattices ( Conway & Sloane, 1982a ) | 3 | Fast closest-point decoding algorithms for the classical lattices; this is what makes a high-dimensional codebook usable at all. |
LLM Quantization
Large language model quantization reduces numerical precision to lower memory use and accelerate training or inference.
See all 386 papers