原生速度的 vLLM transformers 建模后端
阅读原文· huggingface.co用 transformers 写的模型,现在不用改一行代码就能在 vLLM 里跑到手写实现的水平,模型作者最大的集成痛被抹平了。虽然主要是工程黑魔法,但生态意义不小。
Hugging Face 宣布 transformers vLLM 后端现与手写原生 vLLM 实现速度相当甚至更快。模型作者无需移植代码,即可自动利用 transformers 获得超快推理。测试使用 Qwen3-4B(单 GPU)、Qwen3-32B(张量并行)和 Qwen3-235B-A22B-FP8 MoE(数据+专家并行)三种配置,吞吐量均达到或超过原生。该后端通过 torch.fx 静态分析图、AST 重写代码实现动态层融合,支持张量/管道/专家并行及 torch.compile。用户仅需添加 --model-impl transformers 标志。目前不支持线性注意力模型但即将支持。
原生速度 vLLM transformers 建模后端
发布于 2026 年 7 月 8 日
哈里·梅勒 hmellor 关注
莱桑德 lysandre 关注
TL;DR:对于许多大语言模型架构,transformers vLLM 后端的速度现已达到(甚至超过)自定义 vLLM 实现。模型作者可以自动利用他们的 transformers 实现,免费获得超快 vLLM 推理。
# Upgrade the vllm pip package
uv pip install --upgrade vllm --torch-backend auto
transformers 库已成为机器学习领域的参考建模库。它通过一致的 API 支持 450 多种架构,其设计的主要目标是让模型实现自成一体且易于理解。阅读 transformers 代码能让贡献者轻松学习架构的工作原理,然后将其移植到 vLLM、SGLang、MLX、llama.cpp 等其他框架中。
我们已完全接纳了在生态中的这一角色,并投入大量努力使其更加便捷。去年将 transformers 作为 vLLM 中的建模后端集成,便是朝着该方向迈出的一大步。这使得模型作者能够直接在 vLLM 内运行 transformers 模型(包括大语言模型和视觉语言模型),而无需进行任何移植。transformers 提供建模代码,vLLM 则提供高度优化的推理技术,例如连续批处理和自定义注意力核心。
这项集成如今变得更好了 🚀!
展示
我们将 vLLM 的 transformers 建模后端与 vLLM 手写的原生实现在三个截然不同的 Qwen3 模型上进行了正面比较:
- 单 GPU 上的 4B 稠密模型
- 张量并行下的 32B 稠密模型
- 同一 8×H100 节点上采用数据并行加专家并行的 235B 参数 FP8 混合专家模型
![]() |
|---|
| 结果:transformers 建模后端现在在每一个模型上均达到或超过了原生吞吐量。 |
通过 transformers 建模后端运行任意* Hugging Face 模型只需一个标志 — `--model-impl transformers`。它可与常规并行选项组合使用,因此无需改动你的服务配置:
# Qwen3-4B dense, single GPU
vllm serve Qwen/Qwen3-4B --model-impl transformers
# Qwen3-32B dense, tensor-parallel across 2 GPUs
vllm serve Qwen/Qwen3-32B --model-impl transformers --tensor-parallel-size 2
# Qwen3-235B-A22B-FP8 MoE, data-parallel + expert-parallel across 8 GPUs
vllm serve Qwen/Qwen3-235B-A22B-FP8 --model-impl transformers --data-parallel-size 8 --enable-expert-parallel
# add --max-model-len 8192 if your node is memory constrained
*使用线性注意力机制的模型目前暂不支持,但很快将得到支持!代码位于 Hub 仓库中的自定义模型可能无法正常工作,因为它们并非按照合规方式编写。
我们如何测量的
每个模型都在三种条件下进行比较,这三种条件除代码路径外完全相同:
- 原生模式 — --model-impl vllm,即 vLLM 手写模型(作为对比基准)
- 修改后模式 — --model-impl transformers,应用了该 PR
- 修改前模式 — --model-impl transformers,未应用该 PR
完整且可复现的运行脚本以 gist 形式提供:benchmark.sh
那么,有哪些新变化?
过去,vLLM 的 transformers 建模后端主要将注意力机制视为推理瓶颈。通过在运行时接入 vLLM 的注意力实现,可以让 transformers 模型在 vLLM 引擎内部高效运行。然而,部署场景涉及多个维度,需要定制化移植才能充分挖掘推理性能。跨 GPU 并行化、编译、融合算子等众多技术,都能帮助你充分利用硬件实现超快推理。
![]() |
|---|
| 此前,一个新模型需要分别集成到 transformers 和 vLLM,后者还需附带定制优化 |
当模型作者追求极致性能时,他们仍需编写定制化的 vLLM 实现。
![]() |
|---|
| 如今,一个新模型一旦集成到 transformers,便可立即在 vLLM 中使用,且拥有原生 vLLM 实现的速度 |
最新一代 vLLM 的 transformers 建模后端能够在运行时动态应用针对推理的层融合操作,在兼容架构上达到与定制代码实现相当的速度。
它是如何工作的?
现在,vLLM 的 transformers 建模后端利用 torch.fx 对模型计算图进行静态分析。该过程会搜索可优化的已知模式。在识别出任何模式后,再使用 ast(抽象语法树)修改源代码,就地重写部分运算。
通过这个技术,我们能实现什么?
- 将多个操作融合映射到(超)优化的 vLLM 内核,例如用于混合专家(MoE)模型中专家并行(EP)的内核。
- 其他主要的融合操作包括 vLLM 的 MergedColumnParallelLinear 和 QKVParallelLinear。这些模块使我们能够推断出张量并行(TP)的并行方案。如果解码器块列表易于识别,还可以推断出流水线并行(PP)方案。
- 被操控的模型仍然是完全可(torch)编译的,它们会通过 torch.compile 和 CUDA Graphs 处理,与专用的 vLLM 模型实现完全相同。
- 与 vLLM 模型实现不同,Transformers 模型实现可用于训练。因此,你可以使用相同的模型代码进行训练、评估和 RL 展开。
如上所示,对于兼容的模型,这实现了原生的 vLLM 推理速度,而无需编写一行代码来优化模型的推理性能。
我们正在撰写一篇详细的博文,深入剖析这些优化的推理方法,并详细解释我们如何操控模型来适应这些方法。
资源
- Transformers 模型定义
- vLLM 中的 Transformers 建模后端
- 大规模服务
- Torch FX
- 抽象语法树
本文提到的数据集 1
更多博文文章
transformers pytorch 优化 ## 解锁连续批处理中的异步性 * * * ror 等人 2026 年 5 月 14 日 ror、pcuenq 等人
混合专家模型优化 transformers ## Transformers 中的混合专家模型(MoE)* * * * * +3 169 2026 年 2 月 26 日 ariG23498 等人
社区
编辑预览
通过拖拽文本输入、粘贴或点击此处上传图片、音频和视频。
点击或粘贴此处上传图片
评论 · 或发表评论


