Hugging Face 原生速度 vLLM Transformers 建模后端
Hugging Face 原生速度 vLLM Transformers 建模后端
TL;DR
Hugging Face 已增强了 vLLM 的 transformers 建模后端,使其在许多 LLM 架构上实现的吞吐量能够达到或超过原生、手写的 vLLM 实现。这让模型作者可以利用已有的 transformers 实现,获得超高速的 vLLM 推理,而无需编写自定义优化代码。
性能基准
对 three Qwen3 模型配置,transformers 建模后端与原生 vLLM 实现进行了对比测试。所有情况下,transformers 后端都达到了或超越了原生吞吐量:
- Qwen3-4B(Dense): 在单 GPU 上测试。
- Qwen3-32B(Dense): 使用张量并行进行测试。
- Qwen3-235B-A22B-FP8(MoE): 在 8H100 节点上使用数据并行和专家并行进行测试。
要使用此后端,用户在服务时可以添加 --model-impl transformers 标志。该实现兼容标准并行选项,包括 --tensor-parallel-size、--data-parallel-size 和 --enable-expert-parallel。
限制
目前不支持使用线性注意力的模型。此外,如果自定义模型托管在 Hub 仓库且未遵循规范,可能无法正常工作。
技术实现:动态层融合
之前,transformers vLLM 后端主要关注注意力作为主要推理瓶颈。虽然这让模型能够高效运行,但要实现最高性能仍需自定义移植以处理 GPU 并行、编译和融合内核。
更新后的后端现在在运行时为兼容的架构动态应用推理专用的层融合。这消除了模型作者需要为 transformers 和 vLLM 各实现一次模型的需求。
图分析与源码操作
系统通过两步优化过程实现原生速度:
- 静态分析: 后端使用
torch.fx对模型的计算图进行静态分析,以识别可优化的已知模式。 - 源码重写: 一旦识别出模式,后端利用抽象语法树(AST)对源码进行操作,在原位重写相应的算子。
关键优化
该过程实现了多项高性能能力:
- 融合算子: 将多个算子映射为优化的 vLLM 内核,特别是用于专家并行(EP)的 Mixture-of-Experts(MoE)模型。
- 并行规划: 使用
MergedColumnParallelLinear和QKVParallelLinear块,系统能够推断张量并行(TP)的并行计划。如果能够识别解码器块列表,还可以推断流水线并行(PP)计划。 - 编译兼容性: 被重写的模型仍然完全兼容
torch.compile和 CUDA Graphs,保持专用 vLLM 实现的性能路径。 - 统一代码库: 由于优化在运行时完成,同一 transformers 模型实现即可用于训练、评估、RL rollout 以及高速推理。
摘要
Hugging Face 通过在运行时动态应用推理专用的层融合,更新了 transformers vLLM 后端,使其吞吐量能够匹配或超过自定义 vLLM 实现。
标题
Hugging Face 原生速度 vLLM Transformers 建模后端