使用 AutoRound 量化加速 vLLM-Omni 推理

10 分钟阅读
vLLM-Omni 社区,英特尔 AutoRound 团队

总结

我们非常激动地宣布,英特尔最先进的训练后量化 (PTQ) 算法 AutoRound 已完全集成到 vLLM-Omni 中,实现了“一次量化,直接部署”的精简工作流。此次合作将 W4A16(4 位权重/16 位激活)量化带入了多模态 Omni、视频扩散和多阶段图像生成管道中。

我们生产级基准测试套件的主要实证亮点包括:

  • 巨大的显存节省: 大规模 Omni 模型的检查点大小最多可缩减 62%,将 Qwen3-Omni-30B-A3B 从 66 GB 压缩至 25 GB。
  • 准确性保持: W4A16 量化版的 Qwen3-Omni-30B 在 OmniBench 上取得了令人印象深刻的分数,略优于其 BF16 参考模型。同时,它将文本到图像的质量偏差限制在约 1.3% 以内,表明在评估工作负载下,4 位量化能够保持多模态质量。
  • 生产部署优势: 解锁了英特尔 XPU (B60) 上的高级架构优化,通过 CFG 并行执行,相比顺序运行的 BF16 基线服务,引导生成速度提升了 1.55–1.67 倍。
  • 跨后端集成: 在英特尔 XPU 和 NVIDIA GPU 架构上均验证了原生执行路径。

1. 引言:vLLM-Omni 与 AutoRound 的结合

vLLM-Omni 专为扩散模型、多模态 Omni 模型及相关多阶段生成栈的高性能服务而设计。这种广泛的适用性使得量化尤为重要:目标不仅是缩减单个 Transformer,而是让多样化的运行时组合更易于在真实硬件上部署。

AutoRound 由英特尔开发,并在 EMNLP 2024 关于通过有符号梯度下降进行权重取整的研究中进行了描述,是一种基于微调的训练后量化算法。其核心思想是通过每个量化张量的三个可学习参数协同优化取整和截断:V 用于取整偏移量,alphabeta 用于控制截断范围。在实践中,这使得 AutoRound 相比简单的“四舍五入”基线,在低位宽下具有更强的准确性,同时仍能生成在推理时零额外开销的静态检查点。

这一三层协作——AutoRound 中的算法工作、vLLM-Omni 中的运行时集成,以及 HuggingFace 上不断增加的 INT4 检查点——讲述了一个连贯的故事:AutoRound 不仅仅是一种量化技术,更是从研究到生产级低位宽 Omni 推理的端到端路径。

运行时路径有意设计得非常简单。vLLM-Omni 读取检查点元数据,检测到 quantization_config.quant_method = "auto-round",将检查点块重新映射到运行时模块,并选择匹配的计算后端。这种基于检查点的流程对于生产环境尤为重要,因为它保持了与普通模型加载相同的服务 API。

2. 模型覆盖范围

经过验证的 AutoRound + vLLM-Omni 生态系统涵盖了三种主要的多模态范式。

2.1 Omni 多模态模型

这些模型管理着统一的文本、视觉和音频处理循环,由于跨模态嵌入对齐,带来了独特的量化挑战。

2.2 扩散模型与多阶段图像生成

2.3 视频扩散模型

Wan2.2 系列代表了最先进的时空视频生成模型,其 AutoRound INT4 检查点已在 vLLM-Omni 中通过验证。

3. 使用方法

通过将所有量化和调优操作包含在离线管道中,该集成使生产代码保持精简,并专注于高性能推理。

3.1 使用量化模型进行推理

对于 FLUX.1-dev,Python API 的使用与正常的 vLLM-Omni 加载方式完全一致,唯一的区别是检查点路径。

from vllm_omni import Omni
from vllm_omni.inputs.data import OmniDiffusionSamplingParams
 
if __name__ == '__main__':
    omni = Omni(model="vllm-project-org/FLUX.1-dev-AutoRound-w4a16")
    outputs = omni.generate(
        "A cat sitting on a windowsill",
        OmniDiffusionSamplingParams(num_inference_steps=28, guidance_scale=3.5),
    )
    outputs[0].images[0].save("output.png")

对于 Wan2.2 视频模型,服务保持为标准的 vLLM-Omni 命令。服务器运行后,请求将通过与 BF16 变体相同的视频端点。

vllm serve Intel/Wan2.2-T2V-A14B-Diffusers-int4-AutoRound --omni --port 8091
curl -X POST "http://127.0.0.1:8091/v1/videos/sync" \
  -F 'prompt=Cherry blossoms swaying gently in the breeze, cinematic motion' \
  -F 'width=832' -F 'height=480' -F 'num_frames=48' \
  -F 'num_inference_steps=40' -F 'guidance_scale=5.0' \
  --output t2v_output.mp4

