执行摘要
- 一句话:为 Qwen3 MoE 添加 PP×CP 和 PP×DP 的 GSM8K 精度测试
- 推荐动作:建议开发者在修改并行策略相关代码(如调度器、通信层、PP proxy)时,关注此测试的 CI 结果。此 Mixin 模式简洁,值得在其他组合测试中复用。可考虑后续扩展更多模型和评估集以进一步增强覆盖。
功能与动机
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.
实现拆解
实现分为 5 个步骤:
- 在
test/registered/pp/test_pp_parallel_compat.py 中定义 Mixin 类 _Qwen3MoePPCompatMixin,封装 SGLang 服务启动(通过 popen_launch_server)和 GSM8K 精度评估逻辑(通过 run_eval),该类不继承 TestCase,避免被独立收集。
- 定义两个具体测试子类继承 Mixin 和
CustomTestCase:TestQwen3MoePPxCP 配置 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)。
- 通过
register_cuda_ci 将测试注册到 CI 的 extra-b 阶段,指定 runner_config 为 4-gpu-h100,预估执行时间 600 秒。
- 设置 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)。
- 服务启动的通用参数包括
--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(模块 并行测试;类别 test;类型 test-coverage;符号 _Qwen3MoePPCompatMixin, setUpClass, tearDownClass, test_gsm8k): 唯一变更文件,新增整个测试套件,覆盖 PP×CP 和 PP×DP 两种组合并执行 GSM8K 精度门控。
关键符号:setUpClass, tearDownClass, test_gsm8k
评论区精华
仅有一条来自 gemini-code-assist[bot] 的评论,指出 SimpleNamespace 中的 host 和 port 属性在 run_eval 中未被使用,且 port 解析可能因 URL 格式不同而失败,建议移除。作者在后续 fix commit 中已移除这两个属性,最终代码干净简洁,问题已解决。
- 移除未使用的 host 和 port 参数 (correctness): 作者在后续 commit 中移除了这两个属性,最终代码干净简洁。
风险与影响
- 风险:
- 随机波动风险:GSM8K 精度门控基于随机采样(200 条),不同运行可能因种子或模型加载顺序波动,偶发低于阈值 0.93 导致 CI 失败。
- 外部依赖风险:测试需要从 HuggingFace 下载
Qwen/Qwen3-30B-A3B-FP8 模型,网络不稳定或模型更新可能导致超时或失败。
- 资源消耗:使用 4 块 GPU,CI 排队时间可能增加,且占用较多集群资源。
- 覆盖有限:仅测试一个模型和一个数据集,无法保证所有跨并行组合场景无回归。
- 影响:对 CI 流程增加约 600 秒的额外执行时间(extra-b 阶段),但填补了关键的组合并行测试空白。开发者修改涉及 PP、CP、DP 调度的代码时,应确保此测试通过,否则可能引入回归。对最终用户无直接交互影响,但长期可提高系统在组合并行下的稳定性。
- 风险标记:随机精度门控, 外部模型依赖, 4-GPU 资源消耗
关联脉络
参与讨论