Prhub

#28536 ci: run GB300 nightly suite in the standard Nvidia nightly workflow

原始 PR 作者 alisonshao 合并时间 2026-06-20 03:24 文件变更 11 提交数 8 评论 9 代码增减 +72 / -197

执行摘要

将 GB300 夜间测试接入标准 Nvidia 工作流

GB300夜间测试套件(nightly-4-gpu-gb300)自PR #21487添加以来,虽已有8个注册测试,但从未在CI工作流中调度执行。此前依赖一个无GB300 runner的外部集群运行cronjob,导致测试实际处于空转状态。现在仓库具备了4-gpu-gb300 runner,需要将该套件接入标准Nvidia夜间CI,使其按计划自动运行并作为质量门禁的一部分。

建议批准该PR,但需注意:

  1. 首次合并后手动触发nightly-test-perf-4-gpu-gb300作业验证全流程。
  2. 关注测试timeout风险,若常超时增加timeout-minutes或拆分测试。
  3. 审查测试参数调整的准确性(尤其是baseline accuracy改动)。
    值得学习的设计点:针对特定硬件的测试策略从全量回归聚焦到最优量化模式(NVFP4),可推广到其他硬件平台。
讨论亮点
  • 测试范围决策:Fridge003 明确“仅需在GB300上测试NVFP4模型,DeepSeek V3.2的checkpoint可以从夜间测试中移除”。
  • Qwen3.5 NVFP4禁用确认:mmangkad 发现禁用的是NVFP4而非FP8,Fridge003 解释“NVFP4推理需求较少,FP8在训练场景仍常用”。
  • Kimi NVFP4调整:mmangkad 添加了token speed MLA优化,并移除了不支持的native MTP。

实现拆解

  1. 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_filtercheck-all-jobs.needs
  2. 测试范围精简化:删除test_deepseek_v32_nvfp4.pytest_deepseek_v32.py(DeepSeek V3.2 NVFP4/BF16),将test_qwen35_nvfp4.py标记为disabled="not needed"
  3. 剩余测试配置更新:调整test_glm5_nvfp4.pytest_qwen35_fp8.py等文件的变体结构(移除非MTP变体,区分TP/DP的EAGLE参数),更新baseline accuracy,并微调performance_test_runner.pyrun_suite.py
文件 模块 状态 重要度
.github/workflows/nightly-test-nvidia.yml CI 工作流 modified 5.38
test/registered/gb300/test_deepseek_v32_nvfp4.py DeepSeek 测试 removed 6.92
test/registered/gb300/test_deepseek_v32.py DeepSeek 测试 removed 6.91
test/registered/gb300/test_glm5_nvfp4.py GLM 测试 modified 4.96
test/registered/gb300/test_qwen35_fp8.py Qwen 测试 modified 5.01
test/registered/gb300/test_qwen35_nvfp4.py Qwen 测试 modified 4.2

关键符号

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 test-coverage

修改的测试文件,调整变体结构并更新 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 类似,此处省略重复部分。

评论区精华

测试范围决策 设计

Fridge003 提出仅测试 NVFP4 模型,移除 DeepSeek V3.2 检查点。

结论:采纳,删除了 DeepSeek V3.2 的两个测试文件。 · 已解决

Qwen3.5 NVFP4 禁用确认 question

mmangkad 询问是否误禁用了 NVFP4 而非 FP8。

结论:Fridge003 确认主动禁用 NVFP4,因推理需求少。 · 已解决

Kimi NVFP4 参数调整 other

mmangkad 添加 token speed MLA 并移除不支持的 native MTP。

结论:已应用到 test_kimi_k25_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 作业依赖特定硬件 超时风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论