已关闭
[Bug] nightly SP replay 与 MXFP4 GMM 回归(!754 / !699) #405
lutean创建于  26 天前关闭于  17 天前
lutean成员
26 天前 创建

问题概述

当前 master 在 nightly 中稳定复现两条与 !754 / !699 相关的 TensorCast 回归:

  1. Qwen3-32B 开启 sequence parallel 和 Region Replay 时,P3 residual 路径仍残留一次 all_reduce。
  2. Qwen3-235B-A22B 的 MXFP4 GMM 路径已经生成 native fused SwiGLU + quant 算子,但回归测试仍断言旧的 grouped_matmul_mxfp4_swiglu。

本 Issue 仅覆盖上述两条 SP/MXFP4 问题;DeepSeek PD ratio compile 图拓扑乱序(pow_2 在消费者之后定义)是独立问题,不在本 Issue 范围内。

环境

  • Python 3.10+
  • uv sync 创建的 .venv
  • HF_ENDPOINT=https://hf-mirror.com
  • 当前基线:Ascend/msmodeling/master,commit f34b7ce

复现

Case A:SP residual leftover all_reduce

python -m pytest -vv --tb=short -o addopts= \
  tests/regression/tensor_cast/test_sequence_parallel_pass.py::SequenceParallelPassTestCase::test_sp_reduces_rms_norm_seq_dim_0

参数为 _0 = (tp_size=2, expected_local_seq=64, disable_repetition=False),模型为 Qwen/Qwen3-32B,query_len=128,开启 enable_sequence_parallel=True、row word-embedding TP 和 Region Replay。

实际性能表同时出现:

tensor_cast.reduce_scatter.default  [1, 128, 5120]  1 call
tensor_cast.reduce_scatter.default  [128, 5120]     1 call
tensor_cast.all_gather.default      [1, 64, 5120]   3 calls
tensor_cast.all_reduce.default      [128, 5120]     1 call

disable_repetition=True 的 _1 参数通过。

Case B:MXFP4 GMM expectation stale

python -m pytest -vv --tb=short -o addopts= \
  tests/regression/tensor_cast/test_gmm_pass.py::GmmPassTestCase::test_qwen3_dynamic_quant_3

参数为 LinearQuantType.MXFP4,模型为 Qwen/Qwen3-235B-A22B,num_tokens=100、单层覆盖。

测试当前断言:

torch.ops.tensor_cast.grouped_matmul_mxfp4_swiglu.default

实际图/运行时事件为:

tensor_cast.grouped_matmul_mxfp4_swiglu_quant.default  1 call
tensor_cast.grouped_matmul_mxfp4.default               1 call
tensor_cast.grouped_matmul_mxfp4_swiglu.default        0 calls

W8A8、W4A8 和 FP8 对照参数通过。

根因分析

Case A

!754 引入 _internal_copy_region_v2 后,Region Replay 会保留 representative region output 作为 formal graph output。SP P3 matcher 在 _find_norm_after_add / _find_moe_norm_after_add 中把该 bookkeeping 用户误当成数据路径用户,无法穿过 region_end/copy boundary 找到后续 norm,导致 residual down-proj 的 all_reduce 没有被 P3 替换。

Case B

!699 将 grouped_matmul + SwiGLU + dynamic MXFP4 quantization 融合为 grouped_matmul_mxfp4_swiglu_quant,旧测试仍断言已被替换的 grouped_matmul_mxfp4_swiglu。

修复建议

  • Case A:在 SP matcher 中忽略 output formal bookkeeping 用户,兼容 _internal_copy_region 和 _internal_copy_region_v2,并补充带 formal output alias 的 replay 单测。
  • Case B:将 MXFP4 回归期望更新为 grouped_matmul_mxfp4_swiglu_quant,保留基础 grouped_matmul_mxfp4 断言。

验收标准

关联信息

  • 相关 PR:!754、!699
  • 参考修复 PR:!797
  • 影响路径:tensor_cast/compilation/passes/sequence_parallel_pass.py、tests/regression/tensor_cast/test_sequence_parallel_pass.py、tests/regression/tensor_cast/test_gmm_pass.py

AI 协作

  • 协作模式:Guided
  • 提交者愿意参与开发和验证。
likedislike
Llutean成员
26 天前 添加了label:bug
kai1949
kai1949成员
26 天前 评论:

/label add triaged
👋 您好,欢迎向 MindStudio-Modeling 提交 Issue!
我们已收到您的反馈,感谢你对开源社区的支持。🎉

📅处理时效: 维护团队将在8小时内 查看并回复您的问题(工作日)。
🔍自助查询: 在等待期间,建议您先查阅以下资料,可能已有解决方案:

📖 MindStudio-Modeling官方文档
📝 贡献者指南

请确保 Issue 描述清晰,包含复现步骤和日志,这将帮助我们更快定位问题。谢谢!

likedislike
ascend-robotascend-robot成员
26 天前 添加了label:triaged
Llutean成员
26 天前 关联了pull request:fix(tensor-cast): repair SP replay and MXFP4 smoke regressions
Llutean成员
26 天前 删除了关联的pull request:fix(tensor-cast): repair SP replay and MXFP4 smoke regressions
Llutean成员
26 天前 关联了pull request:fix(tensor-cast): repair SP replay and MXFP4 smoke regressions
Llutean成员
26 天前 删除了关联的pull request:fix(tensor-cast): repair SP replay and MXFP4 smoke regressions
Llutean成员
26 天前 关联了pull request:fix(tensor-cast): repair SP replay and MXFP4 smoke regressions
jiangruitao
jiangruitao成员
26 天前 评论:

/label add resolved

likedislike
ascend-robot
ascend-robot成员
26 天前 评论:

Label Command Feedback

The repository doesn't have the label(s) resovled, it cannot be added!

likedislike
ascend-robotascend-robot成员
26 天前 添加了label:resolved
ascend-robot
ascend-robot成员
19 天前 评论:

您好,当前Issue标记为resolved且有一段时间未进一步更新,因此我们将其标记为'stale'(闲置)状态。若您认为这是误操作,可通过添加任意评论来去除'stale'标签。标记为stale的Issue在4天内无更新活动将自动关闭。

likedislike
ascend-robotascend-robot成员
19 天前 添加了label:stale
Llutean成员
17 天前 issue状态由 TODO 改变为 DONE
Llutean成员
17 天前 关闭了 issue