在不牺牲准确率的情况下,实现更快速、更高效的大语言模型(LLM)推理服务!

摘要

我们很高兴地宣布,AutoRound —— 英特尔最先进的基于微调的训练后量化(PTQ)算法 —— 现已集成到 LLM Compressor 中。此次合作带来了:

  • 更出色的低比特量化准确率
  • 轻量化微调(仅需数百步,而非数千步)
  • 零额外推理开销
  • compressed-tensors 无缝兼容,并可在 vLLM 中直接部署
  • 简化的工作流:只需几行代码即可完成模型量化与服务部署

后续将支持更广泛的量化方案和模型覆盖 —— 立即尝试并协助我们共同完善产品。

什么是 AutoRound?

AutoRound 是一种专为大语言模型(LLM)和视觉语言模型(VLM)设计的先进训练后量化(PTQ)算法。它为每个量化张量引入了三个可训练参数:V(舍入偏移/调整)、αβ(学习剪切范围控制)。通过按顺序处理解码器层并应用符号梯度下降,AutoRound 共同优化舍入和剪切,以最小化块级输出重构误差。

核心优势:

  • 卓越的准确率,尤其在极低位宽下表现出色
  • 支持多种数据类型:W4A16, MXFP8, MXFP4, FP8, NVFP4,更多类型即将推出
  • 混合比特逐层精度搜索,实现灵活的准确率与效率权衡
  • 适用于 LLMVLM

AutoRound 支持多种低比特格式的量化模型,旨在加速 英特尔® 至强® 处理器英特尔® Gaudi® AI 加速器英特尔® 数据中心 GPU英特尔® Arc™ B 系列显卡 以及其他 GPU(如基于 CUDA 的设备)上的推理。

展望未来,英特尔正在为其代号为 Crescent Island 的下一代数据中心 GPU 添加对 FP8、MXFP8 和 MXFP4 格式的原生支持。使用 AutoRound 量化的模型将能够自然扩展,利用英特尔 AI 硬件产品组合中的这些数据类型。这为从算法创新到实际部署创造了一条一致的路径。

有关更多详细信息,请参阅论文 AutoRound (EMNLP 2024) 和 GitHub 仓库 intel/auto-round

为何集成到 LLM Compressor?

LLM Compressor 已经为量化和剪枝等压缩原语提供了一个统一的模块化系统。将 AutoRound 集成到该生态系统中:

  • 与现有的修改器架构(例如 GPTQModifier)保持一致
  • 复用顺序校准和层加载的基础架构
  • 支持未来与更丰富的多修改器方案(recipes)的互操作性
  • 生成可直接用于 vLLM 服务的量化模型,实现从压缩到部署的简洁工作流

集成概览

通过在 LLM Compressor 中引入新的 AutoRoundModifier,我们完成了第一阶段的集成。如 PR #1994 中实现的,现在可以生成 W{n}A16(如 W4A16)压缩模型,并可在 vLLM 中无缝加载。通过简单的配置 —— 只需指定模型和校准数据 —— 即可快速生成高质量的低比特权重。这一初始阶段支持对一系列稠密 LLM 进行量化,包括 LlamaQwen 模型系列,并展示了在实际部署中的强大兼容性。

立即尝试(快速入门)

1. 安装

git clone https://github.com/vllm-project/llm-compressor.git
cd llm-compressor
pip install -e .

2. 加载模型与分词器

from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL_ID = "Qwen/Qwen3-8B"
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)

3. 准备校准数据

from auto_round.calib_dataset import get_dataset
NUM_CALIBRATION_SAMPLES = 128
MAX_SEQUENCE_LENGTH = 2048
ds = get_dataset(tokenizer=tokenizer,
                 seqlen=MAX_SEQUENCE_LENGTH,
                 nsamples=NUM_CALIBRATION_SAMPLES)

4. 使用 AutoRound 运行量化

AutoRound 量化可以在包括 CPU 和 GPU 在内的多种设备上运行。量化和推理服务不一定非要在同一设备上进行。例如,您可以在带有 GPU 的工作站上进行量化,随后在 AI PC 上部署。

