vLLM 大规模服务:使用 Wide-EP 在 H200 上达到 DeepSeek @ 2.2k tok/s
简介
在 v0.11.0 版本中,vLLM V0 引擎的最后一部分代码已被移除,标志着完全迁移至改进后的 V1 引擎 架构。如果没有 vLLM 社区 1,969 名贡献者在过去一个月内提交的超过 950 次提交(截至 25 年 12 月 18 日),这一成就是不可能实现的。
这些努力已得到 SemiAnalysis 开源 InferenceMax 性能 基准测试 的验证。此外,vLLM 很自豪能成为 Meta、LinkedIn、Red Hat、Mistral 和 HuggingFace 等团队生产环境中的可靠选择。
DeepSeek 风格的解耦服务和稀疏混合专家(MoE)模型部署依然是高性能 LLM 推理的标杆。本文概述了 vLLM 团队为进一步提升吞吐量而构建的关键优化措施,包括:
- 异步调度
- 双批次重叠 (Dual-batch overlap)
- 解耦服务 (Disaggregated serving)
- CUDA 图模式
FULL_AND_PIECEWISE - 默认启用 DeepGEMM
- 集成 DeepEP 内核
- 专家并行负载均衡
- 针对 DeepSeek-R1 的 SiLU 内核
如需进一步参考,我们推荐 llm-d、PyTorch、Dynamo 和 Anyscale 团队撰写的关于 大规模服务、解耦服务、分布式推理 以及使用 vLLM 实现 Wide-EP 的优秀文章。
结果
最近在 Coreweave H200 集群(通过 Infiniband 和 ConnectX-7 网卡连接)上的 社区基准测试 显示,在类生产的多节点部署中,每颗 H200 GPU 的持续吞吐量达到 2.2k token/s。
这比早期基准测试的约 1.5k token/s 有了显著提升。这一增长直接得益于持续的优化工作,包括内核改进(silu-mul-quant 融合、Cutlass QKV 内核、TP 注意力漏洞修复)以及解码阶段双批次重叠(DBO)的实现。
这种性能表现使运营商能够通过整合工作负载、减少目标 QPS 所需的副本数量,从而实现直接收益,最终降低单位 token 的成本。


关键组件
Wide-EP (广域专家并行)
部署 DeepSeek-V3 模型系列等前沿模型进行大规模服务时,需要考虑两个主要因素:
- 稀疏专家激活:在 DeepSeek-R1 中,模型总共 671B 参数中,每次前向传递仅激活 37B 参数。
- KV 缓存管理:张量并行(TP)部署对于 DeepSeek 的多头潜在注意力(MLA)架构来说并非最优,因为潜在投影(latent projections)在各分片间存在冗余。
专家并行(EP)是一种利用这些特性来最大化有效 KV 缓存的部署模式,vLLM 通过 --enable-expert-parallel 标志提供支持。在这种模式下,一组专家在部署的所有 rank 之间共享。在前向传递过程中,token 在 rank 之间路由,以便由合适的专家进行处理。

Wide-EP 将 EP 与数据并行(DP)相结合。数据并行部署可以使用 mp 或 ray 数据并行后端启动,在 Ray 集群中提供更简单的设置。下图显示了 DeepSeek-V3 在使用张量并行和专家并行分片策略时每颗 GPU 的内存使用情况,对比显示了其相较于张量并行的优势。
TP 策略显示每颗 H200 有 34GB 空闲设备内存,但对于 MLA 模型,每个 rank 必须复制潜在注意力投影。在 DP 部署中,注意力层被复制,使得潜在投影在各 rank 间相互独立,从而增加了整个部署的有效批处理大小。

增加专家并行度会增加 rank 之间的同步开销。为了解决这个问题,vLLM 集成了对 DeepEP 高吞吐量、低延迟 all-to-all 内核的支持。此外,vLLM 还支持 Perplexity MoE 内核 以及基于 NCCL 的 AllGather-ReduceScatter all-to-all。有关 vLLM 中可用 all-to-all 后端的详细信息,请参阅 vLLM MoE 内核文档。

双批次重叠 (DBO)
vLLM 集成了对 DeepSeek 微批处理策略 的支持,即双批次重叠 (DBO),可通过命令行标志 --enable-dbo 使用。该策略重叠计算和集合通信以提高 GPU 利用率。vLLM 具体实现如下:
- 跨 rank 进行集合
all_reduce以确认微批处理是否有益,最小阈值可通过--dbo-decode-token-threshold调节。 - 主线程创建微批处理工作线程,完成 CUDA 图捕获。
- vLLM 的模块化 MoE all-to-all 内核基类协调微批处理工作线程的启动,在等待 GPU 工作完成时让出控制权。
下图是 未 开启 DBO 的 DeepSeek 解码工作负载的分析追踪。尽管计算负载很小,“MoE Dispatch/Combine”部分显示在集合通信上花费了过长的时间。

