Skip to main content

A library for compressing large language models utilizing the latest techniques and research in the field for both training aware and post training techniques. The library is designed to be flexible and easy to use on top of PyTorch and HuggingFace Transformers, allowing for quick experimentation.

Project description

tool icon LLM Compressor

docs PyPI

llmcompressor is an easy-to-use library for optimizing models for deployment with vLLM, including:

  • Comprehensive set of quantization algorithms and transforms for weight, activation, KV Cache, and attention quantization
  • Seamless integration with Hugging Face models and repositories
  • Models saved in the compressed-tensors format, compatible with vLLM
  • DDP and disk offloading support for compressing very large models

✨ Read the announcement blog here! ✨

LLM Compressor Flow


📊 Help us improve by taking our 1-minute user survey

💬 Join us on the vLLM Community Slack and share your questions, thoughts, or ideas in:

  • #sig-quantization
  • #llm-compressor

🚀 What's New!

Big updates have landed in LLM Compressor! To get a more in-depth look, check out the LLM Compressor overview.

Some of the exciting new features include:

  • DeepSeek-V4-Flash and Kimi-K2.6 Quantized Checkpoints: Quantized checkpoints for DeepSeek-V4-Flash and Kimi-K2.6 have been generated by the RedHat team and posted to the HF hub. Consider using:
    • DeepSeek-V4-Flash-NVFP4-FP8 — 163B DeepSeek-V4-Flash quantized to NVFP4 weights with FP8 KV cache
    • Kimi-K2.6-NVFP4 — Kimi-K2.6 quantized to NVFP4 (weights and activations), targeting NVIDIA Blackwell GPUs
    • Kimi-K2.6-FP8-BLOCK — 1T parameter Kimi-K2.6 quantized to FP8 block format (weights and activations), compatible with DeepGEMM FP8 kernels
  • Qwen3.6 NVFP4 Generated Checkpoint: An NVFP4 quantized checkpoint has been generated by the RedHat team and posted to the HF hub. Qwen3.6 follows the same architecture as Qwen3.5, so existing LLM Compressor examples can be used for this model by swapping out the target model string.
  • Gemma4 Support: Gemma 4 can now be quantized using LLM Compressor. Support is available through main and will require updating to transformers 5.5 (uv pip install transformers>=5.5). For models quantized and published by the RedHat team, consider using:
  • Qwen3.5 Support: Qwen 3.5 can now be quantized using LLM Compressor. You will need to update your local transformers version using uv pip install --upgrade transformers and install LLM Compressor from source if using <0.11. Once updated, you should be able to run examples for the MoE and non-MoE variants of Qwen 3.5 end-to-end. For models quantized and published by the RedHat team, consider using the NVFP4 and FP8 checkpoints for Qwen3.5-122B and Qwen3.5-397B.
  • Updated offloading and model loading support: Loading transformers models that are offloaded to disk and/or offloaded across distributed process ranks is now supported. Disk offloading allows users to load and compress very large models which normally would not fit in CPU memory. Offloading functionality is no longer supported through accelerate but through model loading utilities added to compressed-tensors. For a full summary of updated loading and offloading functionality, for both single-process and distributed flows, see the Big Models and Distributed Support guide.
  • Distributed GPTQ Support: GPTQ now supports Distributed Data Parallel (DDP) functionality to significantly improve calibration runtime. An example using DDP with GPTQ can be found here.
  • Updated FP4 Microscale Support: GPTQ now supports FP4 quantization schemes, including both MXFP4 and NVFP4. MXFP4 support has also been improved with updated weight scale generation. Models with weight-only quantization in the MXFP4 format can now run in vLLM as of vLLM v0.14.0. MXFP4 models with activation quantization are not yet supported in vLLM for compressed-tensors models
  • New Model-Free PTQ Pathway: A new model-free PTQ pathway has been added to LLM Compressor, called model_free_ptq. This pathway allows you to quantize your model without the requirement of Hugging Face model definition and is especially useful in cases where oneshot may fail. This pathway is currently supported for data-free pathways only i.e FP8 quantization and was leveraged to quantize the Mistral Large 3 model. Additional examples have been added illustrating how LLM Compressor can be used for Kimi K2
  • MXFP8 Microscale Support: LLM Compressor now supports MXFP8 quantization via PTQ. Both W8A8 (MXFP8) and W8A16 weight-only (MXFP8A16) modes are available.
  • Extended KV Cache and Attention Quantization Support: LLM Compressor now supports attention quantization, as well as fine-grained KV Cache quantization. Previously only per-tensor KV cache quantization was supported. Now, you can quantize KV cache with per-head scales and run with vLLM. Examples of more generalized attention and kv cache quantization can be found in the experimental folder.

Supported Precisions and Types

  • Activation Quantization: W8A8 (int8 and fp8), W4AFP8, Microscale (NVFP4, MXFP4, MXFP8)
  • Mixed Precision: W4A16, W8A16, MXFP8A16, MXFP4A16, NVFP4A16
  • Attention and KV Cache Quantization: FP8, NVFP4

