Prhub

#24825 [AMD] DSv4 nightly hotfix + schedule-aware --continue-on-error in AMD CI

原始 PR 作者 bingxche 合并时间 2026-05-11 12:46 文件变更 7 提交数 6 评论 3 代码增减 +110 / -110

执行摘要

修复 AMD CI DSv4 参数回退和 cron 续跑问题

自 2026-05-08 起 AMD CI nightly 因 #23882 分支重命名而频繁失败。PR #23882 将 attention-backend 值 compressed 改为 dsv4,环境变量 SGLANG_REASONING_EFFORT 改为 SGLANG_DSV4_REASONING_EFFORT,但 DSv4 镜像未同步该变更,导致 argparse 拒绝新参数。同时 cron 触发时因 inputs 为空导致 continue-on-error 未生效,首个失败即终止整体测试。

推荐 AMD 和 CI 维护者关注本次 continue-on-error 条件的设计模式(github.event_name == 'schedule'),以及跨分支配置兼容性处理。对于其他硬件后端,可借鉴类似的条件感知方式。本 PR 改动直观、测试充分,值得精读。

讨论亮点

无显著讨论:仅有一个来自 HaiShaw 的批准,无 review 评论。PR body 详细说明了问题分析和解决方案的权衡。最后一个提交将环境变量恢复为新名称,表明镜像已经兼容,但 attention-backend 仍使用旧名称,确保最大兼容性。

实现拆解

  1. 回退 DSv4 测试参数:修改 test/registered/amd/test_deepseek_v4_flash_fp4.py 等四个文件的 other_args--attention-backenddsv4 恢复为 compressed,确保 DSv4 镜像能够识别;环境变量保留新名称 SGLANG_DSV4_REASONING_EFFORT(最终提交确认镜像已支持)。同时将 FP4/FP8 文件重命名以包含 flash 标记,统一命名规范。
  2. 修复 continue-on-error 条件:在 nightly-test-amd-rocm720.ymlnightly-test-amd.ymlpr-test-amd-rocm720.yml 中,将所有 run_suite.py 调用的条件从 ${{ inputs.continue_on_error && '--continue-on-error' || '' }} 替换为 ${{ (github.event_name == 'schedule' || inputs.continue_on_error) && '--continue-on-error' || '' }},确保 cron 调度时自动启用续跑,同时保留手动触发时的控制权。
  3. 重命名测试文件:将 test_deepseek_v4_fp4.pytest_deepseek_v4_fp8.py 分别重命名为 test_deepseek_v4_flash_fp4.pytest_deepseek_v4_flash_fp8.py,匹配 Pro 和 NV 变体的命名习惯,文件内注册类名不变,无需调整 run_suite.py
文件 模块 状态 重要度
.github/workflows/nightly-test-amd-rocm720.yml CI 配置 modified 4.67
.github/workflows/nightly-test-amd.yml CI 配置 modified 4.64
test/registered/amd/test_deepseek_v4_flash_fp4.py DSv4 测试 renamed 4.1
test/registered/amd/test_deepseek_v4_flash_fp8.py DSv4 测试 renamed 4.1
.github/workflows/pr-test-amd-rocm720.yml CI 配置 modified 3.77
test/registered/amd/test_deepseek_v4_pro_fp4.py DSv4 测试 modified 3.42
test/registered/amd/test_deepseek_v4_pro_fp8.py DSv4 测试 modified 3.42

关键源码片段

test/registered/amd/test_deepseek_v4_flash_fp4.py rename-or-move

展示 attention-backend 回退和文件重命名,确保镜像兼容

# 公共环境变量 : 使用新名称 SGLANG_DSV4_REASONING_EFFORT(镜像已支持)
COMMON_ENV_VARS = {
    "SGLANG_DSV4_REASONING_EFFORT": "max", # 推理努力程度
    # ... 其他变量
}class TestDeepseekV4Fp4(CustomTestCase):
    @classmethod
    def setUpClass(cls):
        cls.model = DEEPSEEK_V4_FP4_MODEL_PATH
        cls.base_url = DEFAULT_URL_FOR_TEST
​
        env = os.environ.copy()
        env.update(COMMON_ENV_VARS)
        env.update(FP4_ENV_VARS)
​
        other_args = [
            "--trust-remote-code",
            "--tp", "8",
            "--disable-radix-cache",
            "--attention-backend",
            "compressed", # 使用旧名称以确保 DSv4 镜像能够识别
            "--max-running-requests", "256",
            "--page-size", "256",
            "--chunked-prefill-size", "8192",
            "--disable-shared-experts-fusion",
            "--tool-call-parser", "deepseekv4",
            "--reasoning-parser", "deepseek-v4",
        ]
​
        cls.process = popen_launch_server(
            cls.model,
            cls.base_url,
            timeout=SERVER_LAUNCH_TIMEOUT,
            other_args=other_args,
            env=env,
        )

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

兼容性风险:恢复使用 compressed 依赖主分支的别名支持,若未来移除别名将失效;但临时方案且有明确回退计划。continue-on-error 条件修改可能影响手动触发时的行为,但保留了 inputs.continue_on_error 的控制,风险可控。测试文件重命名不影响注册,因为 suite 注册在文件内。总体风险较低。

对 AMD CI 运维者:修复后 nightly 和 PR 测试可稳定运行,减少因参数不匹配和 fail-fast 导致的误报。对其他平台无影响。对 SGLang 项目:提升了 CI 对跨分支配置不同步的容错能力,并提供了可复用的 schedule 感知条件模式。

兼容性依赖别名 cron vs manual 条件判断

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论