from llmcompressor import oneshot
from llmcompressor.modifiers.autoround import AutoRoundModifier

recipe = AutoRoundModifier(
    targets="Linear",
    scheme="W4A16",
    ignore=["lm_head"],
    iters=200,
)

oneshot(
    model=model,
    dataset=ds,
    recipe=recipe,
    max_seq_length=MAX_SEQUENCE_LENGTH,
    num_calibration_samples=NUM_CALIBRATION_SAMPLES,
    shuffle_calibration_samples=False,
)

SAVE_DIR = MODEL_ID.split("/")[-1] + "-W4A16-G128-AutoRound"
model.save_pretrained(SAVE_DIR, save_compressed=True)
tokenizer.save_pretrained(SAVE_DIR)

在实践中,128 个校准样本 + 约 200 次迭代 通常就能达到稳定收敛。如果您追求极低比特或更严格的准确率目标,可以增加样本量或迭代次数。

5. 在 vLLM 中部署服务

量化完成后,相同的压缩模型可以在不同的硬件上运行服务,不受微调时所用设备的限制。例如,您可以在单块 英特尔® Arc™ Pro B60 GPU 上部署量化后的 Qwen3‑8B‑W4A16‑G128‑AutoRound 模型。

vllm serve Qwen3-8B-W4A16-G128-AutoRound \
    --dtype=bfloat16 \
    --gpu-memory-utilization 0.8 \
    --max-num-batched-tokens 8192 

注意:请从 PR #29484 安装 vLLM。在 XPU 上运行时,必须使用 --enforce-eager 标志运行 vLLM。

6. 评估(示例:使用 lm_eval 进行 GSM8K 测试)

lm_eval --model vllm \
  --model_args pretrained="./Qwen3-8B-W4A16-G128-AutoRound,max_model_len=8192,max_num_batched_tokens=32768,max_num_seqs=128,gpu_memory_utilization=0.8,dtype=bfloat16,max_gen_toks=2048,enable_prefix_caching=False,enforce_eager=True" \
  --tasks gsm8k \
  --num_fewshot 5 \
  --limit 1000 \
  --batch_size 128

|Tasks|Version|     Filter     |n-shot|  Metric   |   |Value|   |Stderr|
|-----|------:|----------------|-----:|-----------|---|----:|---|-----:|
|gsm8k|      3|flexible-extract|     5|exact_match|↑  |0.911|±  | 0.009|
|     |       |strict-match    |     5|exact_match|↑  |0.911|±  | 0.009|

注意:结果可能会因非确定性而有所波动。

结论与未来计划

通过第一阶段的集成,AutoRound 和 LLM Compressor 已经为低比特 LLM 提供了一条实用的、面向生产的路径:W4A16 量化已实现端到端支持,工作流配置简单,且支持 Llama 和 Qwen 等稠密模型。该方案稳健、高效,已做好实际部署的准备。

展望未来,我们计划将支持扩展到更多方案,如 FP8、MXFP4、MXFP8 和 NVFP4,添加自动混合比特搜索以实现精细的逐层优化,并覆盖更多模型系列,包括混合专家模型(MoE)。我们还旨在深化与 LLM Compressor 中其他算法的互操作性,这将使 AutoRound 能够组合成更丰富的多修改器方案,服务于社区用例和英特尔生产负载。

如果您希望影响我们后续优先支持的格式、模型和工作流,请加入 RFC #1968 的讨论并分享您的基准测试或部署需求,或者向英特尔社区提供反馈,以便我们使路线图与实际需求保持一致。

致谢

我们要感谢 LLM Compressor 和 vLLM 社区。特别感谢 Kyle Sayers、Dipika Sikka、Brian Dellabetta、Charles Hernandez、Robert Shaw 和 Kunshang Ji,感谢他们对早期提案的宝贵反馈以及对拉取请求的认真评审。

llm-compressor#1968, llm-compressor#1994, llm-compressor#2055, llm-compressor#2062, auto-round#993, auto-round#1053, auto-round#1055, auto-round#1072, vllm#29484