Prhub

#38184 [ROCm][CI] Run Kernels Core Operation Test On MI325 and mitigate flakiness

原始 PR 作者 micah-wil 合并时间 2026-04-06 09:42 文件变更 3 提交数 6 评论 8 代码增减 +15 / -2

执行摘要

在 MI325 上启用内核核心测试,并跳过 MI250 上因量化精度导致的 flaky 测试。

PR body中指出,在MI250上运行test_fused_rms_norm_quant测试时,由于量化边界舍入导致的数值精度问题,出现16个失败。作者选择跳过这些测试而不是放宽容差,以防止降低测试标准,并确保测试在MI325上正常运行。

建议关注此PR中处理硬件特定flakiness的策略,以及测试覆盖率的权衡。对于涉及跨平台测试的团队,可借鉴条件性跳过测试的方法,但需确保核心逻辑不受影响,并考虑长期维护成本。

讨论亮点

review中主要讨论点包括:gemini-code-assist[bot]指出修改ADD_RESIDUAL会影响test_rms_normtest_fused_rms_norm_quant两个测试,减少测试覆盖率,建议解耦参数列表。作者micah-wil回复'that's fine',表示接受此影响。tjtanaa强调需在非ROCm平台保护vllm.platforms.rocm导入,并建议将变量名从on_gfx90a改为on_mi250,这些已在后续提交中修正。讨论中未解决的主要疑虑是测试覆盖率的取舍,但团队已达成一致。

实现拆解

实现包括三个关键部分:

  1. vllm/platforms/rocm.py中添加on_gfx90a()函数,用于检测MI250平台;
  2. tests/kernels/core/test_layernorm.py中引入条件逻辑,当在MI250平台时,将ADD_RESIDUAL参数列表限制为仅包含True,跳过False用例;
  3. 修改.buildkite/test-amd.yamlCI配置文件,将mi250_1代理池步骤设为optional,mi325_1步骤设为非optional,以调整测试执行环境。
文件 模块 状态 重要度
.buildkite/test-amd.yaml CI modified 3.0
tests/kernels/core/test_layernorm.py Testing modified 6.0
vllm/platforms/rocm.py Platform modified 5.0

关键符号

on_gfx90a() test_fused_rms_norm_quant

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

评论区精华

测试覆盖率减少问题 测试

gemini-code-assist[bot] 指出修改 ADD_RESIDUAL 参数会同时影响 test_rms_norm 和 test_fused_rms_norm_quant 测试,减少测试覆盖率,建议解耦参数列表。

结论:作者接受当前修改,认为影响可接受,未进行解耦。 · 已解决

导入保护和变量命名 正确性

tjtanaa 强调需在非 ROCm 平台保护 vllm.platforms.rocm 导入,避免 ModuleNotFoundError,并建议重命名 on_gfx90a 为 on_mi250。

结论:已通过添加条件导入和变量重命名修正,确保跨平台兼容性。 · 已解决

风险与影响

主要风险包括:

  1. 测试覆盖率降低:在MI250平台上,test_rms_normadd_residual=False用例被跳过,可能遗漏潜在问题;
  2. 硬件特定问题掩盖:跳过测试而非修复底层问题,可能忽略MI250上量化内核的潜在bug;
  3. 平台检测逻辑风险:导入保护逻辑若不完善,可能导致非ROCm平台上的导入错误,但已通过条件导入缓解。

对用户无直接影响,属于内部CI和测试优化。系统层面,提高了ROCm平台测试的稳定性,减少flaky失败导致的CI中断。团队需注意测试策略的权衡,未来可能需要监控MI250上的量化精度问题。影响范围有限,主要涉及AMD硬件相关的测试执行。

减少测试覆盖率 硬件依赖处理

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论