llm-compressor

vllm-projectApache-2.0活跃维护

面向 vLLM 生产推理的 LLM 压缩工具,支持量化等压缩算法,把大模型压小以便高效部署。

State-of-the-art LLM compression, built for production inference with vLLM

0.10.0.5发布于 2026-11-09 16:02 UTC3,962star +10 / 7 天731fork同步于 2026-11-10 17:40 UTC

怎么上手

由 README 提炼,执行前请确认
pip install llmcompressor
硬件要求按 README 说明

README 未说明具体显存或 CPU 要求;仅提到部分量化检查点针对 Hopper GPU 优化,GPTQ Triton 内核支持 Intel XPU。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

为 vLLM 生产推理优化模型的量化压缩库,支持权重、激活、KV 缓存与注意力量化

面向 vLLM 生产推理的 LLM 压缩工具,支持量化等压缩算法,把大模型压小以便高效部署。

核心能力

  • 提供权重、激活、KV 缓存和注意力量化算法与变换
  • 与 Hugging Face 模型和仓库无缝集成
  • 输出 compressed-tensors 格式,可直接被 vLLM 加载
  • 支持 DDP 与磁盘卸载压缩超大模型
  • 含 HIGGS 混合精度、QAD 蒸馏、REAP/MoNe 专家剪枝等新特性

容易踩的坑

