Prhub

#32926 [AMD] Don't request the unused softmax LSE in the AITER diffusion backend

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

执行摘要

AITER diffusion 后端移除未使用的 softmax LSE 计算

PR body 明确说明动机是清理:AITerImpl.forward 在同一行请求 softmax LSE 又通过 output, _ = 丢弃它,这是无用的请求。同时指出 ring attention 是 LSE 的唯一潜在使用者,但它已被限制在 FA 和 SageAttention 后端,当前无任何消费者,因此移除该参数是安全的。

该 PR 更偏向微优化清理,价值有限,但对理解 AITER diffusion 后端的调用约定和代码风格有参考价值。可快速浏览,重点留意 aiter.flash_attn_func 返回类型差异的约定。

讨论亮点

PR 评论中,yichiche 对 perf 收益提出了疑问:PR body 前半段提到 AITER_ENABLE_FMHA_OPUS=1 时带来 5% 性能提升,但 Benchmarking 部分又说无可测量的性能变化,要求澄清。作者未在评论中直接回应,但后续 PR 状态已标记为已合入。

实现拆解

  1. 变更入口:修改 python/sglang/multimodal_gen/runtime/layers/attention/backends/aiter.pyforward 方法的 BF16 分支。
  2. 核心变更:将 aiter.flash_attn_func 调用的 return_lse=True 改为 False,并将返回值的解包从 output, _ = 改为 output =,因为 return_lse=False 时函数返回裸张量而非元组。
  3. 配套情况:无测试、配置或部署改动,仅源码微调。
文件 模块 状态 重要度
python/sglang/multimodal_gen/runtime/layers/attention/backends/aiter.py 多模态 modified 5.07

关键符号

forward

关键源码片段

python/sglang/multimodal_gen/runtime/layers/attention/backends/aiter.py core-logic

核心变更文件,调整了 BF16 分支中 flash_attn_func 的调用,移除未使用的 LSE 请求。

# python/sglang/multimodal_gen/runtime/layers/attention/backends/aiter.py
# forward 方法中 BF16 分支,通过 return_lse=False 避免请求未使用的 softmax LSE。
@torch.compiler.disable
def forward(self, query, key, value, *args, **kwargs):
    # ... 前面的 FP8 分支和警告逻辑 ...
    # BF16 path
    output = aiter.flash_attn_func(
        query,
        key,
        value,
        dropout_p=self.dropout_p,
        causal=self.causal,
        return_attn_probs=False,
        return_lse=False, # 不再请求未使用的 LSE,aiter 返回裸张量
    )
    return output

评论区精华

性能收益声明不一致 question

yichiche 指出 PR 描述中提到 AITER_ENABLE_FMHA_OPUS=1 时 5% 性能提升,但基准测试部分又说无可测量变化,要求澄清。

结论:作者未在评论中明确回复,但改动已合入,说明不影响合入决策。 · 未解决

风险与影响

风险极低。改动仅涉及一处参数和返回类型处理,且已通过 bitwise 一致性和基准测试验证输出不变。潜在风险是若未来有代码依赖 LSE 返回值,但 forward 方法当前未提供该返回,因此影响范围局限于该分支。

对用户:无功能影响,仅性能微优化。对系统:减少 AITER flash attention 潜在的冗余计算,但实测无性能变化。对团队:属于低风险清理,为后续优化提供更清晰的代码路径。

缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论