对于 Qwen2.5-Omni 等 Omni 模型,兼容 OpenAI 的聊天接口也保持不变。

vllm serve Intel/Qwen2.5-Omni-7B-int4-AutoRound --omni --port 8091
curl -s https://:8091/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Intel/Qwen2.5-Omni-7B-int4-AutoRound",
    "messages": [{"role": "user", "content": "What is 2 + 3?"}],
    "max_tokens": 128
  }'

一个重要的操作细节是,vLLM-Omni 会自动从检查点检测量化元数据。对于预量化的 AutoRound 模型,您无需在推理期间添加额外的 --quantization 标志。

3.2 量化新模型

新检查点使用 AutoRound 工具进行离线生成,然后由 vLLM-Omni 直接服务。服务期间不会进行任何校准或量化工作。这种分离使量化实验远离热部署路径,并确保生产推理保持执行效率。

# FLUX.1-dev
auto-round \
  --model black-forest-labs/FLUX.1-dev \
  --scheme W4A16 \
  --batch_size 1 \
  --disable_opt_rtn \
  --dataset coco2014 \
  --iters 0
 
# Wan2.2-T2V-A14B
auto-round \
  --model_name Wan-AI/Wan2.2-T2V-A14B-Diffusers \
  --format auto_round \
  --scheme W4A16 \
  --iters 100 \
  --nsamples 32 \
  --batch_size 1 \
  --num-inference-steps 3 \
  --guidance-scale 5.0 \
  --dataset coco2014 \
  --output_dir Wan2.2-T2V-A14B-Diffusers-int4-AutoRound
 
# Qwen3-Omni-30B-A3B-Instruct
auto-round \
  --model Qwen/Qwen3-Omni-30B-A3B-Instruct \
  --bits 4 \
  --group_size 128 \
  --format auto_round \
  --iters 200 \
  --lr 5e-3 \
  --output_dir tmp_qwen3_omni_w4a16 \
  --trust_remote_code

生成的检查点在 config.json 中包含了量化元数据。

{
  "quantization_config": {
    "quant_method": "auto-round",
    "bits": 4,
    "group_size": 128,
    "sym": true,
    "packing_format": "auto_round:auto_gptq"
  }
}

在实践中,AutoRound 和 vLLM 的指南建议,128 个校准样本和大约 200 次优化迭代通常足以让许多工作负载达到稳定的收敛,尽管更大或更敏感的模型可能会从更多的微调中受益。确切的校准设置取决于模型系列、任务类型和部署约束。

3.3 质量验证

对于扩散模型,vLLM-Omni 还提供了一个比较工具,用于 BF16 参考模型和量化候选模型之间基于相同种子的回归测试。

python -m vllm_omni.quantization.tools.compare_diffusion_trajectory_similarity \
  --task t2i \
  --reference-model black-forest-labs/FLUX.1-dev \
  --candidate-model vllm-project-org/FLUX.1-dev-AutoRound-w4a16 \
  --prompt "a cup of coffee on the table" \
  --height 512 --width 512 \
  --num-inference-steps 20 \
  --seed 142 \
  --output-json /tmp/flux_similarity/result.json

4. 定量评估:准确性与质量

量化只有在保留模型核心智能的前提下才有用。我们使用自动评估套件对 AutoRound 的集成进行了广泛的多模态回归测试。

4.1 Omni 多模态评估 (OmniBench)

我们使用 evalscope 对 100 个极其复杂的多模态任务(同时包含图像和音频模态)进行了相同的评估。W4A16 模型获得的 OmniBench 综合分数略高于 BF16 基线。

Figure 1: OmniBench results comparing BF16 and W4A16 AutoRound quantized variants of Qwen3-Omni-30B-A3B-Instruct.
图 1:比较 Qwen3-Omni-30B-A3B-Instruct 的 BF16 和 W4A16 AutoRound 量化变体的 OmniBench 结果。

4.2 多阶段扩散模型评估 (TIIF-Bench)

对于多阶段文生图系统,我们在 9 个结构化子属性上对性能进行了量化,评估了对齐度、组合和保真度。

Figure 2: TIIF-Bench evaluation across 9 structural sub-attributes for multi-stage text-to-image pipelines.
图 2:多阶段文生图管道的 9 个结构化子属性的 TIIF-Bench 评估。

所有轴向的平均精度下降约为 1.3%,完全在生产部署的可接受容差范围内。

4.3 视频生成评估 (Wan2.2)

由于时间一致性偏移,视频管道在简单的标量量化下较为脆弱。AutoRound 使用客观指标在多个维度上进行了评估:

