原生速度 vLLM transformers 建模后端

Hugging Face Blog 工具

摘要

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我们如何测量

每个模型在三种条件下进行比较,除了代码路径外,其他所有方面完全相同:

  1. native——\-\-model-impl vllm,vLLM 手写模型(需要匹配的基准)
  2. after——\-\-model-impl transformers包含PR
  3. 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 的 MergedColumnParallelLinearQKVParallelLinear。这些模块使我们能够推断张量并行(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

GitHub Releases Watchlist

vLLM v0.19.1 发布 - 一个快速易用的开源 LLM 推理和服务库,拥有业界领先的吞吐量,支持 200+ 个模型架构以及包括 NVIDIA/AMD GPU 和 CPU 在内的多样化硬件。

kvcache-ai/ktransformers

GitHub Trending (daily)

KTransformers 是一个灵活的研究框架,专注于前沿的大语言模型推理与微调,利用CPU-GPU异构计算,并支持多种最新模型。