在不牺牲准确性的前提下,实现更快、更高效的大模型服务!

摘要

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

  • 低比特量化更高的准确性
  • 轻量级调优(数百步,而非数千步)
  • 零额外推理开销
  • compressed-tensors 无缝兼容,并可在 vLLM 中直接提供服务
  • 简化的工作流程:只需几行代码即可量化和部署模型

更广泛的量化方案和模型覆盖即将推出——立即试用,帮助我们塑造未来的发展。

什么是 AutoRound?

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

核心优势

  • 卓越的准确性,特别是在极低比特宽度下
  • 支持多种数据类型:W4A16、MXFP8、MXFP4、FP8、NVFP4,更多类型正在开发中
  • 混合比特、逐层精度搜索,实现灵活的精度-效率权衡
  • 适用于 LLMsVLMs

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)保持一致
  • 重用顺序校准和逐层加载基础设施
  • 实现未来与更丰富的多修改器配方的互操作性
  • 生成可供 vLLM 服务的量化模型,实现从压缩到部署的清晰工作流程

集成概述

我们通过将新的 AutoRoundModifier 引入 LLM Compressor,完成了第一阶段的集成,从而能够生成 W{n}A16(例如 W4A16)压缩模型,这些模型可以无缝加载到 vLLM 中,如 PR #1994 中所实现。通过简单的配置——只需指定您的模型和校准数据——您可以快速生成高质量的低比特检查点。此初始阶段支持量化一系列密集型大模型,包括 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 的工作站上进行量化,然后部署到 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 已经为低比特大模型提供了一条实用、面向生产的路径: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