推理需另装 vllm(pip install vllm);部分量化格式(如 NVFP4、MXFP4xFP8)需特定 GPU 与 vLLM 版本支持;大模型压缩需按示例配置 sequential onloading 或磁盘卸载,否则显存不足。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本0.10.0.5
  1. 0.10.0.5v0.10.0.5最新正式版2026-11-09 · 2026-11-09 16:02 UTC

    What's Changed

    Full Changelog: https://github.com/vllm-project/llm-compressor/compare/0.10.0.4...0.10.0.5

  2. 0.15.0v0.15.02026-10-29 · 2026-10-29 17:18 UTC
    查看更新说明

    LLM-Compressor v0.15.0

    This release adds HIGGS mixed-precision quantization, MoNe expert pruning, block-wise Quantization-Aware Distillation (QAD), layerwise compression with a rewritten offloading path, checkpoint-space REAP workflows, faster observers, and MXFP6 support.

    It also includes bug fixes, expanded model support, performance improvements, and dependency updates.

    Key Highlights ✨

    • HIGGS autoquantization (#3028): get_higgs_config selects optimal quantization schemes for each layer to maximize estimated accuracy under a target average bitwidth.
    • Block-wise QAD (#3029): QADModifier distills against cached, unquantized subgraph outputs without requiring a teacher model.
    • Layerwise compression and offloading (#3162, #3221, #3228): Converts large checkpoints one subgraph at a time using CPU/pinned-memory staging and background prefetching.
    • REAP and MoNe (#3281, #3343): Enables direct checkpoint pruning using per-expert saliency reports. MoNe collapses low-saliency experts into "novice" vectors for higher throughput.
    • Faster observers (#3348, #3233): Exponential E8M0 grids make MXFP4 MSE observation approximately 6× faster. A shared MSE/iMatrix Triton kernel delivers 1.2–3.4× NVFP4A16 speedups.
    • Model-free PTQ and MXFP6 (#3262, #3250, #3286): Adds offline SpinQuant R1/R2 rotations, converter chains, max_workers="auto", and MXFP6A16/A8 support.
    • Expanded model and hardware coverage: Adds a GPTQ Triton kernel for Intel XPU (#3339) and Transformers MtpModel loading for MTP layers (#3225).

    HIGGS Mixed-Precision Quantization

    HIGGS introduces automatic mixed-precision quantization configuration.

    • Uses HiggsMSECollectorConverter to collect per-layer MSE.
    • Calculates heuristic sensitivity and solves an integer linear program (ILP) to meet the target bitwidth.
    • Collection is model-free, does not write a checkpoint, and takes under 10 seconds for Llama-3.1-8B-Instruct.
    • Composes with both the oneshot and ModelFreePtq entry points.
    • Based on the HIGGS paper.

    At a 6.0-bit target, the following WikiText perplexity results were achieved:

    ConfigurationWikiText perplexity
    HIGGS + QuantizationModifier11.05
    HIGGS + GPTQ10.99

    Quantization-Aware Distillation (QAD)

    QADModifier enables block-wise distillation after QuantizationModifier or GPTQModifier.

    • AWQ integration: The supported composition order is AWQ → Quantization → QAD.
    • Shared calibration: Reuses one calibration dataset with the preceding modifier.
    • Memory efficiency: Caches inputs and teacher outputs with CPU/disk offloading and prefetching.
    • Joint training: Supports training N targets per subgraph.
    • Loss and optimization: Supports FP32 MSE loss, AdamW with FP32 master weights, dynamic loss scaling, gradient accumulation, and gradient clipping.
    • Validation: Uses a deterministic 10% validation hold-out.
    • Weight observation: Re-observes weights before training, at each epoch, and before finalization.
    • Fixed quantization parameters: Setting reobserve_weights=False keeps the preceding quantization parameters fixed.

    Requirements:

    • A sequential pipeline.
    • A preceding weight-quantization modifier.
    • Single-process calibration.

    REAP and MoNe Expert Pruning

    REAP

    • report_path stores per-expert router weights, routed-token counts, and saliency in JSON format.
    • Setting sparsity=0.0 enables report-only operation.
    • ExpertPruner prunes checkpoints directly from safetensors.
    • Supports uniform per-layer and non-uniform cross-layer sparsity while respecting the num_experts_per_tok floor.
    • Supports 2D and 3D expert layouts, per-expert router vectors, a
  3. 0.12.0.3v0.12.0.32026-10-29 · 2026-10-29 16:53 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/vllm-project/llm-compressor/compare/0.12.0.2...0.12.0.3

  4. 0.7.1.5v0.7.1.52026-10-27 · 2026-10-27 23:43 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/vllm-project/llm-compressor/compare/0.7.1.4...0.7.1.5

  5. 0.14.0.1v0.14.0.12026-10-22 · 2026-10-22 20:50 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/vllm-project/llm-compressor/compare/0.14.0...0.14.0.1

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    docs PyPI slack huggingface

    llmcompressor is the fast, efficient, and 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 with hardware efficiency

    ✨ Read the announcement blog here! ✨


    💬 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.

    Since the v0.14.0 release, a number of meaningful improvements have landed:

    • HIGGS mixed-precision quantization: HIGGS collects layer-wise MSE sensitivity data and formulates an integer linear program to select an optimal mixed-precision configuration for a target average bitwidth. The resulting config can be passed to oneshot or model_free_ptq.
    • Block-wise QAD: A new QADModifier runs quantization-aware distillation after a weight-quantization modifier in the same recipe. It caches calibration inputs and the unquantized subgraph output as the teacher, then trains the quantized weights through compressed-tensors fake quantization, without loading a separate teacher model.
    • Layerwise compression and sequential offloading: The sequential pipeline can now decompress and compress one layer at a time, avoiding upfront whole-model conversion for large checkpoints. Onload/offload is managed manually with optional CPU staging and pinned memory.
    • REAP reports and non-uniform pruning: REAP now writes per-expert saliency reports, supports calibration-only report generation with sparsity=0.0, and accepts per-layer non-uniform expert sparsity. n_routed_experts is now recorded in config names, and GPT-OSS is skipped.
    • MoNe expert pruning: MoNe collapses low-saliency experts into constant "novice" vectors instead of removing them, keeping the router at full width while reducing expert compute.
    • Faster observers for E8M0 formats: The MSE and iMatrix observers gained exponential grid search and magnitude normalization for E8M0 scales, and the iMatrix observer now shares the MSE Triton kernel, with roughly 1.2-3.4x end-to-end speedups on tested models.
    • MFPTQ SpinQuant rotations: SpinQuantConverter applies offline R1/R2 Hadamard rotations directly to safetensors before model-free quantization, and model_free_ptq now accepts converter chains.
    • MXFP6 and MXFP4xFP8 support: Added MXFP6A8/MXFP6A16 schemes and examples, plus an MXFP4xFP8 example and refreshed quantization documentation.
    • Broader hardware and model support: The fused GPTQ Triton kernel now runs on Intel XPU, MTP layers load through Transformers MtpModel, and new checkpoints and examples include Nemotron 3.5 Super VL FP8, Zyphra Zaya1, Muse Spark, and Qwen3.6 MXFP4xFP8.
    • Docs and community: Added the Open Research Hub for community experiment results and a full Simplified Chinese README translation.

    Model highlights

    The Red Hat AI team has been using LLM Compressor to produce a fresh batch of production-ready quantized checkpoints:

    Supported Precisions and Types

    • Activation Quantization: W8A8 (int8 and fp8), W4AFP8, Microscale (NVFP4, MXFP4, MXFP6A8, MXFP8)
    • Mixed Precision: W4A16, W8A16, MXFP8A16, MXFP6A16, MXFP4A16, NVFP4A16
    • Attention and KV Cache Quantization: FP8, NVFP4
    • Low/Arbitrary-bit Quantization: WNA4, WNA8, WNA16

    Supported Algorithms

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

    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 and FAQ.

    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)
    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.
    • Browse community experiments and share your compression results in the Open Research Hub. All results are welcome.

    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},
    }