Production ready LLM model compression/quantization toolkit with accelerated inference support for both cpu/gpu via HF, vLLM, and SGLang.
- 02/10/2025 1.8.5: β‘ Offload
tokenizerfixes to Toke(n)icer pkg. Optimizedlm_headquant time and vram usage. - Optimized
DeekSeek v3/R1model quant vram usage. FixedOptimumcompat regresion inv1.8.1. - 02/08/2025 1.8.1: β‘
DeekSeek v3/R1model support. New flexible weightpacking: allow quantized weights to be packed to[int32, int16, int8]dtypes.TritonandTorchkernels supports full range of newQuantizeConfig.pack_dtype. Newauto_gc: boolcontrol inquantize()which can reduce quantization time for small model with no chance of oom. NewGPTQModel.push_to_hub()api for easy quant model upload to HF repo. Newbuffered_fwd: boolcontrol inmodel.quantize(). Over 50% quantization speed-up for visual (vl) models.
Fixedbits=3packing andgroup_size=-1regression in v1.7.4. - 01/26/2025 1.7.4: New
compile()api for ~4-8% inference tps improvement. Fasterpack()for post-quantiztion model save.Tritonkernel validated for Intel/XPUwhen Intel Triton packages are installed. Fixed Transformers (bug) downcasting tokenizer class on save. - 01/20/2025 1.7.3: New Telechat2 (China Telecom) and PhiMoE model support. Fixed
lm_headweights duplicated in post-quantize save() for models with tied-embedding. - 01/19/2025 1.7.2: Effective BPW (bits per weight) will now be logged during
load(). Reduce loading time on Intel Arc A770/B580XPUby 3.3x. Reduce memory usage in MLX conversion and fix Marlin kernel auto-select not checking CUDA compute version. - 01/17/2025 1.7.0: π β¨
backend.MLXadded for runtime-conversion and execution of GPTQ models on Apple'sMLXframework on Apple Silicon (M1+). Exports ofgptqmodels tomlxalso now possible. We have addedmlxexported models to huggingface.co/ModelCloud. β¨lm_headquantization now fully support by GPTQModel without external pkg dependency. - 01/07/2025 1.6.1: π New OpenAI api compatible end-point via
model.serve(host, port). Auto-enable flash-attention2 for inference. Fixedsym=Falseloading regression. - 01/06/2025 1.6.0: β‘25% faster quantization. 35% reduction in vram usage vs v1.5. π AMD ROCm (6.2+) support added and validated for 7900XT+ GPU. Auto-tokenizer loader via
load()api. For most models you no longer need to manually init a tokenizer for both inference and quantization. - 01/01/2025 1.5.1: π 2025! Added
QuantizeConfig.deviceto clearly define which device is used for quantization: default =auto. Non-quantized models are always loaded on cpu by-default and each layer is moved toQuantizeConfig.deviceduring quantization to minimize vram usage. Compatibility fixes forattn_implementation_autosetin latest transformers.
Archived News
* 12/23/2024 [1.5.0](https://github.com/ModelCloud/GPTQModel/releases/tag/v1.5.0): Multi-modal (image-to-text) optimized quantization support has been added for Qwen 2-VL and Ovis 1.6-VL. Previous image-to-text model quantizations did not use image calibration data, resulting in less than optimal post-quantization results. Version 1.5.0 is the first release to provide a stable path for multi-modal quantization: only text layers are quantized. * 12/19/2024 [1.4.5](https://github.com/ModelCloud/GPTQModel/releases/tag/v1.4.5): Windows 11 support added/validated. Ovis VL model support with image dataset calibration. Fixed `dynamic` loading. Reduced quantization vram usage. * 12/15/2024 [1.4.2](https://github.com/ModelCloud/GPTQModel/releases/tag/v1.4.2): MacOS `gpu` (Metal) and `cpu` (M+) support added/validated for inference and quantization. Cohere 2 model support added. * 12/13/2024 [1.4.1](https://github.com/ModelCloud/GPTQModel/releases/tag/v1.4.1): Added Qwen2-VL model support. `mse` quantization control exposed in `QuantizeConfig`. Monkey patch `patch_vllm()` and `patch_hf()` api added to allow Transformers/Optimum/PEFT and vLLM to correctly loaded GPTQModel quantized models while upstream PRs are in pending status. * 12/10/2024 [1.4.0](https://github.com/ModelCloud/GPTQModel/releases/tag/v1.4.0) `EvalPlus` harness integration merged upstream. We now support both `lm-eval` and `EvalPlus`. Added pure torch `Torch` kernel. Refactored `Cuda` kernel to be `DynamicCuda` kernel. `Triton` kernel now auto-padded for max model support. `Dynamic` quantization now supports both positive `+:`:default, and `-:` negative matching which allows matched modules to be skipped entirely for quantization. Fixed auto-`Marlin` kerenl selection. Added auto-kernel fallback for unsupported kernel/module pairs. Lots of internal refractor and cleanup in-preparation for transformers/optimum/peft upstream PR merge. Deprecated the saving of `Marlin` weight format since `Marlin` supports auto conversion of `gptq` format to `Marlin` during runtime.-
11/29/2024 1.3.1 Olmo2 model support. Intel XPU acceleration via IPEX. Model sharding Transformer compat fix due to api deprecation in HF. Removed triton dependency. Triton kernel now optionally dependent on triton pkg.
-
11/26/2024 1.3.0 Zero-Day Hymba model support. Removed
tqdmandroguedependency. -
11/24/2024 1.2.3 HF GLM model support. ClearML logging integration. Use
device-smiand replacegputil+psutildepends. Fixed model unit tests. -
11/11/2024 π 1.2.1 Meta MobileLLM model support added.
lm-eval[gptqmodel]integration merged upstream. Intel/IPEX cpu inference merged replacing QBits (deprecated). Auto-fix/patch ChatGLM-3/GLM-4 compat with latest transformers. New.load()and.save()api. -
10/29/2024 π 1.1.0 IBM Granite model support. Full auto-buildless wheel install from pypi. Reduce max cpu memory usage by >20% during quantization. 100% CI model/feature coverage.
-
10/12/2024 β¨ 1.0.9 Move AutoRound to optional and fix pip install regression in v1.0.8.
-
10/11/2024 β¨ 1.0.8 Add wheel for python 3.12 and cuda 11.8.
-
10/08/2024 β¨ 1.0.7 Fixed marlin (faster) kernel was not auto-selected for some models.
-
09/26/2024 β¨ 1.0.6 Fixed quantized Llama 3.2 vision quantized loader.
-
09/26/2024 β¨ 1.0.5 Partial Llama 3.2 Vision model support (mllama): only text-layer quantization layers are supported for now.
-
09/26/2024 β¨ 1.0.4 Integrated Liger Kernel support for ~1/2 memory reduction on some models during quantization. Added control toggle disable parallel packing.
-
09/18/2024 β¨ 1.0.3 Added Microsoft GRIN-MoE and MiniCPM3 support.
-
08/16/2024 β¨ 1.0.2 Support Intel/AutoRound v0.3, pre-built whl packages, and PyPI release.
-
08/14/2024 β¨ 1.0.0 40% faster
packing, Fixed Python 3.9 compat, addedlm_evalapi. -
08/10/2024 π 0.9.11 Added LG EXAONE 3.0 model support. New
dynamicper layer/module flexible quantization where each layer/module may have different bits/params. Added proper sharding support tobackend.BITBLAS. Auto-heal quantization errors due to small damp values. -
07/31/2024 π 0.9.10 Ported vllm/nm
gptq_marlininference kernel with expanded bits (8bits), group_size (64,32), and desc_act support for all GPTQ models withFORMAT.GPTQ. Auto calculate auto-round nsamples/seglen parameters based on calibration dataset. Fixed save_quantized() called on pre-quantized models with non-supported backends. HF transformers depend updated to ensure Llama 3.1 fixes are correctly applied to both quant and inference. -
07/25/2024 π 0.9.9: Added Llama-3.1 support, Gemma2 27B quant inference support via vLLM, auto pad_token normalization, fixed auto-round quant compat for vLLM/SGLang, and more.
-
07/13/2024 π 0.9.8: Run quantized models directly using GPTQModel using fast
vLLMorSGLangbackend! Both vLLM and SGLang are optimized for dyanamic batching inference for maximumTPS(check usage under examples). Marlin backend also got full end-to-end in/out features padding to enhance current/future model compatibility. -
07/08/2024 π 0.9.7: InternLM 2.5 model support added.
-
07/08/2024 π 0.9.6: Intel/AutoRound QUANT_METHOD support added for a potentially higher quality quantization with
lm_headmodule quantization support for even more vram reduction: format export toFORMAT.GPTQfor max inference compatibility. -
07/05/2024 π 0.9.5: Cuda kernels have been fully deprecated in favor of Exllama(v1/v2)/Marlin/Triton.
-
07/03/2024 π 0.9.4: HF Transformers integration added and bug fixed Gemma 2 support.
-
07/02/2024 π 0.9.3: Added Gemma 2 support, faster PPL calculations on gpu, and more code/arg refractor.
-
06/30/2024 π 0.9.2: Added auto-padding of model in/out-features for exllama and exllama v2. Fixed quantization of OPT and DeepSeek V2-Lite models. Fixed inference for DeepSeek V2-Lite.
-
06/29/2024 π 0.9.1: With 3 new models (DeepSeek-V2, DeepSeek-V2-Lite, DBRX Converted), BITBLAS new format/kernel, proper batching of calibration dataset resulting > 50% quantization speedup, security hash check of loaded model weights, tons of refractor/usability improvements, bugs fixes and much more.
-
06/20/2924 β¨ 0.9.0: Thanks for all the work from ModelCloud team and the opensource ML community for their contributions!
GPTQModel originated as major refractor of AutoGPTQ but is now a full-stand-in replacement with cleaner api, up-to-date model support, faster inference, higher quality quants.
Public tests/papers and ModelCloud's internal tests have shown that GPTQ is on-par and/or exceeds other 4bit quantization methods in terms of both quality recovery and production-level inference speed for token latency and rps. GPTQ has the optimal blend of quality and inference speed you need in a real-world production deployment.
- β¨ Native integration with HF Transformers (main), Optimum (main), and Peft (main)
- π vLLM and SGLang inference integration for quantized model with format =
FORMAT.GPTQ - π Extensive model support for:
Ovis VL,Llama 1-3.3,Qwen2-VL,Olmo2,Hymba,GLM,IBM Granite,Llama 3.2 Vision,MiniCPM3,GRIN-Moe,Phi 1-4,EXAONE 3.0,InternLM 2.5,Gemma 2,DeepSeek-V2,DeepSeek-V2-Lite,ChatGLM,MiniCPM,Qwen2MoE,DBRX. - β¨ Linux, MacOS, Windows platform quantization and accelerated inference support for CUDA (Nvidia), XPU (Intel), ROCm (AMD), MPS (Apple Silicon), CPU (Intel/AMD/Apple Silicon).
- π― 100% CI unit-test coverage for all supported models and kernels including post-quantization quality regression.
- β¨
Dynamicmixed quantization control on a per-module basis. Each layer/module can have a unique quantization config or be excluded from quantization all together. - π Intel/IPEX hardware accelerated quantization/inference for CPU [
avx,amx,xmx] and Intel GPU [Arc+Datacenter Max]. - π Microsoft/BITBLAS format + dynamically compiled inference.
- β¨ Intel/AutoRound alternative gptq-inference compatible quantization method.
- β¨ Asymmetric
Sym=Falsesupport. Model weights sharding support with optional hash check of model weights on load. - β¨
lm_headmodule quant inference support for further VRAM reduction. - π 45% faster
packingstage in quantization (Llama 3.1 8B). 50% faster PPL calculations (OPT).
π€ ModelCloud quantized Vortex models on HF
| Model | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Baichuan | β | Falcon | β | Llama 1-3.3 | β | OLMo2 | β | Yi | β |
| Bloom | β | Gemma 2 | β | Llama 3.2 VL | β | Ovis 1.6 | β | XVERSE | β |
| ChatGLM | β | GPTBigCod | β | LongLLaMA | β | Phi 1-4 | β | ||
| CodeGen | β | GPTNeoX | β | MiniCPM3 | β | Qwen | β | ||
| Cohere 1-2 | β | GPT-2 | β | Mistral | β | Qwen2 MoE | β | ||
| DBRX Converted | β | GPT-J | β | Mixtral | β | Qwen2 VL | β | ||
| Deci | β | Granite | β | MobileLLM | β | RefinedWeb | β | ||
| DeepSeek-V2/V3/R1 | β | GRIN-MoE | β | MOSS | β | StableLM | β | ||
| DeepSeek-V2-Lite | β | Hymba | β | MPT | β | StarCoder2 | β | ||
| EXAONE 3.0 | β | InternLM 1/2.5 | β | OPT | β | TeleChat2 | β |
GPTQModel is validated for Linux, MacOS, and Windows 11:
| Platform | Device | Optimized Arch | Kernels | |
|---|---|---|---|---|
| π§ Linux | Nvidia GPU | β | Ampere+ |
Marlin, Exllama V2, Exallma V1, Triton, DyanamicCuda, Torch |
| π§ Linux | Intel XPU | β | Arc, Datacenter Max |
IPEX, Torch, Triton |
| π§ Linux | AMD GPU | β | 7900XT+, ROCm 6.2+ |
Exllama V2, Exallma V1, DyanamicCuda, Torch |
| π§ Linux | Intel/AMD CPU | β | avx, amx, xmx |
IPEX, Torch |
| π MacOS | GPU (Metal) / CPU | β | Apple Silicon, M1+ |
Torch, MLX via conversion |
| πͺ Windows | GPU (Nvidia) / CPU | β | Nvidia |
DynamicCuda, Torch |
# You can install optional modules like autoround, ipex, vllm, sglang, bitblas, and ipex.
# Example: pip install -v --no-build-isolation gptqmodel[vllm,sglang,bitblas,ipex,auto_round]
pip install -v gptqmodel --no-build-isolation
uv pip install -v gptqmodel --no-build-isolation# clone repo
git clone https://github.com/ModelCloud/GPTQModel.git && cd GPTQModel
# pip: compile and install
# You can install optional modules like autoround, ipex, vllm, sglang, bitblas, and ipex.
# Example: pip install -v --no-build-isolation .[vllm,sglang,bitblas,ipex,auto_round]
pip install -v . --no-build-isolationThree line api to use GPTQModel for gptq model inference:
from gptqmodel import GPTQModel
model = GPTQModel.load("ModelCloud/Llama-3.2-1B-Instruct-gptqmodel-4bit-vortex-v2.5")
result = model.generate("Uncovering deep insights begins with")[0] # tokens
print(model.tokenizer.decode(result)) # string output# load model using above inference guide first
model.serve(host="0.0.0.0",port="12345")Basic example of using GPTQModel to quantize a llm model:
from datasets import load_dataset
from gptqmodel import GPTQModel, QuantizeConfig
model_id = "meta-llama/Llama-3.2-1B-Instruct"
quant_path = "Llama-3.2-1B-Instruct-gptqmodel-4bit"
calibration_dataset = load_dataset(
"allenai/c4",
data_files="en/c4-train.00001-of-01024.json.gz",
split="train"
).select(range(1024))["text"]
quant_config = QuantizeConfig(bits=4, group_size=128)
model = GPTQModel.load(model_id, quant_config)
# increase `batch_size` to match gpu/vram specs to speed up quantization
model.quantize(calibration_dataset, batch_size=2)
model.save(quant_path)
# test post-quant inference
model = GPTQModel.load(quant_path)
result = model.generate("Uncovering deep insights begins with")[0] # tokens
print(model.tokenizer.decode(result)) # string outputFor more advanced features of model quantization, please reference to this script
Read the gptqmodel/models/llama.py code which explains in detail via comments how the model support is defined. Use it as guide to PR for to new models. Most models follow the same pattern.
GPTQModel inference is integrated into both lm-eval and evalplus
We highly recommend avoid using ppl and use lm-eval/evalplus to validate post-quantization model quality. ppl should only be used for regression tests and is not a good indicator of model output quality.
# gptqmodel is integrated into lm-eval >= v0.4.7
pip install lm-eval>=0.4.7
# gptqmodel is integrated into evalplus[main]
pip install -U "evalplus @ git+https://github.com/evalplus/evalplus"
Below is a basic sample using GPTQModel.eval API
from gptqmodel import GPTQModel
from gptqmodel.utils.eval import EVAL
model_id = "ModelCloud/Llama-3.2-1B-Instruct-gptqmodel-4bit-vortex-v1"
# Use `lm-eval` as framework to evaluate the model
lm_eval_results = GPTQModel.eval(model_id, framework=EVAL.LM_EVAL, tasks=[EVAL.LM_EVAL.ARC_CHALLENGE], output_file='lm-eval_result.json')
# Use `evalplus` as framework to evaluate the model
evalplus_results = GPTQModel.eval(model_id, framework=EVAL.EVALPLUS, tasks=[EVAL.EVALPLUS.HUMAN], output_file='evalplus_result.json')QuantizeConfig.dynamic is dynamic control which allows specific matching modules to be skipped for quantization (negative matching)
or have a unique [bits, group_size, sym, desc_act, mse, pack_dtype] property override per matching module vs base QuantizeConfig (postive match with override).
Sample QuantizerConfig.dynamic usage:
dynamic = {
# `.*\.` matches the layers_node prefix
# layer index start at 0
# positive match: layer 19, gate module
r"+:.*\.18\..*gate.*": {"bits": 8, "group_size": 64},
# positgive match: layer 20, gate module (prefix defaults to positive if missing)
r".*\.19\..*gate.*": {"bits": 8, "group_size": 64},
# negative match: skip layer 21, gate module
r"-:.*\.20\..*gate.*": {"bits": 8, "group_size": 64},
# negative match: skip all down modules for all layers
r"-:.*down.*": {},
} @misc{gptqmodel,
author = {ModelCloud.ai and [email protected]},
title = {GPTQModel},
year = {2025},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/modelcloud/gptqmodel}},
note = {Contact: [email protected]}
}
@article{frantar-gptq,
title={{GPTQ}: Accurate Post-training Compression for Generative Pretrained Transformers},
author={Elias Frantar and Saleh Ashkboos and Torsten Hoefler and Dan Alistarh},
year={2022},
journal={arXiv preprint arXiv:2210.17323}
}
@article{frantar2024marlin,
title={MARLIN: Mixed-Precision Auto-Regressive Parallel Inference on Large Language Models},
author={Frantar, Elias and Castro, Roberto L and Chen, Jiale and Hoefler, Torsten and Alistarh, Dan},
journal={arXiv preprint arXiv:2408.11743},
year={2024}
}
