GPTQ (one-shot approximate second-order PTQ)
Fields
quantization/gptqNotes
Weight-only, 16-bit compute. GPTQ's contribution is the rounding criterion (approximate inverse Hessian from calibration), not a new number format - a GPTQ file is INT4/INT3 with per-group scales, the same layout AWQ produces, which is why the two share every serving kernel. Group size 128 is the conventional default; 32/64/1024 are legal and change both quality and kernel eligibility, which is a frequent source of 'GPTQ is slow' reports. EXL2 is a GPTQ derivative with per-tensor variable bitrate and should be read alongside this record. exllamav2's own throughput table (3090 Ti / 4090) lists GPTQ at grpsz 128 at 181 and 205 tok/s for Llama-7B (quant-exl2-readme) - a third-party number for the runtime, not a quality delta. UPGRADE (2026-10-03): the bits field previously said only 'w4a16', which understated the method's range - the primary paper claims 3-bit, 2-bit and even TERNARY results, so GPTQ is not merely a 4-bit method. Also added: the reference implementation quantizes columns in order of decreasing activation size (--act-order), which is an activation-AWARE weight-ordering trick and the reason GPTQ can be called 'activation-aware' without quantizing activations. Confirmed from the repo README that the shipped CUDA kernel is a 3-bit MATRIX-VECTOR product kernel, which is the same low-batch caveat as the EXL2 note already here. The parent asked to record GPTQ's 3-bit results: they are now in quality_delta with the exact perplexity figures and the explicit caveat that group-128 is what makes 3-bit usable. Compare the aqlm and squeezellm records for the other way to reach sub-4-bit - changing the representation rather than the grid. NATIVE_SUPPORT CLASSIFIED 2026-10-04: this field is still [] and that is CORRECT, but the empty list used to be ambiguous between three different states and now is not. Reason class on this record: WEIGHT-ONLY, SO STRUCTURALLY ABSENT. The bits field keeps activations in FP16, so execution is dequantize-to-FP16 then an FP16 tensor-core GEMM; there is no INT4-x-INT4 (or sub-8-bit x sub-8-bit) silicon instruction for it to target. This is a statement about the arithmetic, not an absence of investigation. Consequence for a reader: nothing further to verify - no silicon path is possible for this format as defined. The full statement of the three-way distinction, and the worked list of all 72 empty records by class, is in gotcha quant-native-support-empty-means-three-different-things. Rule of thumb for this field everywhere in the repo: if the bits field carries an 'a16', or the scheme is KV-cache-only or a llama.cpp integer storage type, an empty native_support is a DEFINITION and needs no verification; only a W4A4/W8A8/sub-8-bit format with research kernels can have an empty list that is a real finding.