“Quantized via Hugging Face” is not a single thing Hugging Face quantization is shorthand for a small ecosystem of tools — bitsandbytes, AutoGPTQ, AutoAWQ, the transformers library’s built-in quantization integration, GGUF artifacts produced for llama.cpp-style runtimes — that each implement different quantization schemes. Two models published as “INT4 quantized via Hugging Face” can have substantially different accuracy and throughput profiles depending on which tool produced them. A benchmark that quotes the precision but omits the tool chain is under-specifying its result, and the gap is not minor. This matters specifically for benchmark interpretation: the same nominal precision, applied through different tools, produces different actual numerical behavior because the schemes differ in bit width, calibration procedure, scale-factor granularity, and runtime kernel implementation. Across the engagements we audit, the most common cause of irreproducible quantized-model results is not bad math — it is incomplete disclosure of which tool produced the weights and how it was calibrated. This is an observed pattern across the deployments we see, not a benchmarked rate. What do the major Hugging Face quantization tools actually produce? The Hugging Face ecosystem exposes four broad families of quantization tooling, and each family makes a different set of design choices about what to preserve and what to approximate. bitsandbytes focuses on weight-only quantization with on-the-fly dequantization in the matrix multiplication path. Its INT8 path uses LLM.int8() — a mixed-precision scheme that keeps a small fraction of outlier columns in higher precision and quantizes the rest. Its 4-bit path (NF4 / FP4) uses block-wise quantization with small block sizes. The runtime cost of dequantization is paid per matrix multiplication, which makes the throughput profile sensitive to batch size — again an observed pattern across what we audit, not a benchmarked rate. AutoGPTQ implements the GPTQ scheme: post-training quantization of weights with per-column error compensation using a calibration set. The output is a quantized model whose weights are stored in a packed low-precision format and processed through GPTQ-aware kernels. Calibration data shape and size affect the resulting model substantially — different calibration corpora produce different quantized weights, which is one of the more direct illustrations of why calibration is not a peripheral knob. AutoAWQ implements activation-aware weight quantization (AWQ): identification of salient weight channels based on activation magnitudes from a calibration pass, then per-group quantization with the salient channels protected. Its design assumption is that a small fraction of weights are responsible for most of the model’s output behavior, and protecting those weights at higher effective precision preserves accuracy more efficiently than uniform quantization. GGUF is a serialization format used primarily by llama.cpp-derived runtimes. GGUF supports a family of quantization schemes (Q4_K, Q5_K, Q6_K, Q8_0, and others) that vary in bit width, block structure, and quantization granularity. A “GGUF quantized” model is therefore parameterized further by which GGUF scheme it uses — the format alone does not specify the numerical behavior. Some schemes additionally consume an importance matrix derived from a calibration pass. These tools are not interchangeable. Their schemes differ in what they preserve, how they calibrate, and what runtime kernels they require. That divergence is the reason we treat the tool chain as part of the system under test, not a packaging detail. Comparing what each Hugging Face quantization tool produces Tool Quantization approach Bit widths Calibration Runtime characteristics bitsandbytes Mixed-precision INT8 (LLM.int8) or block-wise NF4/FP4 8-bit, 4-bit Outlier detection in INT8; block-wise statistics in 4-bit Dequantization in matmul path; throughput sensitive to batch size AutoGPTQ Post-training weight quantization with per-column error compensation 2- to 8-bit Required; calibration set affects resulting weights Custom GPTQ-aware kernels; weight-only quantization AutoAWQ Activation-aware weight quantization with salient-channel protection 4-bit (typical) Required; activation magnitudes drive salient-channel selection AWQ-aware kernels; weight-only quantization GGUF Family of block-wise quantization schemes 2- to 8-bit (Q2_K through Q8_0) Per-block statistics; some schemes use importance matrices llama.cpp-style runtimes; CPU and GPU kernels both common Two “INT4 quantized via Hugging Face” reports that come from different rows of this table are reporting on different artifacts, even if the bit width matches. Treating them as comparable is a category error, not a rounding error. Why benchmark disclosure has to name the tool chain A benchmark of a quantized Hugging Face model under-specifies the system under test unless it names which tool produced the quantized weights, which scheme parameters were used, and which calibration data drove the calibration step. Without those, the throughput numbers reported for “a quantized model X” cannot be reproduced, and the accuracy numbers reported beside them cannot be compared across reports — because the same nominal precision can correspond to different actual numerical behavior depending on which tool produced the model. This is not a peripheral disclosure issue. The choice of quantization tool changes the runtime kernel that gets invoked, which changes the throughput measurement. It changes the calibration procedure, which changes the accuracy measurement. And it changes the bit-packing layout, which changes the memory footprint measurement. All three of the headline numbers a benchmark typically reports — throughput, accuracy, footprint — depend on the tool choice. Bounded optimization in benchmarking — the principle that benchmark results are only comparable when the optimization effort applied to the system under test is named and bounded — therefore extends to the quantization tool chain. A benchmark that bounds optimization to “Hugging Face INT4” without naming the tool is bounding optimization to a region that contains substantially different artifacts. We see this regularly when auditing vendor decks where the headline number is defensible only because the tool chain has been left implicit. What a deployment-grade Hugging Face quantization benchmark must report For a quantized-model benchmark to support a deployment decision rather than just a relative score, the disclosure has to cover the dimensions that actually determine the result: The specific tool used (bitsandbytes / AutoGPTQ / AutoAWQ / GGUF or other) The scheme parameters (group size, block size, bit width, scaling type) The calibration data set and size The runtime kernel and runtime version (e.g. the CUDA, cuDNN, or TensorRT path; the llama.cpp build; or the relevant PyTorch / transformers integration) The hardware on which the throughput was measured, including PCIe topology and HBM configuration where it bears on the result The accuracy evaluation set, including whether it includes long-form outputs A report missing any of these dimensions is informative about what was measured under unstated conditions, and uninformative about whether a re-run on a different but nominally equivalent setup would produce comparable results. The same discipline applies to how throughput itself is reported — we’ve written elsewhere about why sustained throughput rather than peak burst is the deployment-relevant figure, and the quantization tool chain belongs in the same layer of specification. How calibration changes the artifact in practice It’s worth pausing on calibration because it tends to be treated as a runtime convenience when it is actually a constitutive part of the quantized model. For GPTQ, the per-column error compensation is computed against the calibration set; the resulting scale factors and rounding choices are baked into the weights that ship. For AWQ, the salient-channel selection — which weights get protected at higher effective precision — is derived from activation magnitudes observed on calibration inputs. For GGUF schemes that use an importance matrix, the matrix itself is a calibration product. That means two teams using the same tool, the same bit width, and the same base model can produce quantized artifacts that disagree on which weights are important and how scales are distributed. The divergence is largest when the calibration corpus is small or domain-mismatched. In our experience this is where the “the INT4 version regressed on our task” reports usually originate — the calibration set used by whoever published the quantized weights did not cover the deployment distribution, and the protection scheme picked the wrong channels to defend. We pay close attention to this because the calibration corpus is often the single least-documented part of a published quantized model card. Bit width is listed; tool is sometimes listed; calibration is usually a footnote, when it is mentioned at all. The framing that actually helps Hugging Face quantization is best understood as a parameterized family of quantization tooling, not as a single “Hugging Face quantizes the model” operation. The general principle that quantization is controlled approximation rather than damage holds across the family, but the specific approximation each tool produces differs — and benchmark interpretation has to follow the tool, not the brand. The bound on error is set by the scheme — bit width, block structure, calibration, protection of salient channels — not by the bit width name alone. LynxBench AI treats the quantization tool chain as part of the executor specification — alongside the hardware, runtime, and framework — because the per-precision performance and accuracy a benchmark reports are properties of the full stack, and the quantization tool is not a detachable layer on top of a hardware result. For the Hugging Face quantization result you are about to cite, does the report disclose the full tool-chain — scheme, calibration corpus, runtime kernel — that bounds achievable quality at this precision, or is the bit-width label carrying the headline while the parameters that determine the per-stratum error stay in a footnote?