下图显示了 开启 DBO 后的相同工作负载。第一个微批处理工作线程启动并完成 MoE 分发,然后立即让出给第二个微批处理工作线程。接着,第二个线程完成自己的分发,并在完成后将控制权交回给第一个线程。最后,第一个工作线程在让出之前完成合并工作。
这在通信开销较大的部署中(如专家并行度较高的部署)实现了更高的 GPU 利用率。

专家并行负载均衡 (EPLB)
MoE 专家层在训练时针对专家间的均衡负载进行了优化,但在推理时,实际工作负载可能导致 token 路由不均衡。请参阅 NVIDIA 关于 MoE 专家路由的 实验结果,了解不同工作负载下专家负载均衡的差异统计。
在 Wide-EP 设置中,这意味着某些 EP rank 可能处于空闲状态,而其他 rank 处理大量 token 批次。为了缓解这种情况,vLLM 实现了来自 DeepSeek 专家并行负载均衡器 (EPLB) 的分层和全局负载均衡策略。EPLB 由 --enable-eplb CLI 标志控制,支持可配置的窗口大小、重平衡间隔、冗余专家和日志选项。

为实现 EPLB,每个 MoE 前向传递会记录每个 token 的负载,滑动窗口会在 EP rank 之间聚合这些统计信息。当达到重平衡间隔时,负载均衡器计算一个新的逻辑到物理专家映射,并编排权重调整,从而在不重启模型的情况下使新的放置生效。
解耦服务 (Disaggregated Serving)
Hao AI Lab 在 2024 年 DistServe 论文 中描述的解耦预填充/解码服务模式,对于专家并行部署特别有用。

由于专家分布在不同的 rank 上,在一个 rank 上启动的请求 token 可能需要由 EP 组中任何其他 rank 上的专家进行处理。这要求 MoE 层之间进行同步(如果某个 rank 未被使用,则需要虚拟传递),以便层合并集合在适当的时间准备好接收 token。
这意味着单个计算密集型的预填充请求可能会延迟整个 EP 组的前向传递,从而放大了解耦服务带来的好处。此外,DeepSeek 部署可以配置为仅使用适合其工作负载的 DeepEP 内核(高吞吐量 vs. 低延迟)。
部署路径
llm-d
llm-d 是一个 Kubernetes 原生的分布式推理服务栈,为任何规模化服务大型生成式 AI 模型的人员提供了清晰的路径。llm-d 帮助您在大多数硬件加速器和基础设施提供商上实现关键开源模型最快的“达到 SOTA 性能的时间”。有关详细信息,请查看 llm-d 的 Wide EP 参考路径 以复现本文中的结果。

Dynamo
Dynamo 专为 LLM 的高吞吐量和低延迟生产部署而设计。诸如 KV 感知路由、用于缓存卸载的 KV 块管理器以及用于动态负载匹配的规划器等功能,使您能够在扩展 GPU 规模的同时达到更严格的 SLA。vLLM 和 Wide-EP 服务在 Dynamo 中原生支持所有这些功能。有关详细信息,请查阅 Dynamo 文档和 示例方案 以复现本博文中的性能。

Ray Serve LLM
基于 Ray Serve 原语,Ray Serve LLM 提供了针对 预填充/解码解耦、数据并行注意力 和 前缀缓存亲和性请求路由 的一流服务模式,专注于 Ray 集群(包括 Kubernetes 上的 KubeRay)上的模块化和部署简便性。一个关键区别是它与更广泛的 Ray 生态系统(包括数据处理和强化学习)的无缝集成。
该框架集成了 NIXL 和 LMCache 连接器以实现高效的 KV 传输,并利用 Ray 的分布式计算原语,根据负载特性实现每个阶段的独立自动扩缩容。总之,该解决方案为推理工作负载提供了一个灵活且可编程的层,可以轻松扩展和组合以实现各种服务模式。

路线图
vLLM 正在不断改进,目前正在进行以下工作:
- 弹性专家并行
- 长上下文服务
- 通过 CPU 进行 KV 缓存传输
- 完全确定性和批处理不变性
- 大型 MoE 优化,例如针对 DeepSeek-R1 和 gpt-oss 模型的算子融合
- 改进 FlashInfer 集成以支持最新内核,例如 SwapAB
- 在解耦服务部署中支持独立的 TP 大小
- 针对大规模服务的 GB200 优化
获取最新参考信息,请参阅 roadmap.vllm.ai。
总结
- vLLM 已完全迁移至 V1 引擎,该引擎在 DeepSeek 风格的 MoE 部署中表现出高吞吐量,并使用 Wide-EP 实现了 2.2k tok/s/H200 的性能。
- Wide-EP 最大化了 MLA 架构的 KV 缓存效率,而双批次重叠和 EPLB 则减少了通信瓶颈和负载不均衡。
- 解耦的预填充/解码服务进一步优化了 MoE 工作负载的部署,并提供了 llm-d、Dynamo 和 Ray Serve LLM 等部署选项。