Prhub

#38137 [ROCm][CI] Fix AITER state leak in shared_fused_moe_routed_transform test

原始 PR 作者 AndreasKaratzas 合并时间 2026-03-27 00:26 文件变更 3 提交数 4 评论 2 代码增减 +21 / -3

执行摘要

修复 ROCm 测试中 AITER 状态泄露,避免跨测试环境污染导致结果不一致。

PR body指出,问题源于use_rocm_aiter monkeypatch只在True时运行,当False测试在True测试后运行时,继承了陈旧的AITER状态(rocm_aiter_ops类变量),导致一个模块使用AITER而另一个使用Triton,产生完全不同的结果(max_diff=0.277)。这影响了测试的独立性和正确性,需要通过始终设置环境变量和调用refresh_env_variables()来确保状态重置。

该PR值得快速浏览,关注如何通过集成状态重置到标准清理函数(cleanup_dist_env_and_memory)来优雅处理测试间环境污染问题,这对编写健壮测试有参考价值,但变更逻辑简单,无需深入分析。

讨论亮点

Review讨论较少,仅机器人评论和简单批准。gemini-code-assist[bot]评论指出test_routed_input_transform_inside_vs_outside函数简化了条件检查,移除use_rocm_aiter标志,使其仅依赖current_platform.is_rocm(),没有其他技术讨论。yewentao256批准并表示“LGTM, thanks for the work!”。因此,无显著争议或深度讨论,修复方案已通过。

实现拆解

实现分三个关键改动:

  1. tests/kernels/moe/test_routing_simulator.py中,将envs.environment_variables[env_name] = lambda s=strategy: s改为使用monkeypatch.setitem,避免直接突变全局字典导致跨测试泄露;
  2. tests/kernels/moe/test_shared_fused_moe_routed_transform.py中,简化条件检查,移除use_rocm_aiter标志,改为始终在ROCm平台设置环境变量和导入rocm_aiter_ops
  3. vllm/distributed/parallel_state.pycleanup_dist_env_and_memory()函数中添加代码,当平台为ROCm时调用rocm_aiter_ops.refresh_env_variables(),重置类变量以匹配当前环境。
文件 模块 状态 重要度
tests/kernels/moe/test_shared_fused_moe_routed_transform.py tests/moe modified 6.0
vllm/distributed/parallel_state.py distributed modified 7.0
tests/kernels/moe/test_routing_simulator.py tests/moe modified 4.0

关键符号

cleanup_dist_env_and_memory test_routed_input_transform_inside_vs_outside test_routing_strategy_integration

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

评论区精华

条件简化检查 style

gemini-code-assist[bot] 评论指出,PR 简化了 `test_routed_input_transform_inside_vs_outside` 函数的条件检查,移除 `use_rocm_aiter` 标志,使代码更简洁。

结论:变更被接受,无反对意见。 · 已解决

风险与影响

风险较低:

  1. 修改cleanup_dist_env_and_memory()可能影响所有使用该函数的测试,但新增代码仅针对ROCm平台,且调用refresh_env_variables()是幂等的,不太可能引入回归;
  2. 在测试文件中使用monkeypatch.setitem替代直接赋值,修复了全局变量泄露,但需确保在其他类似测试中同样处理;
  3. 移除use_rocm_aiter条件可能简化逻辑,但也可能隐含对非ROCm平台的假设,但代码检查显示仅在ROCm时执行相关操作。

影响范围有限:

  1. 对用户:无直接影响,这是内部测试修复;
  2. 对系统:提升CI稳定性,防止因AITER状态泄露导致的测试误报失败(如最大差异0.277),确保ROCm平台上MoE相关测试的准确性;
  3. 对团队:减少CI flakiness,加快ROCm开发流程,维护测试隔离性。
测试环境污染 核心清理变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论