Figure 3: Text-to-Video evaluation on Wan2.2 T2V-A14B under W4A16 AutoRound quantization.
图 3:在 W4A16 AutoRound 量化下,Wan2.2 T2V-A14B 的文生视频评估。
Figure 4: Image-to-Video evaluation on Wan2.2 I2V-A14B under W4A16 AutoRound quantization.
图 4:在 W4A16 AutoRound 量化下,Wan2.2 I2V-A14B 的图生视频评估。

在 W4A16 AutoRound 下,文生视频变体 (T2V-A14B) 的结构一致性指标实际上有轻微改善。这一表现与“截断优化可能提供正则化效果”的假设相一致。

5. 性能、占用空间及服务基准测试

5.1 显存占用优化

W4A16 AutoRound 的首要好处是显著减小了检查点大小和执行内存占用。W4A16 将量化权重的存储从 BF16 基线缩减到了原权重的约四分之一,这就是为什么第一位的收益是显存空间。端到端的加速效果取决于工作负载中之前有多少受限于内存容量或内存带宽。

Figure 5: VRAM footprint comparison between BF16 and W4A16 AutoRound across vLLM-Omni model families.
图 5:BF16 和 W4A16 AutoRound 在 vLLM-Omni 模型系列之间的显存占用对比。

一个细微之处在于:并非每个管道的每个阶段都会被量化。VAE 解码、辅助阶段以及多阶段系统的部分组件可能保持更高的精度。这就是为什么权重压缩比通常大于端到端延迟加速比的原因。

5.2 以显存余量换取延迟降低

虽然第 5.1 节确立了 W4A16 的显存优势,但本案例研究展示了这些显存空间如何转化为架构优势——使 GPU 分配策略能够实现超越纯计算节省所能预见的吞吐量增益。上述所有基准测试均在英特尔 XPU B60 上进行。

W4A16 将最低硬件需求从 4 张 GPU 降至仅 1 张

BF16 FLUX.1-dev Transformer (23 GB) 在包含运行时激活后超过了单张 B60 的 24.4 GB 容量——需要 TP=4(所有四张 GPU)才能提供服务。而 W4A16 的 7 GB Transformer 可以轻松装入单张 GPU,并留出 19% 的空间。

W4A16 + CFG 并行 = 引导生成速度提升 1.55 倍至 1.67 倍

无分类器引导 (CFG) 要求每一步运行两次去噪通道——一个带有提示词,一个带有负面提示词。在 BF16 将所有 4 张 GPU 用于张量并行的情况下,这些通道必须串行运行(2 倍延迟)。W4A16 可在 TP=2 下运行,释放出 2 张 GPU。这实现了 CFG 并行——在两个 GPU 组上同时运行两个引导分支。

Figure 6: Latency and memory tradeoff analysis: W4A16 reduces minimum hardware requirement from 4 GPUs to 1, enabling CFG Parallel execution.
图 6:延迟和内存权衡分析:W4A16 将最低硬件需求从 4 张 GPU 降至 1 张,实现了 CFG 并行执行。
Figure 7: CFG Parallel execution on Intel XPU B60 achieves 1.55-1.67x speedup over sequential BF16 serving.
图 7:英特尔 XPU B60 上的 CFG 并行执行相比串行 BF16 服务实现了 1.55-1.67 倍的加速。

关键洞察:W4A16 在扩散工作负载中的价值超出了纯粹的内存叙事。显存余量不仅使模型能够适配,还使它们能够以不同的方式运行,解锁了产生比简单反量化开销所能预测的更大的端到端加速的并行策略。

6. 总结

AutoRound 与 vLLM-Omni 非常契合,因为这种集成尊重了运营商的实际需求:离线检查点生成、自动运行时检测、可预测的内存节省,以及在发布前验证质量的途径。其结果是一个实用的低位宽服务工作流,目前已涵盖了 vLLM-Omni 生态系统中有意义的一部分,从 FLUX 和 Wan 到 GLM、BAGEL、Ovis 和 Qwen Omni。

对于更广泛的社区来说,真正的结论是:量化不再仅仅是赢得基准测试的巧妙技巧——它已经成熟为基础基础设施。随着 AutoRound 扩大其在模型系列和硬件架构上的兼容性,它为平衡多模态性能、部署成本和输出质量提供了有效的途径。

后续工作包括更广泛的格式支持以及在模型系列和硬件目标上的持续扩展。我们正在积极扩大对额外量化格式的支持,如用于线性层和 MoE 模块的 MXFP4MXFP8,同时也在探索注意力层的低位宽技术(例如 SageAttention)。这些改进将在不久的将来进一步扩展多模态服务的效率和灵活性。

7. 致谢

特别感谢 vLLM-Omni 团队的 Hongsheng Liu、Shunyang Li 和 WeiQing Chen,以及英特尔的 Chendi Xue,感谢他们为将 AutoRound 集成到 vLLM-Omni 中提供的不可思议的支持。我们也深深感谢 vLLM-Omni 社区对 AutoRound 的快速采用!