Prhub

#21487 feat(ci): add GB300 nightly benchmark test suites

原始 PR 作者 Kangyan-Zhou 合并时间 2026-03-29 12:54 文件变更 11 提交数 17 评论 9 代码增减 +874 / -4

执行摘要

为 GB300 硬件添加 8 个模型 nightly 基准测试套件,支持 NVFP4 和 FP8 变体。

根据PR body,目标是'为GB300(4x B200 NVL4, arm64)添加nightly benchmark测试套件',并'Designed for K8s CronJob orchestration with sequential per-model execution and cleanup',表明为了自动化CI流水线和硬件特定测试覆盖。Issue评论中Fridge003提到'maybe cc @nvpohanh , we can split some of our CI tasks here',进一步支持分摊CI任务的动机。

建议技术管理者和工程师精读此PR以学习如何扩展测试套件和集成外部评估工具。重点关注:

  • _run_nemo_skills_eval函数的实现,它展示了依赖隔离、缓存和错误处理的设计模式。
  • 变体配置的组织方式,如何通过ModelLaunchSettings支持多个运行变体。
  • 同时,注意未采纳的review建议,考虑未来改进profile_dir的动态派生以提高代码可维护性。
讨论亮点

review评论中,gemini-code-assist[bot]在多个测试文件上提出了唯一的核心讨论点:profile_dir硬编码问题。例如,评论指出'The profile_dir string is hardcoded. Consider deriving it dynamically from the test_name to reduce repetition and potential for inconsistencies.' 并提供了代码建议。但没有进一步的讨论或决策结论,建议未被采纳或修改,状态为未解决,焦点是设计权衡以提高维护性。

实现拆解

实现方案按模块拆解:

  1. 新增测试文件:在test/registered/gb300/目录下添加8个文件,如test_deepseek_v32.py,每个文件定义特定模型变体(NVFP4或FP8)的测试参数,包括模型路径、额外参数和变体配置,使用run_combined_tests运行。
  2. 测试运行器增强:修改python/sglang/test/accuracy_test_runner.py,新增_run_nemo_skills_eval函数和辅助函数_get_nemo_venv_ensure_nemo_data_prepared,通过隔离uv venv集成NeMo Skills进行MMMU-Pro评估,并缓存数据和环境以提高效率。
  3. 测试结果展示:修改python/sglang/test/run_combined_tests.py,在模型结果中添加variant字段,并在失败消息中显示变体名称,提升调试清晰度。
  4. CI套件注册:修改test/run_suite.py,将新套件'nightly-4-gpu-gb300'添加到CUDA CI套件列表中,支持CI系统发现和调度。
文件 模块 状态 重要度
test/registered/gb300/test_deepseek_v32.py test/gb300 added 7.0
python/sglang/test/accuracy_test_runner.py test/runner modified 8.0
python/sglang/test/run_combined_tests.py test/runner modified 5.0

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

关键符号

_run_nemo_skills_eval _get_nemo_venv run_combined_tests

评论区精华

profile_dir 硬编码建议 设计

gemini-code-assist[bot] 在多个测试文件中评论,指出 `profile_dir` 参数硬编码为 'performance_profiles_gb300',建议从 `test_name` 动态派生(例如使用 `profile_dir=f"performance_profiles_{test_name.lower().replace('.', '_').replace('-', '_')}"`)以减少重复和潜在不一致。

结论:建议未被采纳或未在 PR 中修改,状态为未解决,可能留给未来优化。 · 未解决

风险与影响

技术风险具体包括:

  • 硬编码路径风险:多个测试文件中的profile_dir硬编码为'performance_profiles_gb300',如果test_name变更或套件扩展,可能导致路径不一致和维护困难。
  • 外部依赖风险:新增的_run_nemo_skills_eval函数依赖外部NeMo Skills库,需网络安装并可能引入版本冲突或安装失败,影响测试稳定性。
  • 测试时间开销:套件设计为长时间运行(est_time=7200秒),可能拖慢CI流水线效率,尤其在高并发或资源受限环境下。
  • 硬件依赖性:测试针对特定GB300硬件(4x B200 NVL4),限制了通用性,可能在其他环境中无法运行或需调整配置。

