原生速度 vLLM transformers 建模后端
摘要
Hugging Face 发布了 transformers vLLM 建模后端,相比自定义 vLLM 实现能达到原生甚至更快的速度,使模型作者无需移植代码即可自动利用超快推理。
查看缓存全文
缓存时间: 2026/07/09 07:33
原生速度的 vLLM transformers 建模后端
来源:https://huggingface.co/blog/native-speed-vllm-transformers-backend 返回文章列表 (https://huggingface.co/blog)
Harry Mellor 的头像 (https://huggingface.co/hmellor)
Lysandre 的头像 (https://huggingface.co/lysandre)
- 展示 (https://huggingface.co/blog/native-speed-vllm-transformers-backend#showcase)- 我们如何测量 (https://huggingface.co/blog/native-speed-vllm-transformers-backend#how-we-measured)
- 那么,有什么新功能? (https://huggingface.co/blog/native-speed-vllm-transformers-backend#so-whats-new)
- 它是如何工作的? (https://huggingface.co/blog/native-speed-vllm-transformers-backend#how-does-it-work)
- 资源 (https://huggingface.co/blog/native-speed-vllm-transformers-backend#resources)
太长不看版:transformers vLLM 后端现在与许多 LLM 架构的自定义 vLLM 实现速度相当(甚至更快)。模型作者可以自动利用其 transformers 实现,免费获得超快的 vLLM 推理速度。
``
升级 vllm pip 包
uv pip install –upgrade vllm –torch-backend auto ``
Transformers 库已成为机器学习的参考建模库。它通过一致的 API 支持 450 多种架构,其设计的主要目标是模型实现自包含且易于理解。阅读 transformers 代码可以让贡献者轻松了解架构的工作原理,然后将其移植到其他框架,如 vLLM、SGLang、MLX、llama.cpp 等。
我们已完全接受这一生态系统角色,并投入大量精力使其更加便捷。去年将 transformers 作为 vLLM 的建模后端集成是朝着这个方向迈出的一大步。这使得模型作者无需进行任何移植,即可在 vLLM 内部运行 transformers 模型(包括 LLM 和 VLM)。Transformers 提供建模代码,而 vLLM 提供极其优化的推理技术,如连续批处理和自定义注意力内核。
这次集成现在变得更好了 🚀!
https://huggingface.co/blog/native-speed-vllm-transformers-backend#showcase展示
我们将 vLLM 的 transformers 建模后端与 vLLM 手写原生实现在三种截然不同的 Qwen3 模型上进行正面比较:
- 4B 密集模型,单 GPU
- 32B 密集模型,张量并行
- 235B 参数 FP8 混合专家模型,在同一个 8×H100 节点上使用数据并行 + 专家并行
PR 前后的 transformers vLLM 后端基准测试 (https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/vllm-backend/pre-post-pr.png)
结果:transforms 建模后端现在达到或超越了所有模型的原生吞吐量。
通过 transformers 建模后端运行任何* Hugging Face 模型只需一个标志——\-\-model-impl transformers。它与常规并行选项兼容,因此您的服务设置无需任何更改:
``
Qwen3-4B 密集模型,单 GPU
vllm serve Qwen/Qwen3-4B –model-impl transformers
Qwen3-32B 密集模型,2 个 GPU 的张量并行
vllm serve Qwen/Qwen3-32B –model-impl transformers –tensor-parallel-size 2
Qwen3-235B-A22B-FP8 MoE,8 个 GPU 的数据并行 + 专家并行
vllm serve Qwen/Qwen3-235B-A22B-FP8 –model-impl transformers –data-parallel-size 8 –enable-expert-parallel
如果节点内存受限,添加 –max-model-len 8192
``
*使用线性注意力的模型目前不支持,但很快就会支持!代码位于 Hub 仓库中的自定义模型不太可能工作,因为它们可能未按合规方式编写。
https://huggingface.co/blog/native-speed-vllm-transformers-backend#how-we-measured我们如何测量
每个模型在三种条件下进行比较,除了代码路径外,其他所有方面完全相同:
- native——
\-\-model-impl vllm,vLLM 手写模型(需要匹配的基准) - after——
\-\-model-impl transformers包含PR - before——
\-\-model-impl transformers不包含PR
完整可复现的运行脚本以 gist 形式提供:benchmark.sh (https://huggingface.co/datasets/ariG23498/useful-scripts/blob/main/transformers-backend-vllm-benchmark.sh)
https://huggingface.co/blog/native-speed-vllm-transformers-backend#so-whats-new那么,有什么新功能?
vLLM 的 transformers 建模后端过去主要关注注意力作为推理的瓶颈。通过在运行时插入 vLLM 的注意力实现,我们可以使 transformers 模型在 vLLM 引擎内部高效运行。但部署时有许多维度只有自定义移植才能针对,以提取最大推理性能。跨 GPU 并行化、编译、融合内核等多项技术都旨在充分利用硬件以实现超快推理。
新模型集成到 transformers 和 vLLM(之前) (https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/vllm-backend/previous-pipeline.png) 过去,一个新模型需要分别集成到 transformers 和 vLLM,并使用自定义优化。 当模型作者追求绝对最佳性能时,他们仍需编写自定义 vLLM 实现。
新模型集成到 transformers,立即可用于 vLLM(现在) (https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/vllm-backend/current-pipeline.png) 新模型一旦集成到 transformers,现在可以立即在 vLLM 中使用,达到原生 vLLM 实现的速度。 最新迭代的 vLLM transformers 建模后端在运行时动态应用推理特定的层融合,以匹配自定义代码实现的速度,适用于兼容架构。
https://huggingface.co/blog/native-speed-vllm-transformers-backend#how-does-it-work它是如何工作的?
vLLM 的 transformers 建模后端现在使用 torch.fx 对模型的计算图进行静态分析。这一过程搜索已知的可优化模式。识别出任何模式后,它使用 ast(抽象语法树)来操作源代码并就地重写部分操作。
我们可以从中实现什么?
- 融合操作,这些操作多对一映射到(超)优化的 vLLM 内核,例如用于混合专家(MoE)模型中的专家并行(EP)的内核。
- 其他主要的融合操作是 vLLM 的
MergedColumnParallelLinear和QKVParallelLinear。这些模块使我们能够推断张量并行(TP)的并行方案。如果解码器块列表易于识别,还可以推断流水线并行(PP)方案。 - 经过操作后的模型仍然是完全可(torch)编译的,会通过
torch.compile和 CUDA Graphs,与专用的 vLLM 模型实现完全相同。 - 与 vLLM 模型实现不同,Transformers 模型实现可以用于训练。因此,您可以在训练/评估/RL 部署中使用相同的模型代码。
如上所示,这使得兼容模型能够获得原生 vLLM 推理速度,而无需编写一行代码来优化推理模型。
我们正在撰写一篇详细的博客文章,深入探讨这些优化的推理方法,并详细解释我们如何调整模型以适应这些方法。
https://huggingface.co/blog/native-speed-vllm-transformers-backend#resources资源
- Transformers 模型定义 (https://huggingface.co/blog/transformers-model-definition#a-model-definition-library)
- vLLM 中的 Transformers 建模后端 (https://vllm.ai/blog/2025-04-11-transformers-backend)
- 大规模服务 (https://vllm.ai/blog/2025-12-17-large-scale-serving)
- Torch FX (https://docs.pytorch.org/docs/2.12/fx.html)
- 抽象语法树 (https://docs.python.org/3/library/ast.html)
相似文章
vllm-project/vllm v0.19.1
vLLM v0.19.1 发布 - 一个快速易用的开源 LLM 推理和服务库,拥有业界领先的吞吐量,支持 200+ 个模型架构以及包括 NVIDIA/AMD GPU 和 CPU 在内的多样化硬件。
kvcache-ai/ktransformers
KTransformers 是一个灵活的研究框架,专注于前沿的大语言模型推理与微调,利用CPU-GPU异构计算,并支持多种最新模型。
@LiorOnAI:现在你可以将任何LLM转换成更快的版本,而无需从头重新训练。NVIDIA刚刚在他们30B的模型上实现了这一点。她…
NVIDIA提出了一种方法,将任何LLM转换为更快的版本,方法是将模型拆分为两个副本:一个冻结用于上下文,另一个训练用于并行生成多个token,实现了2.4倍加速,且质量保留约99%,仅使用了8%的训练数据。
QLLM:无需Transformer和Mamba,具有O(1)推理的新型架构终于以模型形式发布
QLLM 引入了一种无需Transformer或Mamba的新型架构,实现了O(1)推理且无KV缓存。已发布一个1亿参数的模型作为概念验证,代码开源。
Show HN: Tiny-vLLM – 使用C++和CUDA的高性能LLM推理引擎
Tiny-vLLM是一个高性能的LLM推理引擎,采用C++和CUDA实现,提供连续批处理和PagedAttention等特性,并作为教育资源。