SGLang 引入 Waterfill 与 LPLB 提升 DeepEP MoE 负载均衡

LMSYS:Blog(Chatbot Arena 团队)·2026-06-26 00:00·88天前·NVIDIA Team
AI 导读

SGLang 为 DeepEP MoE 推理新增两种调度时负载均衡方法:Waterfill 将共享专家分配给负载更低的 rank,在 DeepSeek-V3/R1 服务负载下使总吞吐量提升 1.48% 至 4.66%,在 DeepSeek V4 上最佳点从 49,253 tok/s 提升至 51,677 tok/s(+4.92%);LPLB 基于线性规划优化冗余专家副本的 token 路由,配合 EPLB 在相同集群上实现吞吐量提升 0.84% 至 7.34%。

LMSYS:Blog(Chatbot Arena 团队)
精选
58AI 编辑部评分,满分 100

SGLang 引入 Waterfill 与 LPLB 提升 DeepEP MoE 负载均衡

2026-06-26 00:00· 88天前· NVIDIA Team
AI 导读

SGLang 为 DeepEP MoE 推理新增两种调度时负载均衡方法:Waterfill 将共享专家分配给负载更低的 rank,在 DeepSeek-V3/R1 服务负载下使总吞吐量提升 1.48% 至 4.66%,在 DeepSeek V4 上最佳点从 49,253 tok/s 提升至 51,677 tok/s(+4.92%);LPLB 基于线性规划优化冗余专家副本的 token 路由,配合 EPLB 在相同集群上实现吞吐量提升 0.84% 至 7.34%。

推荐理由

SGLang 引入 Waterfill 和 LPLB 两种负载均衡算法,实测 DeepSeek V3/R1 和 V4 吞吐提升最高 7%,用 SGLang 跑 MoE 推理的开发者值得一试。

正文 · AI 翻译

简而言之

混合专家(MoE)模型依赖专家并行(EP)来跨多块 GPU 扩展推理。在 SGLang 中,DeepEP 和 EPLB 在 EP 下提供了高性能服务,但每个 rank 所看到的工作负载仍可能不均衡,因为 token 在各专家之间的路由并不均匀。

本博客介绍 SGLang 中的两项调度时负载均衡功能:

  • Waterfill,一种面向 DeepEP 的轻量级共享专家负载均衡方法。它通过 DeepEP 调度共享专家,并将其分配到负载较低的 rank 上。在两个 Hopper GPU 节点上、采用 DeepSeek-V3/R1 风格的服务工作负载时,Waterfill 在 MMLU、GPQA 和 GSM8K 上将总吞吐量提升了 +1.48% 至 +4.66%。在 DeepSeek V4 上,最佳实测点从 49,253 tok/s 提升至 51,677 tok/s+4.92%)。
  • LPLB,一种面向冗余专家副本的基于线性规划的负载均衡器。它针对冗余专家求解逐层的调度优化问题。在同样两个 Hopper GPU 节点上采用冗余 EPLB 放置时,LPLB 在 MMLU、GPQA 和 GSM8K 上将总吞吐量提升了 +0.84% 至 +7.34%

Waterfill 的工作建立在两个 SGLang PR 之上:EP 下的共享专家融合Waterfill 调度均衡。DeepSeek V4 支持在#25391中加入。LPLB 在#24515中引入。

引言

DeepSeek-V3/R1 和 DeepSeek V4 等大型 MoE 模型使用稀疏专家激活来提升模型容量,同时让每个 token 的计算量保持在可控范围内。在推理过程中,EP 将专家分布到各个 GPU 上,并将 token 路由到拥有所选专家的 rank。这降低了单 GPU 的显存压力,使大规模服务变得可行,但也引入了一个核心的系统问题:路由器并不会生成完全均衡的专家流量

当某些专家接收到的 token 远多于其他专家时,EP 组需要等待最繁忙的 rank。这种不均衡同时影响计算和通信。EPLB 等静态放置方法可以改善专家的长期放置和冗余副本,但单个批次仍可能存在残余不均衡。调度时负载均衡通过在运行时决定哪个物理副本应处理每个 token 或每个共享专家请求,来解决这一剩余缺口。

在 SGLang 中,我们一直在研究两种针对 DeepEP MoE 推理的调度时方法:

  • Waterfill:一种专注于共享专家路径的低开销算法。
  • LPLB:一种基于线性规划的算法,专注于在冗余专家副本之间进行 token 路由。

