vLLM 借助 NIXL EP 实现弹性专家并行中的近零停机扩展
vLLM 引入了弹性专家并行(EP),通过实现 NIXL EP 和两阶段重配置流程,实现了近零停机扩展,使大型语言模型能够在不影响服务性能的情况下扩展 GPU 资源。
传统专家并行扩展的挑战
传统上,扩展 vLLM 服务需要添加或移除整个模型副本,或使用不同的 GPU 数量重启引擎。这一过程会导致严重的服务停机,这对于生产环境中的推理工作负载是不可接受的。
例如,将 vLLM 从 16 个 GB200 GPU 扩展到 20 个以运行 DeepSeek V4 Pro,会导致 197 秒的服务中断。即使之前为避免完全重启所做的努力,仍然会造成显著的暂停:从 16 个 GPU 扩展到 20 个需要 100 秒,而回缩到 16 个 GPU 需要 56 秒。
弹性 EP 重配置架构
新的弹性 EP 系统将重配置流程重组为两个不同的阶段:后台准备和短暂提交。这种架构确保现有工作节点在后台准备必要更改的同时继续提供服务。
后台准备: 现有工作节点利用单独的后台线程来准备并预热目标通信、传输模型权重,并与加入的工作节点同步执行细节(如自动调优结果)。同时,加入的工作节点进行初始化、接收模型权重,并准备其通信和 GPU 执行。
短暂提交阶段: 在提交阶段,vLLM 会短暂暂停其调度器,激活准备好的拓扑,然后恢复服务。通过下文详述的技术创新,这一暂停被最小化。
NIXL EP:原地扩展通信
vLLM 中先前的 EP 通信后端使用固定成员资格,这意味着添加或移除排名需要创建全新的通信实例。这导致了两个主要问题:由于维护新旧实例而增加的通信内存使用,以及先前捕获的 CUDA 图失效。
NIXL EP 专为弹性 EP 设计,通过原地添加或移除排名来解决这些问题,重用相同的 NIXL 代理、缓冲区和连接。这使得新对等节点可以在现有工作节点继续服务的同时进行连接。
至关重要的是,NIXL EP 在重配置期间保持捕获的 EP 分发和合并条目有效。这防止了 CUDA 图的失效,而此前即使在异步准备的情况下,也需要在提交阶段重复进行预热和图构建,导致扩展时暂停 58 秒,缩容时暂停 44 秒。
在现有工作节点上保留 CUDA 图
CUDA 图记录了 GPU 操作,使 vLLM 能够重放前向传递,而无需从 CPU 重复启动操作。在扩展过程中保留这些图需要保持超越通信器对象的稳定性。
为实现这一点,vLLM 实施了几项更改,以在重配置期间保持捕获的参数、启动配置以及输入和输出张量地址的稳定:
- 保留的工作节点重用其融合 MoE 执行对象,而不是为不同的活动 EP 大小重建它们。
- 图可见的工作空间和分发输出的地址和布局保持稳定,确保捕获的专家内核使用正确的指针和偏移量。
- 专家路由张量的后备存储得以保留,允许专家并行负载均衡(EPLB)更改映射内容,而无需移动捕获内核使用的张量。
这些更改使得保留的工作节点在扩展和缩减后都能重用其现有的 CUDA 图。
加入工作节点的独立准备
加入的工作节点通常需要其他工作节点参与模型前向传播以进行准备。NIXL EP 允许每个加入的工作节点在预热和图准备期间临时屏蔽所有远程 EP 对等节点。这种隔离使加入的工作节点能够仅使用其本地排名进行 EP 通信来运行虚拟批次并捕获 CUDA 图。
这一修改使得加入的工作节点无需现有工作节点参与准备过程即可捕获 CUDA 图,而现有工作节点正在服务真实请求,这一点至关重要。
DeepSeek V4 Pro 上的性能基准测试
使用 DeepSeek V4 Pro 在 GB200 GPU(TP=1,DP/EP 大小为 16 和 20)上的实验表明,NIXL EP 显著减少了服务停机时间。
| 指标 | A:阻塞 | B:异步准备 | C:异步准备 + 图重用 |
|---|---|---|---|
| 16 到 20 个 GPU:停机时间 | 99.62 秒 | 58.04 秒 | 0.82 秒 |
| 20 到 16 个 GPU:停机时间 | 56.25 秒 | 44.07 秒 | 1.96 秒 |
| 16 到 20 个 GPU:总时间 | 99.72 秒 | 97.27 秒 | 92.34 秒 |
| 20 到 16 个 GPU:总时间 | 56.21 秒 | 51.46 秒 | 9.32 秒 |
配置 C 利用 NIXL EP,实现了近零停机,将扩展暂停从 58.04 秒减少到 0.82 秒,缩容暂停从 44.07 秒减少到 1.96 秒。
此外,在请求负载上升的端到端服务场景中,弹性 EP 在整个扩展过程中始终低于服务级别目标(SLO),即滚动 p95 首次令牌时间低于 5 秒。在准备期间,弹性 EP 与静态 16-GPU 部署的服务性能相当,扩展后则与恢复的 20-GPU 部署的性能相匹配。
未来方向
vLLM 团队已规划了若干后续步骤,以进一步增强弹性 EP 能力:
- 使用 Dynamo Snapshot 恢复热工作节点: 集成 Dynamo Snapshot 将使加入的工作节点能够恢复已初始化的进程和 CUDA 状态,从而无需重复编译、内核预热和图构建。
- 最先进的 EP 通信: 团队旨在通过 NIXL EP 实现最先进的分发与合并性能,同时保持对弹性 EP 和容错的全面支持。
- 编排器集成: 下一步是将弹性 EP 连接到编排器自动缩放器,将 vLLM 与 Dynamo 和 llm-d 等系统集成。
保留现有工作节点上的 CUDA 图
CUDA 图记录了 GPU 操作,使 vLLM 无需从 CPU 重复启动操作即可重放前向传播。在扩展过程中保留这些图需要保持超越通信器对象的稳定性。
为实现这一点,vLLM 实施了多项更改,以在重配置期间保持捕获的参数、启动配置以及输入和输出张量地址的稳定:
- 保留的工作节点重用其融合 MoE 执行对象,而不是为不同的活动 EP 大小重建它们。
- 图可见的工作空间和分发输出的地址和布局保持稳定,确保捕获的专家内核使用正确的指针和偏移量。
- 专家路由张量的后备存储被保留,允许专家并行负载均衡(EPLB)更改映射内容,而无需移动捕获内核使用的张量。
这些更改使得保留的工作节点在扩展和缩减后都能重用其现有的 CUDA 图。
加入工作节点的独立准备
加入的工作节点通常需要其他工作节点参与模型前向传播以进行准备。NIXL EP 允许每个加入的工作节点在预热和图准备期间临时屏蔽所有远程 EP 对等节点。这种隔离使加入的工作节点能够仅使用其本地排名进行 EP 通信来运行虚拟批次并捕获 CUDA 图。
这一修改使得加入的工作节点无需现有工作节点参与准备过程即可捕获 CUDA 图,而现有工作节点正在服务真实请求,这一点至关重要。
DeepSeek V4 Pro 上的性能基准测试
使用 DeepSeek V4 Pro 在 GB200 GPU(TP=1,DP/EP 大小为 16 和 20)上进行的实验表明,NIXL EP 显著减少了服务停机时间。
| 指标 | A:阻塞 | B:异步准备 | C:异步准备 + 图重用 |
|---|---|---|---|
| 16 到 20 个 GPU:停机时间 | 99.62 秒 | 58.04 秒 | 0.82 秒 |
| 20 到 16 个 GPU:停机时间 | 56.25 秒 | 44.07 秒 | 1.96 秒 |
| 16 到 20 个 GPU:总时间 | 99.72 秒 | 97.27 秒 | 92.34 秒 |
| 20 到 16 个 GPU:总时间 | 56.21 秒 | 51.46 秒 | 9.32 秒 |
配置 C 利用 NIXL EP,实现了近零停机,将扩展暂停从 58.04 秒减少到 0.82 秒,缩容暂停从 44.07 秒减少到 1.96 秒。
此外,在请求负载上升的端到端服务场景中,弹性 EP 在整个扩展过程中始终低于服务级别目标(SLO),即滚动 p95 首令牌时间低于 5 秒。在准备期间,弹性 EP 与静态 16 GPU 部署的服务性能相当,扩展后则与恢复的 20 GPU 部署的性能相匹配。
未来方向
vLLM 团队已规划了若干后续步骤,以进一步增强弹性 EP 能力:
- 使用 Dynamo Snapshot 恢复热工作节点: 集成 Dynamo Snapshot 将使加入的工作节点能够恢复已初始化的进程和 CUDA 状态,从而无需重复编译、内核预热和图构建。
- 最先进的 EP 通信: 团队旨在通过 NIXL EP 实现最先进的分发与合并性能,同时保持对弹性 EP 和容错的全面支持。
- 编排器集成: 下一步是将弹性 EP 连接到编排器自动缩放器,将 vLLM 与 Dynamo 和 llm-d 等系统集成。
SUMMARY: vLLM 通过引入 NIXL EP 和异步准备,实现了弹性专家并行(EP)的近零停机扩展,将扩展暂停从分钟级缩短至不到 2 秒。
TITLE: vLLM 借助 NIXL EP 实现弹性专家并行中的近零停机扩展