Prhub

#39541 [CI] Add DGX Spark GPQA smoke test

原始 PR 作者 mgoin 合并时间 2026-06-23 05:52 文件变更 4 提交数 7 评论 4 代码增减 +24 / -2

执行摘要

为 DGX Spark 添加 GPQA 烟雾测试 CI 步骤

本 PR 的目的是在 DGX Spark CI runner 上运行 GPQA 评估烟雾测试,以验证该硬件平台的基本功能。PR body 明确说明:“Smoke test to validate the dgx-spark CI runner - Runs GPQA eval with gpt-oss-20b on SM120 (no TP, baseline config)”。

本 PR 属于常规 CI 基础设施扩展,无核心逻辑变更。值得关注的点:

  • DGX Spark(SM120)作为新硬件平台的支持入口。
  • 镜像构建中 CUDA 架构列表的调整方法。
  • 路径错误的修正应尽快合并以避免 CI 失败。
    审阅者 @AndreasKaratzas 提出的配置复用建议可能驱动后续重构。
讨论亮点
  1. CI 配置路径错误:@gemini-code-assist[bot] 指出 --config-list-file=configs/models-spark.txt 路径不正确,实际文件位于 tests/evals/gpt_oss/configs/models-spark.txt,假设测试从 tests/ 目录执行,应改为 evals/gpt_oss/configs/models-spark.txt
  2. 缺少 key 属性:@AndreasKaratzas 注意到新步骤没有 key 属性,但观察到其他测试组也缺少该属性,因此未强制要求。
  3. 配置重复性技术债务:@AndreasKaratzas 评论指出,新的配置文件与 baseline 配置几乎一样(仅无 TP),每新增一个模型评估会增加两个几乎重复的文件,形成增量技术债务,建议长期寻找更好的解决方案。

实现拆解

本 PR 的变更可分为三个部分:

  1. 新增 DGX Spark 模型配置:在 tests/evals/gpt_oss/configs/ 下新增 gpt-oss-20b-sm120.yaml 文件,定义使用 openai/gpt-oss-20b 模型,设置准确率阈值为 0.568 和 reasoning_effort 为 low。此外新增 models-spark.txt 文件,引用该配置文件名。
  2. 添加 Buildkite CI 步骤:在 .buildkite/test_areas/lm_eval.yaml 中新增一个可选 CI 步骤,使用 device: dgx-sparknum_devices: 1(无 TP),超时 120 分钟,依赖 csrc/vllm/model_executor/layers/quantizationtests/evals/gpt_oss/,命令安装 gpt-oss[eval]==0.0.5 并运行测试。
  3. 适配 arm64 Docker 镜像构建:修改 .buildkite/image_build/image_build_arm64.sh,将 torch_cuda_arch_list 从仅 9.0(GH200)改为 9.0 12.0,其中 12.0 对应 SM121(DGX Spark/GB10),并更新注释说明。
文件 模块 状态 重要度
tests/evals/gpt_oss/configs/gpt-oss-20b-sm120.yaml 模型配置 added 4.5
.buildkite/test_areas/lm_eval.yaml CI 配置 modified 4.03
.buildkite/image_build/image_build_arm64.sh 构建脚本 modified 2.98
tests/evals/gpt_oss/configs/models-spark.txt 测试列表 added 2.29

关键源码片段

tests/evals/gpt_oss/configs/gpt-oss-20b-sm120.yaml test-coverage

核心模型配置文件,定义 DGX Spark 上运行的模型名称、准确率阈值和推理努力级别。

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
# 针对 DGX Spark (SM120) 的 GPQA 评估配置
# 模型 : gpt-oss-20b,不使用 TP,单设备运行
model_name: "openai/gpt-oss-20b"
metric_threshold: 0.568
reasoning_effort: "low"
.buildkite/image_build/image_build_arm64.sh core-logic

修改 arm64 Docker 镜像构建参数,添加 SM121 支持。

# build for arm64 GPU targets: Grace/GH200 (sm_90) and DGX Spark/GB10
# (sm_121, family-covered by 12.0 under CUDA 13)
docker build --file docker/Dockerfile \
  --platform linux/arm64 \
  --build-arg max_jobs=16 \
  --build-arg nvcc_threads=4 \
  --build-arg torch_cuda_arch_list="9.0 12.0" \
  --build-arg USE_SCCACHE=1 \
  --build-arg buildkite_commit="$BUILDKITE_COMMIT" \
  --tag "$REGISTRY"/"$REPO":"$BUILDKITE_COMMIT"-arm64 \
  ...

评论区精华

CI 配置路径错误 正确性

@gemini-code-assist[bot] 指出 `--config-list-file=configs/models-spark.txt` 路径不正确,测试运行目录为 `tests/`,因此应为 `evals/gpt_oss/configs/models-spark.txt`。

结论:路径需要修正,但 PR 最终合并时是否已修正?从提交历史看,最后的提交是 `[CI] Build arm64 CI image for DGX Spark (sm_121)`,未包含该路径修复,因此问题可能仍未解决。 · pending

缺少 key 属性 style

@AndreasKaratzas 询问新步骤缺少 `key` 属性,但观察到其他组也未要求,认为可以接受。

结论:无需修复,符合现有风格。 · 已解决

配置重复性技术债务 设计

@AndreasKaratzas 评论新的配置文件与 baseline 几乎相同(仅无 TP),每新增模型评估约增加两个几乎重复的文件,形成增量技术债务,建议寻找更好的解决方案。

结论:未在本次 PR 中解决,但提出长期关注点。 · unresolved

风险与影响

  1. CI 配置错误风险:Review 中发现的路径错误可能导致测试步骤因找不到配置文件而失败,需要修正。
    - 涉及文件:.buildkite/test_areas/lm_eval.yaml 第 235 行。
  2. arm64 镜像构建风险:将 CUDA 架构列表从 9.0 改为 9.0 12.0 会增加镜像构建时间,并可能引入与 SM121 相关的编译兼容性问题,但这是适配新硬件的必要改动。
    - 涉及文件:.buildkite/image_build/image_build_arm64.sh
  3. 测试本身风险较低:该步骤为 optional(optional: true),不会阻塞主线 CI。

影响范围:仅限于 DGX Spark(SM120)硬件平台,影响面小。
影响程度

  • 对用户:无直接影响,仅新增 CI 验证流程。
  • 对系统:arm64 镜像构建时间可能因增加一个架构而延长,但影响有限。
  • 对团队:新增 CI 步骤后,需维护模型配置列表,如 @AndreasKaratzas 指出的配置重复问题。
路径配置可能错误 缺少测试覆盖 配置重复性技术债务

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论