Supported Algorithms

  • Simple PTQ
  • GPTQ
  • AWQ
  • SmoothQuant
  • AutoRound
  • Rotation-based (SpinQuant, QuIP)

Quantizing your model, step-by-step

Please refer to our step-by-step compression guide for detailed information about selecting quantization schemes, algorithms, and their use cases.

Additional information about LLM Compressor functionality is also available in our User Guides

Installation

pip install llmcompressor

Get Started

End-to-End Examples

Applying quantization with llmcompressor:

Weight and Activation Quantization

Weight Only Quantization

Attention and KV Cache Quantization

Architecture-Specific Quantization

Non-Uniform Quantization

Big Model Quantization Support

Model-Free Definition Quantization

DDP Quantization

Quick Tour

Let's quantize Qwen3-30B-A3B with FP8 weights and activations using the Round-to-Nearest algorithm.

Note that the model can be swapped for a local or remote HF-compatible checkpoint and the recipe may be changed to target different quantization algorithms or formats.

Apply Quantization

Quantization is applied by selecting an algorithm and calling the oneshot API.

from compressed_tensors.offload import dispatch_model
from transformers import AutoModelForCausalLM, AutoTokenizer

from llmcompressor import oneshot
from llmcompressor.modifiers.quantization import QuantizationModifier

MODEL_ID = "Qwen/Qwen3-30B-A3B"

# Load model.
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, dtype="auto")
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)

# Configure the quantization algorithm and scheme.
# In this case, we:
#   * quantize the weights to FP8 using RTN with block_size 128
#   * quantize the activations dynamically to FP8 during inference
recipe = QuantizationModifier(
    targets="Linear",
    scheme="FP8_BLOCK",
    ignore=["lm_head", "re:.*mlp.gate$"],
)

# Apply quantization.
oneshot(model=model, recipe=recipe)

# Confirm generations of the quantized model look sane.
print("========== SAMPLE GENERATION ==============")
dispatch_model(model)
input_ids = tokenizer("Hello my name is", return_tensors="pt").input_ids.to(
    model.device
)
output = model.generate(input_ids, max_new_tokens=20)
print(tokenizer.decode(output[0]))
print("==========================================")

# Save to disk in compressed-tensors format.
SAVE_DIR = MODEL_ID.split("/")[1] + "-FP8-BLOCK"
model.save_pretrained(SAVE_DIR)
tokenizer.save_pretrained(SAVE_DIR)

Inference with vLLM

The checkpoints created by llmcompressor can be loaded and run in vllm:

Install:

pip install vllm

Run:

from vllm import LLM
model = LLM("Qwen/Qwen3-30B-A3B-FP8-BLOCK")
output = model.generate("My name is")

Questions / Contribution

  • If you have any questions or requests open an issue and we will add an example or documentation.
  • We appreciate contributions to the code, examples, integrations, and documentation as well as bug reports and feature requests! Learn how here.

Citation

If you find LLM Compressor useful in your research or projects, please consider citing it:

@software{llmcompressor2024,
    title={{LLM Compressor}},
    author={Red Hat AI and vLLM Project},
    year={2024},
    month={8},
    url={https://github.com/vllm-project/llm-compressor},
}

!!! warning Sparse compression (24 sparsity) is no longer supported by LLM Compressor due to lack of hardware support and usage

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llmcompressor-0.11.0.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llmcompressor-0.11.0-py3-none-any.whl (311.4 kB view details)

Uploaded Python 3

File details

Details for the file llmcompressor-0.11.0.tar.gz.

File metadata

  • Download URL: llmcompressor-0.11.0.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for llmcompressor-0.11.0.tar.gz
Algorithm Hash digest
SHA256 be6f812290104a1d4c1a1c57702355da6967b4f53408a98a342b87e87e8d5de7
MD5 8b6a9fd2bab3353bc90be3018e11472b
BLAKE2b-256 6d08275d6cff47047f9011e7a4f4dcf0396626d7eb91fcd55896b53798e9f259

See more details on using hashes here.

Provenance

The following attestation bundles were made for llmcompressor-0.11.0.tar.gz:

Publisher: upload.yml on neuralmagic/llm-compressor-testing

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llmcompressor-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: llmcompressor-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 311.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for llmcompressor-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fad03b03a43fb29f0017999ac835c5cfac6a0af6fb45506bf60ba874cfca0ec5
MD5 9e1a357f90579a6b5edd7bff2bb30021
BLAKE2b-256 44515c607a07fac829a1f52f93e87ccca30a58fdeb25d58a351b568619be325b

See more details on using hashes here.

Provenance

The following attestation bundles were made for llmcompressor-0.11.0-py3-none-any.whl:

Publisher: upload.yml on neuralmagic/llm-compressor-testing

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page