An empty quantization.native_support means three different things - no silicon path, no hardware format at all, or unchecked - and the field cannot tell them apart
Fields
gotchas/quant-native-support-empty-means-three-different-thingsNotes
Added by the native-support pass on 2026-10-04. Every claim in this gotcha was checked against the 72 records themselves rather than asserted: the three reason classes were assigned by reading each record's bits field, scheme and kernels field, and the resulting counts are: 27 weight-only-by-construction, 20 llama.cpp/GGUF integer storage types, 15 KV-cache-only-by-construction, 6 genuine W4A4/W8A8 research formats whose empty list is a real finding rather than a tautology, and 4 not-a-storage-format at all. That 6 is the number worth remembering, because it is the only class where the empty list is evidence rather than arithmetic: atom, llm-qat, qserve-w4a8kv4, quarot, quarx and spinquant. THE COUNTS ARE THE OUTPUT OF A RULE, NOT AN OPINION, and the rule is stated so a future pass can re-derive or disagree with them: a record is weight-only if its bits field keeps activations in FP16; KV-only if its bits field says no bits per value change; not-a-format if the record describes a kernel, proxy, calibration file or removed enum slot; a llama.cpp storage type if the id begins gguf-; and research-format otherwise. omniquant and optimum-quanto are counted as weight-only rather than as research formats because their own bits fields and READMEs make that the governing fact for them - OmniQuant is enumerated at W2A16/W3A16/W4A16/W4A4/W6A6/W8A8 but is conventionally reported at the weight-only g128 point, and quanto's own kernels cover int4/fp16 and int8/int8 by bitwidth. Reclassifying either is a judgement call and the notes on both records now state which side of the line they were put on and why. THREE of those eight have a nuance that a bare empty list hides. optimum-quanto DOES ship an accelerated int8-int8 matmul kernel per its own README - a real low-precision x low-precision path, not dequant-to-fp16 - so it sits on the w8a8 side of the same line that w4a16 formats sit on the wrong side of, and its empty native_support should be read as 'no VENDOR-GUARANTEED silicon path', not 'no accelerated kernel'. atom is W4A4 and says explicitly that it is faster than the INT8 baseline BECAUSE it uses 4-bit integer operators, i.e. its speedup is empirical rather than architectural. spinquant's W4A4 numbers come from research Triton kernels plus fake quantization, with the record stating outright that there is no hardware INT4 tensor-core path. Also worth recording because it is the template for a wrong empty list: nvfp4, mxfp4 and mxfp8 in this repo all carry populated native_support lists (Blackwell only), and a reader who assumed all 4-bit formats look like AWQ's empty list would conclude NVFP4 is unsupported anywhere. It is the opposite.
Cross-references
Affects (14)
- Quantization formatsAWQ (activation-aware weight quantization)
- Quantization formatsGPTQ (one-shot approximate second-order PTQ)
- Quantization formatsEXL2 (GPTQ with mixed per-tensor bitrate)draft
- Quantization formatsbitsandbytes NF4 (4-bit NormalFloat)
- Quantization formatsH2O (heavy-hitter KV eviction) - NOT KV quantization
- Quantization formatsKIVI (2-bit key / 4-bit value KV cache, per-channel keys, per-token values)
- Quantization formatsGGUF Q8_0 (legacy block-8 symmetric)
- Quantization formatsGGUF Q4_0 (legacy block-4 symmetric)
- Quantization formatsQuaRot (rotation-based outlier removal, W4A4KV4)contested
- Quantization formatsSpinQuant (learned rotations + W4A4KV4)
- Quantization formatsMarlin INT4 weight-only kernel (FP16xINT4 mixed-precision GEMM)
- Quantization formatsQuARX (GPU-efficient 4-bit-weight / 8-bit-activation quantization) - UNVERIFIED PLACEHOLDERdraft
- Quantization formatsGGUF imatrix (importance matrix) - the calibration file that determines WHICH weights get more bits
- Quantization formatsMicrosoft Olive (Onnx LIVE) - hardware-targeted ONNX optimization / quantization composer