Prhub

#29640 Add Qwen3 MoE tests for PP compatibility with CP and DP

原始 PR 作者 ShangmingCai 合并时间 2026-06-29 18:52 文件变更 1 提交数 3 评论 3 代码增减 +111 / -0

执行摘要

为 Qwen3 MoE 添加 PP×CP 和 PP×DP 的 GSM8K 精度测试

We have CI coverage for Pipeline Parallelism (PP) on its own and for Context Parallelism (CP) / DP attention on their own, but no test that exercises PP composed with another parallel strategy. Regressions in the cross-strategy plumbing would currently slip through.

建议开发者在修改并行策略相关代码(如调度器、通信层、PP proxy)时,关注此测试的 CI 结果。此 Mixin 模式简洁,值得在其他组合测试中复用。可考虑后续扩展更多模型和评估集以进一步增强覆盖。

讨论亮点

仅有一条来自 gemini-code-assist[bot] 的评论,指出 SimpleNamespace 中的 hostport 属性在 run_eval 中未被使用,且 port 解析可能因 URL 格式不同而失败,建议移除。作者在后续 fix commit 中已移除这两个属性,最终代码干净简洁,问题已解决。

实现拆解

实现分为 5 个步骤:

  1. test/registered/pp/test_pp_parallel_compat.py 中定义 Mixin 类 _Qwen3MoePPCompatMixin,封装 SGLang 服务启动(通过 popen_launch_server)和 GSM8K 精度评估逻辑(通过 run_eval),该类不继承 TestCase,避免被独立收集。
  2. 定义两个具体测试子类继承 Mixin 和 CustomTestCaseTestQwen3MoePPxCP 配置 PP×CP(--pp-size 2 --attn-cp-size 2 --cp-strategy zigzag 等,并设置环境变量 SGLANG_ENABLE_CP_V2=1);TestQwen3MoePPxDP 配置 PP×DP(--pp-size 2 --dp-size 2 --enable-dp-attention)。
  3. 通过 register_cuda_ci 将测试注册到 CI 的 extra-b 阶段,指定 runner_config 为 4-gpu-h100,预估执行时间 600 秒。
  4. 设置 GSM8K 门控阈值 GSM8K_BASELINE_ACCURACY = 0.93,采样参数 temperature=0.6, top_p=0.95, top_k=20,使用 200 个示例,与现有 CP 测试保持一致(参考 test/registered/cp/test_gqa_preill_cp.py)。
  5. 服务启动的通用参数包括 --cuda-graph-max-bs-decode 32 --max-running-requests 32 --trust-remote-code --disable-piecewise-cuda-graph 以及多线程模型加载配置,确保测试环境稳定。
文件 模块 状态 重要度
test/registered/pp/test_pp_parallel_compat.py 并行测试 added 7.49

关键符号

setUpClass tearDownClass test_gsm8k

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

移除未使用的 host 和 port 参数 正确性

gemini-code-assist[bot] 评论指出 SimpleNamespace 中的 host 和 port 属性在 run_eval 中未被使用,且 port 解析可能因 URL 格式不同而失败,建议移除。

结论:作者在后续 commit 中移除了这两个属性,最终代码干净简洁。 · 已解决

风险与影响

  1. 随机波动风险:GSM8K 精度门控基于随机采样(200 条),不同运行可能因种子或模型加载顺序波动,偶发低于阈值 0.93 导致 CI 失败。
  2. 外部依赖风险:测试需要从 HuggingFace 下载 Qwen/Qwen3-30B-A3B-FP8 模型,网络不稳定或模型更新可能导致超时或失败。
  3. 资源消耗:使用 4 块 GPU,CI 排队时间可能增加,且占用较多集群资源。
  4. 覆盖有限:仅测试一个模型和一个数据集,无法保证所有跨并行组合场景无回归。

对 CI 流程增加约 600 秒的额外执行时间(extra-b 阶段),但填补了关键的组合并行测试空白。开发者修改涉及 PP、CP、DP 调度的代码时,应确保此测试通过,否则可能引入回归。对最终用户无直接交互影响,但长期可提高系统在组合并行下的稳定性。

随机精度门控 外部模型依赖 4-GPU 资源消耗

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论