影响评估:

  • 对用户:无直接影响,因为这是内部CI测试套件,不改变用户-facing功能。
  • 对系统:增加了测试覆盖,特别是针对GB300硬件和大型模型变体(如NVFP4/FP8量化),有助于捕捉性能回归和精度问题,但可能增加CI资源消耗和运行时间。
  • 对团队:提供了标准化的GB300基准测试能力,支持持续集成和性能监控,促进硬件优化;但需关注维护成本和外部依赖管理。
硬编码路径 外部依赖风险 长测试时间

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

此PR为sglang仓库的GB300(4x B200 NVL4)硬件新增了nightly基准测试套件,包含8个测试文件覆盖Qwen3.5-397B、GLM-5、Kimi-K2.5和DeepSeek-V3.2的NVFP4和FP8变体。关键变更为集成NeMo Skills进行MMMU-Pro评估,并优化测试结果显示。尽管存在硬编码和维护风险,但显著扩展了CI测试覆盖,支持团队自动化性能监控。

功能与动机

PR的主要功能是添加GB300硬件的nightly benchmark测试套件,旨在自动化CI任务和分摊测试负载。根据PR body,动机源于'为GB300(4x B200 NVL4, arm64)添加nightly benchmark测试套件',并设计为K8s CronJob编排,以支持顺序执行和清理。Issue评论中Fridge003提到'we can split some of our CI tasks here',表明团队希望分散CI压力并增强硬件特定测试。

实现拆解

实现按以下模块拆解:

  1. 新增测试文件:在test/registered/gb300/目录下创建8个文件,如test_deepseek_v32.py,每个文件使用ModelLaunchSettings定义模型变体,并通过run_combined_tests运行精度和性能测试。代码示例:
    variants = [
        ModelLaunchSettings(
            MODEL_PATH,
            tp_size=4,
            extra_args=COMMON_ARGS,
            variant="TP4"
        )
    ]
    
  2. 测试运行器增强:修改accuracy_test_runner.py,新增_run_nemo_skills_eval函数,使用隔离uv venv安装NeMo Skills,缓存数据,并处理MMMU-Pro评估。关键函数包括_get_nemo_venv(创建venv)和_ensure_nemo_data_prepared(准备数据集)。
  3. 测试结果优化:修改run_combined_tests.py,在结果字典中添加variant字段,并在失败消息中显示变体名称,例如f" Model {i + 1} ({r['model']}{variant_str}): {failed_test_str} - {error_str}"
  4. CI套件集成:修改run_suite.py,将'nightly-4-gpu-gb300'套件添加到CUDA CI列表中,确保CI系统能发现和调度这些测试。

评论区精华

review中仅有gemini-code-assist[bot]的评论,聚焦于设计改进:

"The profile_dir string is hardcoded. Consider deriving it dynamically from the test_name to reduce repetition and potential for inconsistencies."

评论在多个测试文件中重复提出,建议动态派生profile_dir路径,但无后续讨论或采纳,显示为一个未解决的设计权衡点。

风险与影响

风险分析

  • 硬编码profile_dir路径在8个测试文件中,若test_name变更或套件扩展,易导致不一致和维护负担。
  • NeMo Skills集成依赖外部库安装和网络,可能引入安装失败、版本冲突或评估超时风险。
  • 测试时间设计为7200秒,可能影响CI流水线效率,尤其在并发测试时增加资源压力。
  • 依赖GB300特定硬件,降低了测试可移植性,需额外配置以适应其他环境。

影响评估

  • 对系统:增强CI测试覆盖,特别是大型模型和量化变体,有助于早期发现性能回归,但增加运行开销。
  • 对团队:提供标准化GB300基准测试框架,支持持续监控,但需管理外部依赖和长测试时间。

关联脉络

从历史PR看,此PR与多个CI和测试相关PR关联:

  • PR 21534(添加AMD MI35x测试):类似硬件特定CI扩展,反映团队跨平台测试策略。
  • PR 21482(跳过CI非代码文件):CI优化举措,与本PR共同体现CI流水线的持续改进趋势。
    整体上,这些PR显示团队在扩展测试覆盖的同时,注重CI效率和维护性,GB300套件是硬件多元化测试的重要一步。

参与讨论