执行摘要
- 一句话:将GB300夜间测试接入标准Nvidia工作流
- 推荐动作:建议批准该PR,但需注意:
- 首次合并后手动触发
nightly-test-perf-4-gpu-gb300作业验证全流程。
- 关注测试timeout风险,若常超时增加timeout-minutes或拆分测试。
- 审查测试参数调整的准确性(尤其是baseline accuracy改动)。
值得学习的设计点:针对特定硬件的测试策略从全量回归聚焦到最优量化模式(NVFP4),可推广到其他硬件平台。
功能与动机
GB300夜间测试套件(nightly-4-gpu-gb300)自PR #21487添加以来,虽已有8个注册测试,但从未在CI工作流中调度执行。此前依赖一个无GB300 runner的外部集群运行cronjob,导致测试实际处于空转状态。现在仓库具备了4-gpu-gb300 runner,需要将该套件接入标准Nvidia夜间CI,使其按计划自动运行并作为质量门禁的一部分。
实现拆解
- CI工作流扩展:在
.github/workflows/nightly-test-nvidia.yml中新增nightly-test-perf-4-gpu-gb300作业,使用4-gpu-gb300 runner,执行run_suite.py --suite nightly-4-gpu-gb300,并注册到workflow_dispatch.job_filter和check-all-jobs.needs。
- 测试范围精简化:删除
test_deepseek_v32_nvfp4.py和test_deepseek_v32.py(DeepSeek V3.2 NVFP4/BF16),将test_qwen35_nvfp4.py标记为disabled="not needed"。
- 剩余测试配置更新:调整
test_glm5_nvfp4.py、test_qwen35_fp8.py等文件的变体结构(移除非MTP变体,区分TP/DP的EAGLE参数),更新baseline accuracy,并微调performance_test_runner.py和run_suite.py。
关键文件:
.github/workflows/nightly-test-nvidia.yml(模块 CI工作流;类别 infra;类型 infrastructure): 核心变更文件,新增GB300夜间测试作业,注册到工作流调度和门禁依赖。
test/registered/gb300/test_deepseek_v32_nvfp4.py(模块 DeepSeek测试;类别 test;类型 deletion;符号 TestDeepseekV32Nvfp4, test_deepseek_v32_nvfp4): 删除的测试文件,代表DeepSeek V3.2 NVFP4模型测试被移除,体现测试范围调整。
test/registered/gb300/test_deepseek_v32.py(模块 DeepSeek测试;类别 test;类型 deletion;符号 TestDeepseekV32, test_deepseek_v32): 删除的测试文件,代表DeepSeek V3.2 BF16模型测试被移除,与NVFP4版一同删除。
test/registered/gb300/test_glm5_nvfp4.py(模块 GLM测试;类别 test;类型 test-coverage): 修改的测试文件,体现了变体精简和MTP参数分离的设计决策。
test/registered/gb300/test_qwen35_fp8.py(模块 Qwen测试;类别 test;类型 test-coverage): 修改的测试文件,调整变体结构并更新baseline accuracy,反映测试参数演进。
test/registered/gb300/test_qwen35_nvfp4.py(模块 Qwen测试;类别 test;类型 test-coverage): 禁用Qwen3.5 NVFP4测试,体现测试策略调整。
关键符号:TestDeepseekV32Nvfp4.test_deepseek_v32_nvfp4, TestDeepseekV32.test_deepseek_v32, TestGlm5Nvfp4.test_glm5_nvfp4, TestQwen35Fp8.test_qwen35_fp8, TestQwen35Nvfp4.test_qwen35_nvfp4
关键源码片段
test/registered/gb300/test_qwen35_fp8.py
修改的测试文件,调整变体结构并更新baseline accuracy,反映测试参数演进。
# 关键变更说明
# 1. COMMON_ARGS 增加 "--mamba-scheduler-strategy=extra_buffer"
# 2. 移除非 MTP 变体,原 MTP_ARGS 拆分为 TP_MTP_ARGS 和 DP_MTP_ARGS
# TP_MTP_ARGS: --speculative-num-steps=3, --speculative-num-draft-tokens=4
# DP_MTP_ARGS: --speculative-num-steps=1, --speculative-num-draft-tokens=2
# 3. baseline_accuracy 从 0.78 降至 0.76
# 完整代码结构与 test_glm5_nvfp4.py 类似,此处省略重复部分。
评论区精华
风险与影响
- 风险:
- 测试覆盖漏洞:移除了DeepSeek V3.2的BF16和NVFP4测试,若后续需要回归这些模型在GB300上的表现,将无CI覆盖。此决策基于当前业务需求,但如果需求变化,需重新添加。
- 新CI作业稳定性:GB300 runner为ARM64架构,依赖
ci_install_dependency.sh的aarch64分支处理。首次运行可能暴露环境兼容问题(如软件包依赖)。
- 超时风险:单个job timeout-minutes=600,按8个测试顺序执行(每个est_time=7200秒),最大耗时16小时,已超出600分钟(10小时)。实际可能因test_time小于est_time而缩短,但仍存在超时风险。建议评估是否需增加timeout-minutes或拆分测试。
- 硬件可用性:
4-gpu-gb300 runner数量有限,可能影响调度频率和可靠性。
- 影响:
- CI体系:GB300夜间测试从外部cronjob迁移至仓库CI,统一入口和监控,提升可观测性和可靠性。
- 测试团队:维护者可直接在GitHub Actions查看GB300测试结果,无需访问外部集群日志。
- 模型验证:GB300测试范围从全模型(BF16+NVFP4)缩小为仅NVFP4,与Grace-Blackwell架构的NVFP4高效推理定位一致。
- 用户:无直接用户影响,但保证GB300平台的质量门禁有效。
- 风险标记:测试覆盖缩小, 新CI作业依赖特定硬件, 超时风险
关联脉络
- PR #21487 Add GB300 nightly suite (tests only, no workflow): 添加了GB300测试套件但未接入CI工作流,本PR完成其集成。
参与讨论