执行摘要
- 一句话:为 DeepSeek-V4 CP 启用 Mori A2A 后端
- 推荐动作:该 PR 值得精读,因为它展示了一个最小化、聚焦的后端启用模式。值得关注的设计决策包括:将门控放宽在 hook 和模型侧两处同步修改,以及在不改动核心逻辑的前提下信任 Mori 与 DeepEP 路径的一致性。若后续要扩展其他后端,可参考此模式。
功能与动机
DeepSeek-V4 的预填充上下文并行此前会拒绝 moe_a2a_backend=mori,尽管 Mori 与 DeepEP 使用相同的 rank-local EP 分发/合并路径。PR 描述中明确说明,这两个 CP 门控排除 mori 的原因是“未经测试”而非“不兼容”。该变更旨在让用户能够在 CP 场景下使用 Mori,从而充分利用其性能优势。
实现拆解
实现拆解
-
扩展 CP 校验白名单:在 python/sglang/srt/arg_groups/deepseek_v4_hook.py 的 validate_deepseek_v4_cp 中,将 mori 添加到 supported_a2a_backends 元组中,并更新错误消息以反映新的支持集合。
-
放宽模型侧后端门控:在 python/sglang/srt/models/deepseek_v4.py 的 _run_moe_ffn_dp_sync 中,将 mori 加入 is_deepep() or is_megamoe() 的断言,使 CP 分支允许 mori 后端。
-
保留原有操作语义:不修改调度器、集合通信或计算内核。Mori 路径仍走 forward_deepep 的 combine 逻辑,不执行 a2a=none 时的 CP gather/reduce-scatter,因此复制的共享专家只添加一次。
-
配置与测试配套:无直接测试文件变更;通过 8xMI355X 环境的手工验证(40/40 稳定首 token 匹配,4K–16K 长度匹配)来保障正确性。
关键文件:
python/sglang/srt/models/deepseek_v4.py(模块 模型运行;类别 source;类型 data-contract;符号 _run_moe_ffn_dp_sync): 模型侧核心路径,修改 CP 分支的 A2A 后端断言,允许 mori,是使 CP 与 Mori 兼容的关键。
python/sglang/srt/arg_groups/deepseek_v4_hook.py(模块 参数校验;类别 source;类型 core-logic;符号 validate_deepseek_v4_cp): 参数校验 hook,更新 CP 的白名单以包含 mori,确保用户配置能通过校验。
关键符号:_run_moe_ffn_dp_sync, validate_deepseek_v4_cp
关键源码片段
python/sglang/srt/models/deepseek_v4.py
模型侧核心路径,修改 CP 分支的 A2A 后端断言,允许 mori,是使 CP 与 Mori 兼容的关键。
# python/sglang/srt/models/deepseek_v4.py 中的 CP 分支
if _use_cp:
moe_a2a_backend = get_moe_a2a_backend()
if moe_a2a_backend.is_none():
hidden_states = dsa_cp_gather_hidden_states(hidden_states)
else:
# 允许 deepep、megamoe 和 mori 作为 CP 的 A2A 后端
assert (
moe_a2a_backend.is_deepep()
or moe_a2a_backend.is_megamoe()
or moe_a2a_backend.is_mori()
), (
"CP requires moe_a2a_backend in ('deepep', 'megamoe', 'mori'), "
f"got {moe_a2a_backend.value!r}."
)
评论区精华
Review 评论为空,但 PR 作者在 body 中详细说明了安全性论证。审查者 1am9trash 批准了 PR,并评价“Only release gate to make mori runnable with pcp.”,确认这是一次最小化的门控放开。
风险与影响
- 风险:技术风险:
- 代码路径风险:CP + Mori 组合此前未在代码中启用,虽然 Mori 与 DeepEP 路径相似,但在极端 token 分布下可能存在未预期的数值差异。
- 共享专家计数风险:PR 声明 Mori 不受 #35535 影响,因为其走
forward_deepep combine 后只添加一次共享专家;但若未来对 a2a=none 路径的修复发生回归,需警惕。
- 性能风险:Mori 动态容量限制及 CP-v1 的 one-token-per-rank GPU 错误是已知外部问题,可能影响性能或稳定性。
- 测试覆盖缺失:未添加自动化测试,依赖手工验证,存在回归风险。
- 影响:影响范围:影响所有使用 DeepSeek-V4 预填充 CP 且希望使用 Mori 后端的用户。本变更未改变默认行为(默认仍是
none),因此对现有用户影响较小,但对 AMD 平台用户提供了新选择。对团队而言,需要维护新增的门控逻辑,并关注未来 CP+Mori 组合的稳定性。
- 风险标记:核心路径变更, 缺少测试覆盖
关联脉络
- PR #35535 Fix replicated (TP1) shared expert being summed by collectives that skip the MoE all-reduce: 本 PR 的安全论证依赖 #35535 中关于 Mori 不受 CP gather/reduce-scatter 影响的分析,两者在共享专家处理上相关。
参与讨论