推进大模型低比特量化:AutoRound x LLM Compressor
在不牺牲精度的前提下,实现更快、更高效的大模型服务!
总结
我们很高兴地宣布,AutoRound——英特尔最先进的基于微调的训练后量化 (PTQ) 算法——现已集成到 LLM Compressor 中。此次合作带来了以下优势:
- 更高的低位宽量化精度
- 轻量级微调(只需数百步,而非数千步)
- 零额外的推理开销
- 与
compressed-tensors无缝兼容,并可在 vLLM 中直接部署 - 简化的工作流:只需几行代码即可量化并部署模型
更广泛的量化方案和模型覆盖即将推出——立即尝试并帮助我们塑造未来的构建方向。
什么是 AutoRound?
AutoRound 是一种先进的训练后量化 (PTQ) 算法,专为大语言模型 (LLM) 和多模态大模型 (VLM) 设计。它为每个量化张量引入了三个可训练参数:V(舍入偏移量/调整)、α 和 β(学习到的截断范围控制)。通过按顺序处理解码器层并应用带符号梯度下降,AutoRound 联合优化舍入和截断,以最小化块级输出的重构误差。
核心优势
- 卓越的精度,尤其是在极低位宽的情况下
- 支持多种数据类型: W4A16、MXFP8、MXFP4、FP8、NVFP4,更多类型正在支持中
- 混合位宽,逐层的精度搜索,以实现灵活的精度与效率权衡
- 适用于 LLM 和 VLM
AutoRound 能够使量化模型以多种低位格式运行,旨在加速在 英特尔® 至强® (Xeon®) 处理器、英特尔® 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)保持一致 - 复用了顺序校准和逐层加载基础设施
- 实现了未来与更丰富的多修改器方案的互操作性
- 生成可供 vLLM 部署的量化模型,实现了从压缩到部署的简洁工作流
集成概述
我们通过在 LLM Compressor 中引入新的 AutoRoundModifier 完成了集成的第一阶段,使得生成可在 vLLM 中无缝加载的 W{n}A16 (例如 W4A16) 压缩模型成为可能,如 PR #1994 所实现。通过简单的配置——只需指定模型和校准数据——您就可以快速生成高质量的低位检查点。这一初始阶段支持量化包括 Llama 和 Qwen 模型家族在内的一系列密集 LLM,并展示了在实际部署中的强大兼容性。
立即尝试(快速开始)
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 的工作站上进行量化,随后部署在 AIPC 上。
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 对早期提案提供的宝贵反馈以及对拉取请求的认真审查。
相关的 RFC 和 PR
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。