这两种算法针对的是系统中同一大层面的问题:调度时的 MoE 负载均衡。它们做出了不同的权衡,并在不同的调度选择上运作。

背景:DeepEP MoE 推理中的负载不均衡

DeepEP 通过为专家并行提供优化的 token 分发与合并 kernel,加速 MoE 推理。在典型的 DeepSeek 风格 MoE 层中,每个 token 会被路由到由模型路由器选出的若干个路由专家。部分模型还包含一个共享专家,它会被应用于每一个 token。

从服务系统的角度来看,路由专家和共享专家会产生不同的负载模式:

  • 路由专家是稀疏的。不同的 token 会选择不同的专家,因此它们的负载取决于路由器分布。
  • 共享专家是稠密的。每个 token 都需要共享专家,因此共享专家的工作负载在整个批次中始终存在。
  • 由 EPLB 风格放置方案引入的冗余专家,为某些逻辑专家提供了多个物理副本。这为调度时的负载均衡创造了机会,因为系统可以在不改变模型逻辑专家选择的前提下,选择由哪个物理副本来处理某个 token。

静态专家放置虽有帮助,但无法消除所有运行时的不均衡。一个批次中的实际 token 仍可能集中在部分专家或 rank 上。在 DeepEP 中,这会导致某些 rank 等待过载的对等节点。Waterfill 和 LPLB 都旨在减少这种分发时的不均衡,同时保持模型的语义不变。

Waterfill:面向共享专家分发的轻量级负载均衡

Waterfill 分发策略

Waterfill 是一种面向 DeepEP 下共享专家路径的轻量级负载均衡算法。

如果共享专家始终在每个 rank 上本地计算,那么无论某个 rank 是否已被路由专家过载,它都要承担共享专家的开销。过载的 rank 依然过载,而负载较轻的 rank 也无法帮助分担共享专家的工作。

Waterfill 改变了这一点,它将共享专家视为一个可调度的专家槽位。在路由专家选定之后,Waterfill 会估算每个 EP rank 上当前的路由负载,然后将共享专家的工作分配给负载较低的 rank。从概念上讲,它填补了 rank 负载分布中的低谷,类似于将水倒入高低不平的容器中。

对于每个 token,Waterfill 会为共享专家额外增加一个专家槽位。它不会总是把该槽位分配给 token 所在的本地 rank,而是根据当前负载分布选择一个 rank。这样路由专家的选择保持不变,因此模型仍然计算相同的逻辑路由专家和相同的共享专家。唯一改变的是由哪个物理 rank 执行共享专家的工作

从高层来看,该算法是:

  1. 统计已经落在每个 EP rank 上的路由专家负载。

  2. 将该计数用作每个 rank 的负载分数。在动态模式下,SGLang 首先运行一次 EP 组集合通信,因此该分数可以使用全局路由负载向量加上每个 rank 当前的本地 batch size。

  3. 为每个参与的 token 增加一个共享专家槽位,并计算目标水位线:

    H=rLr+NR

    这里 Lr 是 rank r 的负载分数,N 是要放置的共享专家槽位数量,R 是 EP 组大小。

  4. 低于该水位线的 rank 有空闲余量:

    Sr=max(HLr,0)
  5. 对于每个 token,Waterfill 从候选 rank 中采样共享专家的目标 rank,概率与空闲余量成正比,并带有轻微的本地 rank 偏好。如果所有候选 rank 的空闲余量都为零,则回退到明显更轻的候选 rank,同时仍然保留本地 rank 偏好。

详细的推导过程以及 SGLang 静态/动态行为的确切细节,记录在 Waterfill 调度均衡 PR 中。

这里存在一个重要的通信权衡。如果每个 token 都能把它的共享专家工作发送到任意 EP rank,Waterfill 就会有更大的均衡自由度,但这也可能增加 all-to-all 通信量。对于 GPU MoE 服务而言,通信往往比额外的共享专家计算更昂贵。

因此,通信保守型候选集会把共享专家保留在 token 为路由专家已经访问过的那些 rank 上,并将源 rank 作为回退选项。SGLang 还支持 all-rank 模式,这给 Waterfill 带来更大的均衡自由度,但可能新增一个每 token 的调度目的地。

这是一种刻意的通信权衡,而非模型语义的改变。

通过将共享专家工作从已经负载较重的 rank 转移到负载较轻的 rank,Waterfill 均衡了各 rank 的工作量,并提升了端到端吞吐量。

Waterfill timeline before and after shared-expert balancing

图 1. Waterfill 将共享专家工作从过载的 rank 转移到负载较轻的 rank,同时保持路由专家的选择不变,在不改变模型语义的前提下缩短了最慢的 MoE 层路径。

共享专家融合作为实现机制

通过融合共享专家和路由专家,可以进一步加速 Waterfill。

在 EP 下,共享专家使用的执行路径与路由专家相互独立。在 Waterfill 选定非本地共享专家 rank 之后,这种设计就需要从已分发的路由专家布局中提取共享专家的 token,并单独启动一次共享专家计算,从而带来额外的布局转换和启动开销。

共享专家融合通过将共享专家表示为同一个 DeepEP MoE 布局中的另一个专家槽位,避免了这条路径。在 DeepSeek V3/R1 中,路由器仍然选择原本的路由 top-k 专家,而 TopK 输出会为共享专家额外增加一列。在 DeepEP 的物理专家 ID 布局中,每个 rank 会在其路由专家旁边预留一个额外的共享专家槽位。这使得路由专家和共享专家可以共用同一套 DeepEP 分发、分组 GEMM 和合并流程。

这就是 Waterfill 功能被拆分为两部分的原因:

  • #20089 以固定的本地分配方式将共享专家融合进 DeepEP MoE 路径。
  • #19290 加入了 Waterfill,用负载感知的共享专家分发取代了固定分配。

融合本身并不是最终的负载均衡算法。它是让共享专家分发对 DeepEP 可见、从而可被 Waterfill 控制的必要机制。

LPLB:面向冗余专家副本的基于 LP 的负载均衡

LPLB 所解决的问题

EPLB 会为热点逻辑专家放置冗余副本,然后默认将每个热点专家的 token 均匀地分配到其各个物理副本上。只有当用于构建放置方案的离线分布与实时流量相匹配时,均匀分配才是最优的。而在实践中,情况往往并非如此:单个批次集中的专家与校准集不同,服务所用的数据集偏离了录制数据集,而且再平衡周期足够长,以至于放置方案在许多批次上实际上是静态的。当这种情况发生时,即使将热点专家的负载均匀分配,拥有其副本的那些 rank 相对于 EP 组中的其他 rank 仍然负载不均,整个组都要等待最繁忙的那个 rank。

LPLB 在分发时弥补了这一差距。对于每个 MoE 层、每个批次,它会查看实际的每个专家的 token 数量,并决定如何将每个复制专家的 token 拆分到其各个物理副本上,从而使每个 rank 的最大负载最小化。它不移动权重,也不改变路由器的逻辑 top-k 选择——它只是在某个逻辑专家的各个有效物理副本之间,决定每个副本接收多少流量。其结果是针对当前批次的 min–max 最优分配,而非 EPLB 在离线时固化的静态均匀拆分。

LP 形式化

LPLB 将此建模为每层求解的一个小型线性规划。其直觉直接映射到约束条件上:

  • 目标——最小化峰值。 引入一个标量 M,表示所有 rank 上的最大负载,并将其最小化。将 M 压低会把最繁忙的 rank 拉向平均值,而这正是缩短由 EP 不均衡所产生的 grouped-GEMM 长尾的关键。
  • Rank 负载约束。 对于每个 rank,(来自其冗余专家副本的负载)+(来自其单副本专家的负载)+(到峰值的松弛量)= M。每个 rank 上的单副本负载是固定输入——这些专家没有调度选择。每个 rank 得到这样一个等式;松弛量非负,因此 M 被强制至少不小于每个 rank 的真实负载。
  • 冗余专家守恒。 对于每个被复制的逻辑专家,分配给其各副本的负载之和必须等于该专家观测到的总负载:x1+x2+...+xn=L,其中 xi 是放置在副本 i 上的负载,L 是该专家观测到的总负载。这保证了 LPLB 只重新分配现有流量,绝不会凭空产生或丢弃 token。

决策变量是被复制专家的各副本负载,加上每个 rank 的松弛量以及 M。单副本专家不是变量——它们只贡献固定项——这使得 LP 规模很小:其规模随 冗余专家的数量和 rank 的数量而扩展,而非随完整的专家总数扩展。

