What Quantization Methods Are Supported by LlamaFactory? A Complete Guide to 9 Techniques
LlamaFactory supports nine quantization methods including BNB (BitsAndBytes), GPTQ, AWQ, AQLM, EETQ, HQQ, MXFP4, FP8, and QUANTO, covering both runtime (on-the-fly) and post-training quantization scenarios.
LlamaFactory provides a unified quantization interface that handles both post-training quantization (PTQ) and runtime quantization through a centralized configuration system. All supported methods are defined in the QuantizationMethod enum and integrated into the model initialization logic, allowing users to compress models efficiently for inference and training.
Overview of LlamaFactory Quantization Methods
The supported quantization methods are declared in src/llamafactory/extras/constants.py (lines 135-147) within the QuantizationMethod enum. These methods fall into three distinct categories based on when and how quantization is applied.
On-the-Fly (Runtime) Quantization Methods
These techniques quantize models during loading without requiring pre-quantized checkpoints:
- BNB (BitsAndBytes) – Supports 4-bit and 8-bit quantization via the
bitsandbyteslibrary - EETQ – Provides efficient 8-bit quantization using
EetqConfig - HQQ – Enables flexible 1-8 bit quantization through the
hqqlibrary
Post-Training Quantization (PTQ) Methods
These methods require exporting models to quantized formats before deployment:
- GPTQ – Supports 2/3/4/8-bit export quantization via
optimum.gptq - AWQ – Activation-aware weight quantization requiring the
autoawqdependency - AQLM – Advanced quantization with default 2-bit precision
- MXFP4 – Mixed-precision FP4 quantization using
Mxfp4Config - FP8 – Fine-grained FP8 quantization via
FineGrainedFP8Config
Future and Experimental Support
- QUANTO – Reserved enum entry for upcoming
quantointegration (currently a placeholder without active pipeline wiring)
How Each Quantization Method Works in LlamaFactory
LlamaFactory implements method-specific configurations in src/llamafactory/model/model_utils/quantization.py. The configure_quantization() function (lines 82-95) orchestrates the initialization logic for each technique.
BNB (BitsAndBytes)
BNB provides dynamic 4-bit and 8-bit quantization during model loading. In quantization.py (lines 167-182), the system instantiates BitsAndBytesConfig when quantization_method is set to BNB.
# Example configuration triggering BNB 4-bit quantization
model_args = {
"quantization_bit": 4,
"quantization_method": "bnb"
}
GPTQ
GPTQ handles both export-time quantization and runtime inference for pre-quantized models. The implementation uses GPTQConfig (lines 332-360) when export_quantization_bit is specified or when loading GPTQ-formatted checkpoints.
# Export-time GPTQ configuration
model_args = {
"export_quantization_bit": 4,
"quantization_method": "gptq"
}
AWQ
AWQ support triggers the autoawq dependency when detected. In configure_quantization() (lines 122-124), the code checks for QuantizationMethod.AWQ and applies the appropriate configuration for activation-aware weight quantization.
AQLM
AQLM (Additive Quantization of Language Models) defaults to 2-bit precision. When quant_method == QuantizationMethod.AQLM (lines 125-128), the system explicitly sets bits = 2 for the AQLM quantizer configuration.
EETQ
EETQ provides efficient 8-bit quantization through EetqConfig (lines 207-217). This method is instantiated when the quantization_method enum resolves to EETQ.
HQQ
HQQ (Half-Quadratic Quantization) supports bit widths from 1 to 8 bits. The configuration is handled via HqqConfig (lines 195-207), offering granular control over quantization precision.
MXFP4 and FP8
These mixed-precision formats use dedicated configuration classes:
- MXFP4: Configured via
Mxfp4Config(lines 103-108) whenquant_method == QuantizationMethod.MXFP4 - FP8: Uses
FineGrainedFP8Config(lines 110-115) whenquant_method == QuantizationMethod.FP8
How LlamaFactory Selects and Applies Quantization
The quantization pipeline in configure_quantization() follows three distinct resolution paths:
-
Explicit PTQ Export – When
model_args.export_quantization_bitis set, LlamaFactory uses GPTQ viaoptimum.gptqto perform 2/3/4/8-bit export quantization. -
Pre-Quantized Checkpoints – If a loaded checkpoint contains a
quantization_config, the system inspects thequant_methodfield (supportingMXFP4,FP8,GPTQ,AWQ, orAQLM) and applies the corresponding configuration automatically. -
Runtime Quantization – When
model_args.quantization_bitis provided at runtime, the specifiedquantization_method(BNB,HQQ, orEETQ) determines which quantization library is instantiated.
Configuring Quantization in Practice
To apply quantization in LlamaFactory, specify the method and bit precision through model arguments or training configuration files.
# Runtime quantization with BNB 4-bit
from llamafactory.extras.constants import QuantizationMethod
model_args = {
"quantization_bit": 4,
"quantization_method": QuantizationMethod.BNB
}
# PTQ export with GPTQ
export_args = {
"export_quantization_bit": 4,
"quantization_method": QuantizationMethod.GPTQ
}
For pre-quantized model loading, LlamaFactory automatically detects the quantization method from the model's config.json and applies the appropriate handler in configure_quantization().
Summary
- LlamaFactory supports nine quantization methods: BNB, GPTQ, AWQ, AQLM, EETQ, HQQ, MXFP4, FP8, and QUANTO (placeholder)
- Runtime methods (BNB, EETQ, HQQ) quantize models on-the-fly during loading
- PTQ methods (GPTQ, AWQ, AQLM, MXFP4, FP8) require export or pre-quantized checkpoints
- Method selection logic is centralized in
configure_quantization()insrc/llamafactory/model/model_utils/quantization.py - The
QuantizationMethodenum insrc/llamafactory/extras/constants.py(lines 135-147) defines all supported techniques
Frequently Asked Questions
What is the difference between BNB and GPTQ in LlamaFactory?
BNB (BitsAndBytes) performs quantization at runtime when loading the model, requiring no pre-processing and supporting 4-bit and 8-bit formats. GPTQ is primarily used for post-training quantization exports (2/3/4/8-bit) or loading pre-quantized GPTQ models, offering higher compression ratios but requiring the optimum library and export time processing.
Can I use AWQ quantization for training in LlamaFactory?
AWQ in LlamaFactory is designed for inference and export scenarios using pre-quantized models or the autoawq library. While you can load AWQ-quantized models for fine-tuning with adapters, the quantization itself is applied post-training or via pre-quantized checkpoints, not during the training forward pass.
Which LlamaFactory quantization method offers the best memory efficiency?
AQLM provides the highest compression with 2-bit quantization by default (configurable in quantization.py lines 125-128), followed by HQQ which supports bit widths as low as 1-bit. For runtime quantization without pre-processing, BNB 4-bit (NF4) offers excellent memory reduction with minimal accuracy loss.
How do I check if my model is using the correct quantization method?
LlamaFactory validates quantization configuration in configure_quantization() (lines 82-95). Check the model's quantization_config in the generated config files, or inspect the logs during initialization where the library reports which QuantizationMethod enum value is active and the corresponding config class being instantiated (e.g., BitsAndBytesConfig, EetqConfig, or HqqConfig).
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →