Prhub

#37640 [ROCm][Test] Fix ROCM_AITER_UNIFIED_ATTN attn+quant fusion test

原始 PR 作者 vllmellm 合并时间 2026-03-25 13:06 文件变更 1 提交数 5 评论 3 代码增减 +7 / -1

执行摘要

修复 ROCM_AITER_UNIFIED_ATTN 测试中块大小错误,改用动态查询后端偏好。

根据 PR body,修复的目的是纠正 ROCM_AITER_UNIFIED_ATTN 后端在 FP8 注意力+量化融合测试中使用的块大小。后端要求 block_size=64,但测试中使用了 16,这可能导致测试失败或行为不正确,引用了 PR #37606。

建议工程师精读此 PR,以学习如何将硬编码配置替换为动态查询,从而提高代码健壮性。关注 get_preferred_block_size 方法的使用和测试参数化设计,这对于类似测试场景有借鉴价值。

讨论亮点

Review 中,gemini-code-assist[bot] 建议使用动态查询后端类的 get_preferred_block_size 方法,而不是硬编码块大小值 64,以提高测试的健壮性和可维护性。vllmellm 回复“good idea!”并采纳建议,修改了代码。讨论强调了通过抽象配置获取来减少维护开销。

实现拆解

实现方案集中在 tests/compile/passes/test_fusion_attn.py 文件。主要改动分为两部分:

  1. __init__ 方法中添加 block_size 参数,移除原有的硬编码值 16。
  2. test_attention_quant_pattern 函数中,通过 backend.get_class().get_preferred_block_size(16) 动态获取块大小,并将其传递给模型初始化。这使测试能自适应后端需求,避免未来硬编码变更。
文件 模块 状态 重要度
tests/compile/passes/test_fusion_attn.py tests/compile/passes modified 3.0

关键符号

__init__ test_attention_quant_pattern

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

评论区精华

块大小获取方式 设计

gemini-code-assist[bot] 建议使用 `get_preferred_block_size` 动态查询而不是硬编码 64,以提高测试健壮性和可维护性。

结论:建议被采纳,代码修改为动态查询,使用 `backend.get_class().get_preferred_block_size(16)`。 · 已解决

风险与影响

风险较低,因为变更仅涉及测试代码,不直接影响生产环境。潜在风险包括:动态查询方法 get_preferred_block_size 可能不存在于所有后端或返回不兼容值,但 PR 使用默认值 16 作为后备,降低了此风险。此外,测试逻辑变更可能引入新的边缘情况,但基于后端要求进行修改,风险可控。

对用户无直接影响,因为这是内部测试修复。对系统,确保 ROCm 统一注意力后端的 FP8 量化融合测试通过,提高测试套件可靠性。对团队,改进了测试代码的维护性,使其更能适应后端变化,减少了未来因硬编码值变更而导致的测试失败。

测试逻辑变更 依赖后端接口

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论