约束矩阵被拆分为离线部分和在线部分。结构性块——副本到逻辑专家的映射、复制副本在各 rank 上的归属,以及 slack/−M 列——只取决于专家到 GPU 的放置方式,因此它们在启动时以及每次 EPLB 重新平衡后预先计算一次。只有右端项会随每个 batch 变化:观测到的冗余专家负载以及各 rank 的单副本负载。一个 Big-M 辅助列在求解过程中保持系统可行,并在目标函数中被施以重罚,从而驱使求解器将其压至零。

从全局计数到求解 LP

DP-attention 的一个微妙之处在于,不同的 EP rank 在同一步中运行不同的前向模式——prefill、decode 或 idle——因此没有任何单个 rank 能看到全局 token 分布。LPLB 通过一种刻意简单的集合通信设计来处理这一点:

  1. 每个 rank 统计其本地 token 在各逻辑专家上的数量。
  2. 所有 EP rank 都参与对这些计数的一次 all-reduce——idle 的 rank 贡献零——因此每个 rank 最终都得到完全相同的全局各专家分布。
  3. 随后每个 rank 都基于这些完全相同的输入独立求解同一个 LP,并得到相同的解,因此无需广播结果

LP 本身通过一个基于 cuSOLVERDx/cuBLASDx 构建的融合内点法(IPM)kernel 在 GPU 上求解,并在启动时针对该层的矩阵形状预先编译,因此第一个真实请求无需承担 JIT 编译开销。整个逐批次路径——构建右端项、求解、提取每个副本的分配——被压缩为三次 CUDA kernel 启动,写入预分配的缓冲区,从而将启动开销和主机同步移出关键路径。

从 LP 求解到 Token 分发

LP 为每个复制的逻辑专家返回其负载应当如何在其各个物理副本之间分配。LPLB 将其归一化为该专家在有效物理副本上的概率分布(log2phy_prob)。在分发时,每个路由到某个复制逻辑专家的 token 从该分布中采样一个物理副本;单副本专家则像之前一样映射到其唯一的物理位置。这是对现有 dynamic 策略的直接替换,后者以均匀随机方式选取副本——LPLB 保持相同的概率化、逐 token 分发形态,但将均匀抽取替换为针对该批次计算出的负载最优分布。

LPLB load-aware split across redundant expert replicas

图 2. LPLB 在不改变逻辑专家路由的情况下,将复制专家的流量转向负载较轻的 rank,因此当存在冗余副本时,同一个被选中的专家可以在负载较低的物理副本上完成计算。

LPLB 与 Waterfill 有何不同

Waterfill 和 LPLB 的最终目标相同——在 DeepEP 下压平每个 rank 的负载——但作用于不同的分发选择,且所用机制不同:

WaterfillLPLB
Target共享(稠密)专家,应用于每一个 token路由专家,EPLB 已复制
决策哪个 rank 执行每个 token 的共享专家槽位如何将每个复制专家的 token 拆分到其各个物理副本上
方法基于当前 rank 负载的轻量级填谷启发式在 GPU 上求解的逐层最小–最大线性规划
要求共享专家融合存在 EPLB 冗余副本
成本近乎零开销每层一次 all-reduce 加一次 LP 求解

它们是互补而非竞争关系:Waterfill 消除由稠密共享专家带来的不均衡,而 LPLB 消除稀疏路由副本之间的不均衡。由于 LPLB 只在同一逻辑专家的有效副本之间重新分配流量,且从不改变路由器的逻辑 top-k,因此它出于与 Waterfill 相同的原因保持了模型语义不变。

LPLB 何时帮助最大

LPLB 的收益取决于实时批次偏离 EPLB 校准所依据的分布的程度。当流量均衡良好且批次巨大(大规模、高度多样化的服务)时,留给 LP 消除的残余不均衡很少。当流量基本不变且范围狭窄(少量几乎相同的问题)时,静态 EPLB 已经捕捉到了该分布,均分已接近最优。LPLB 在两者之间给出最强的信号——中等规模的服务,聚焦于数量适中的相关主题,此时每个批次的不均衡方式超出了离线放置的预期,但其结构仍足够清晰,使得每批次的最优划分能够有意义地降低峰值 rank 负载。

评估

Waterfill 与 LPLB 在 DeepSeek V3/R1 上的表现

我们在相同的 DeepSeek-V3/R1 风格服务配置上评估了 Waterfill 和 LPLB。下表对应直接集成 SGLang 的运行结果 dsv3_ep16_three_dataset_lplb_matrix_20260605_101821,使用的 SGLang 提交为 a462e0f864103785fd3e64327104103f1356f220

