执行摘要
- 一句话:缩减 ROCm V1 attention 测试耗时
- 推荐动作:建议阅读,特别是 collection-time 参数验证的设计,可推广到其他需要根据运行时能力跳过测试的场景。
功能与动机
PR body 明确表示要‘Reduce V1 attention test runtime’,通过从 MI250 移除测试、对 MI300/MI355 分片、以及优化参数收集时跳过不可运行的组合来减少 CI 耗时。
实现拆解
- 移除 MI250 测试 job(
.buildkite/test-amd.yaml):删除 V1 attention (H100-MI250) 标签块。
- 分片 MI300 和 MI355(
.buildkite/test-amd.yaml):添加 parallelism: 2 和分片命令。
- 添加 ROCm AITER prefill backend(
tests/v1/attention/test_mla_backends.py):在 PREFILL_BACKENDS_TO_TEST 中加入 MLAPrefillBackendEnum.ROCM_AITER_FA。
- 实现 collection-time 参数验证(
tests/v1/attention/test_mla_backends.py):新增 _prefill_backend_dimension_params 函数,通过 validate_configuration 提前跳过不支持的组合。
- 重构参数化(
tests/v1/attention/test_mla_backends.py):test_backend_correctness 改为调用 _prefill_backend_dimension_params。
关键文件:
tests/v1/attention/test_mla_backends.py(模块 MLA测试;类别 test;类型 test-coverage;符号 _prefill_backend_dimension_params, test_backend_correctness): 核心测试文件,实现了 collection-time 参数验证、新增 ROCm AITER backend 支持、重构参数化逻辑。
.buildkite/test-amd.yaml(模块 CI配置;类别 config;类型 configuration): CI 配置文件,移除了 MI250 的 V1 attention job,为 MI300 和 MI355 增加了分片配置。
关键符号:_prefill_backend_dimension_params, test_backend_correctness
评论区精华
PR 没有较多讨论。审核者 tjtanaa 评论 'LGTM. Let's check the CUDA CI.' 并批准,无未解决疑虑。
风险与影响
- 风险:主要风险包括:
1) 移除 MI250 测试后可能遗漏该硬件上的回归;
2) 分片依赖 BUILDKITE_PARALLEL_JOB 环境变量,配置错误可能导致 job 失败;
3) collection-time 跳过基于 validate_configuration,该方法如果有 bug 可能跳过本该运行的测试。
- 影响:直接减少 AMD CI 中 V1 attention 测试的总 wall time,提升 CI 资源利用率。对 MI300 和 MI355 用户正面,MI250 用户部分测试覆盖降低,但未移除源码支持。
- 风险标记:移除 MI250 测试覆盖, 分片配置正确性
关联脉络
- PR #49516 [ROCm][CI] Keep native datasets cache off shared NFS: 同为 ROCm CI 优化,关注 CI 运行稳定性。
- PR #49911 [CI][ROCm] Keep global GPU memory cleanup opt-in: 同为 ROCm CI 配置调整,改进测试环境。
参与讨论