Prhub

#38043 {ROCm]: gpt-oss fusion/padding fixes

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

执行摘要

修复 ROCm 上 gpt-oss 模型的 padding 对齐和 RMSNorm fusion 问题。

PR body 指出,这是跟进 #37787 的后续修复,针对 gpt-oss RMSNorm+padding fusion 和 padding 本身的 minor issues。具体地,切换 MI300 padding 为 256(hidden_size 3072 替代 2944),参考了 #32307 和 #34285 的讨论;并重新启用 rmsnorm+pad fusion,因为 #34304 已落地。

建议工程师阅读此 PR 以了解 ROCm 特定优化和 padding 对齐的最佳实践,重点关注 enable_norm_pad_fusion 的逻辑变化和 MI300 padding 的调整,同时注意 gemini-code-assist[bot] 提到的相关错误可能需在其他 PR 中处理。

讨论亮点

review 中,gemini-code-assist[bot] 评论指出在另一个文件 vllm/model_executor/layers/quantization/mxfp4.py 中的 hidden_pad 计算错误,可能导致内存访问错误,但此问题不在本 PR 的直接修改范围内。其他审核者如 gshtras、yewentao256、ProExpertProg 均批准,未发现其他讨论,表明变更被认为是合理的,但需注意 bot 提到的潜在问题可能影响相关代码。

实现拆解

实现涉及三个关键文件:

1) 在 vllm/config/vllm.py 中,修改 enable_norm_pad_fusion 函数,移除对 not rocm_aiter_ops.is_triton_gemm_enabled() 的检查,简化条件为仅基于 hidden size 是否为 2880。
2) 在 vllm/model_executor/layers/fused_moe/oracle/mxfp4.py 中,将 ROCm 平台的 padding 对齐硬编码为 256,取代之前动态获取的 get_padding_alignment()
3) 删除 vllm/model_executor/layers/quantization/utils/mxfp4_utils.py 中的 get_padding_alignment 函数,因为不再需要。

文件 模块 状态 重要度
vllm/config/vllm.py config modified 5.0
vllm/model_executor/layers/fused_moe/oracle/mxfp4.py quantization/mxfp4 modified 5.0
vllm/model_executor/layers/quantization/utils/mxfp4_utils.py quantization/utils modified 3.0

关键符号

enable_norm_pad_fusion mxfp4_round_up_hidden_size_and_intermediate_size

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

评论区精华

hidden_pad 计算错误 正确性

gemini-code-assist[bot] 指出在 vllm/model_executor/layers/quantization/mxfp4.py 中的 hidden_pad 计算错误,默认值为 0,可能导致内存访问错误。

结论:此问题未在本 PR 中解决,但审核者批准了变更,表明可能在其他地方处理或风险较低。 · unresolved

风险与影响

风险包括:

1) padding 对齐从 128 改为 256 可能引入回归,如果其他硬件或配置依赖于旧值;
2) 移除 get_padding_alignment 函数可能影响其他使用该函数的代码,但检查文件列表显示只有一处使用被替换,风险较低;
3) 简化 enable_norm_pad_fusion 条件可能在不支持的配置下错误启用 fusion,但基于 hidden size 检查应能控制。此外,bot 提到的 hidden_pad 错误未在本 PR 解决,可能是一个潜在的安全或正确性问题。

影响范围主要限于 ROCm 平台上的 gpt-oss 模型。对于用户,这应提升模型性能和正确性,减少 padding 错误;对于系统,优化了 padding 和 fusion 逻辑,可能降低计算开销;对于团队,修复了先前 PR 引入的遗留问题,增强了代码稳定性和可维护性。

padding 对齐变更 潜在内存访问错误

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论