基准配置如下:

  • 模型:DeepSeek-V3 FP8,用作 DeepSeek-V3/R1 风格的服务工作负载。
  • 硬件:两个 Hopper GPU 节点,共 16 块 GPU。
  • 并行与后端:TP16、DP16、EP16、DP attention、DeepEP normal 模式。
  • 数据集:MMLU、GPQA 和 GSM8K 提示词池。
  • 基准形态:batch_size=1000concurrency=256request_rate=infmax_tokens=1

该表格将每组对比限制在相同的放置配置内。LPLB 仅在启用 EPLB 放置时才有意义,因为它是在同一逻辑专家的多个有效物理副本之间进行路由。

数据集基线设置基线WaterfillWaterfill 增益LPLBLPLB 增益
MMLU无 EPLB28,968 tok/s29,697 tok/s+2.52%--
MMLUStatic EPLB, red030,392 tok/s31,424 tok/s+3.40%29,938 tok/s-1.50%
MMLUStatic EPLB, red1630,638 tok/s31,483 tok/s+2.76%31,104 tok/s+1.52%
MMLU静态 EPLB,red3230,714 tok/s31,169 tok/s+1.48%31,547 tok/s+2.72%
GPQA无 EPLB23,201 tok/s24,283 tok/s+4.66%--
GPQA静态 EPLB,red026,322 tok/s26,970 tok/s+2.46%25,899 tok/s-1.61%
GPQAStatic EPLB, red1626,124 tok/s26,683 tok/s+2.14%26,350 tok/s+0.86%
GPQAStatic EPLB, red3225,975 tok/s26,655 tok/s+2.62%26,193 tok/s+0.84%
GSM8KNo EPLB29,649 tok/s30,892 tok/s+4.19%--
GSM8KStatic EPLB,red033,058 tok/s34,529 tok/s+4.45%32,744 tok/s-0.95%
GSM8KStatic EPLB,red1634,026 tok/s35,226 tok/s+3.53%35,474 tok/s+4.26%
GSM8KStatic EPLB,red3233,988 tok/s35,070 tok/s+3.19%36,482 tok/s+7.34%

Waterfill throughput on DeepSeek V3/R1-style workloads

图 3. 在 MMLU、GPQA 和 GSM8K 上,Waterfill 通过将共享专家的工作转移到负载较低的 EP rank,持续将总吞吐量提升至高于匹配基线的水平。

LPLB throughput on DeepSeek V3/R1-style workloads

图 4. 当存在冗余专家副本(red16/red32)时,LPLB 能提升吞吐量,因为 LP 有物理副本可供选择。而在 red0 的情况下,没有冗余副本可供重新平衡,因此该算法无法改善分发,其 all-reduce/求解路径仅表现为额外开销。

这些结果表明,Waterfill 在保持模型质量的同时提升了吞吐量,因为它只改变物理共享专家的放置,而不改变逻辑专家计算。当冗余专家副本提供了有用的分发选择时,LPLB 表现最强,如 red16 和 red32 行所示。相比之下,当未提供冗余专家时,LPLB 没有空间来平衡负载,因此仅表现出算法开销。

Waterfill 在 DeepSeek V4 上的应用

DeepSeek V4 可以使用 HashTopK 路由路径,此时 Waterfill 还必须在 HashTopK 输出路径中追加并重新映射共享专家槽位。#25391 将 Waterfill 扩展到了该路径。共享专家平衡这一思路本身并不特定于 HashTopK;它也适用于非 HashTopK 的路由路径。

DeepSeek V4 Flash FP8 在两个 Hopper GPU 节点上,在 MMLU 风格的服务负载上展现出持续稳定的吞吐量提升。本次 V4 Flash 运行使用 14,042 条提示词的 MMLU 池,batch=512,concurrency=128,max_tokens=1,2 轮预热,4 轮测量。表中报告的是截尾平均总吞吐量。由于本次 V4 Flash 运行使用了更小的 batch/concurrency 配置,这些数字应被理解为 V4 专属验证,而非与上述 DeepSeek-V3/R1 风格矩阵的直接吞吐量对比。

配置基线注水增益
无 EPLB45,951 tok/s47,876 tok/s+4.19%
静态 EPLB,red049,253 tok/s51,677 tok/s+4.92%
静态 EPLB,red1650,006 tok/s51,655 tok/s+3.30%
静态 EPLB,red3250,167 tok/s51,813 tok/s+3.28%

Waterfill throughput on DeepSeek V4 Flash

