执行摘要
此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压力并增强硬件特定测试。
实现拆解
实现按以下模块拆解:
- 新增测试文件:在
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"
)
]
- 测试运行器增强:修改
accuracy_test_runner.py,新增_run_nemo_skills_eval函数,使用隔离uv venv安装NeMo Skills,缓存数据,并处理MMMU-Pro评估。关键函数包括_get_nemo_venv(创建venv)和_ensure_nemo_data_prepared(准备数据集)。
- 测试结果优化:修改
run_combined_tests.py,在结果字典中添加variant字段,并在失败消息中显示变体名称,例如f" Model {i + 1} ({r['model']}{variant_str}): {failed_test_str} - {error_str}"。
- 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套件是硬件多元化测试的重要一步。
参与讨论