图 5. Waterfill 在 DeepSeek V4 Flash 上同样有效,在无 EPLB 和静态 EPLB 设置下均提升了吞吐量,增益从 +3.28% 到 +4.92%。

这些结果验证了 Waterfill 在 DeepSeek V4 Flash 上同样保持正向效果,与上述 DeepSeek-V3/R1 风格的工作负载一致。

精度验证

Waterfill 保持了模型语义,因为它不改变路由器的逻辑 top-k 决策。模型所选择的路由专家保持不变,共享专家仍是同一个共享专家。Waterfill 只改变由哪个物理 EP rank 执行共享专家槽位。

LPLB 出于相同的结构性原因保持了模型语义。它从不改变路由器的逻辑 top-k;它只选择由所选逻辑专家的哪个物理副本来执行每个 token。由于一个逻辑专家的所有副本都持有相同的权重,token 所获得的结果与由哪个副本处理无关。这与 EPLB 以及 dynamic 策略已经依赖的精度保证相同。

如何使用

启用 Waterfill

Waterfill 通过 DeepEP MoE 路径启用。一条代表性的启动命令为:

python3 -m sglang.launch_server \
    --model-path /path/to/DeepSeek-V3 \
    --tp 16 \
    --dp-size 16 \
    --nnodes 2 \
    --node-rank ${NODE_RANK} \
    --dist-init-addr ${HEAD_NODE_IP}:${PORT} \
    --host 0.0.0.0 \
    --port 30000 \
    --trust-remote-code \
    --moe-a2a-backend deepep \
    --deepep-mode normal \
    --enable-dp-attention \
    --enable-deepep-waterfill \
    --init-expert-location /path/to/expert_distribution.pt

关键标志位如下:

  • --moe-a2a-backend deepep:使用 DeepEP 进行 MoE all-to-all dispatch。
  • --enable-deepep-waterfill:启用共享专家融合与 Waterfill 路径。
  • --init-expert-location:可选地根据收集到的专家分布统计数据,初始化专家放置和 rank 负载元数据。

DeepSeek V4 支持使用 HashTopK 路径,该路径在 #25391 中添加。

启用 LPLB

LPLB 是通过 DeepEP MoE 路径上的 EP 调度算法选出的。由于 LPLB 会在冗余副本之间均衡 token,它要求 EPLB 的放置方案中确实包含冗余专家。一个具有代表性的双节点启动命令如下:

python3 -m sglang.launch_server \
    --model-path /path/to/DeepSeek-R1 \
    --tp 16 \
    --dp-size 16 \
    --ep-size 16 \
    --nnodes 2 \
    --node-rank ${NODE_RANK} \
    --dist-init-addr ${HEAD_NODE_IP}:${PORT} \
    --host 0.0.0.0 \
    --port 30000 \
    --trust-remote-code \
    --moe-a2a-backend deepep \
    --deepep-mode normal \
    --enable-dp-attention \
    --ep-num-redundant-experts 16 \
    --ep-dispatch-algorithm lp \
    --init-expert-location /path/to/expert_stats.pt

重要的标志如下:

  • --ep-dispatch-algorithm lp:选择 LPLB 线性规划调度器,以替代默认的 static 或均匀随机的 dynamic 策略。
  • --ep-num-redundant-experts:为热点逻辑专家创建冗余物理副本。没有这些副本,LPLB 就无从均衡——这正是上表中 red0 各行显示 LPLB 没有带来增益的原因。
  • --init-expert-location:加载从专家分布记录运行中收集到的静态 EPLB 放置方案(物理到逻辑的映射,包括冗余槽位)。此处的副本数量必须与 --ep-num-redundant-experts 保持一致。

致谢

本工作基于 SGLang DeepEP 和 MoE 服务栈构建,并通过 SGLang 项目中的社区协作开发完成。

我们感谢 SGLang 维护者和审阅者在相关 PR 中提供的讨论、审阅和集成支持:

我们衷心感谢为本工作做出贡献的人员:

  • NVIDIA 团队:Xuting Zhou、Fei Liang 和 Aichen Feng
  • SGLang 团队:Cheng Wan

我们还要感谢 DeepSeek 在 deepseek-ai/LPLB 开源了他们的 LPLB 工作,其用于在冗余专家副本之间平衡 token 的线性规划公式,启发了本文所述的 SGLang LPLB 集成。

来源:LMSYS:Blog(Chatbot Arena 团队)· lmsys.org