已关闭
[Bug-Report|缺陷反馈]: 【易用性】pypto.reshape 对带 valid_shape 的子视图 reshape 时静默丢失 valid_shape #3192
liuxiaoxiao11创建于 22 天前关闭于 16 天前
22 天前 添加了label:bug-report
21 天前 添加了label:Frontend
21 天前 issue类型由 任务 改变为 缺陷
LiuChang
16 天前 评论:
16 天前 评论:
相关代码已合入,此issue计划关闭,如有其他问题,欢迎继续讨论


16 天前 issue状态由 待办的 改变为 已完成
16 天前 关闭了 issue
16 天前 添加了label:resolved
Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.
Describe the current behavior / 问题描述 (Mandatory / 必填)
pypto.reshape 对带 valid_shape 的子视图做 reshape 时,不传播输入的 valid_shape,静默生成全量 valid_shape,导致后续 pypto.assemble 越界写。该行为无任何报错,属静默返回错误结果。
原始 FP 报告(mhc_pre FP-01)详细记录:M2 精度验证时,3D 输出 h_res_out 在 B < B_TILE=128(部分尾块)时大规模发散(max_diff 54–983),而 2D 输出全部正常。debugger 定位根因为:pypto.reshape 将 h_res_raw(weight 的带列偏移子视图,行维 valid_shape 为 [actual_bs, 16])reshape 为 [B_TILE, 4, 4] 时,不传播行维 valid_shape,输出携带全量 [B_TILE,4,4],导致 pypto.assemble 越界写。修复需手动向 pypto.reshape 显式传 valid_shape=[actual_bs, N_val, N_val]。
pypto-reshape.md 文档仅说明"改变 valid_shape 部分的形状",未记载子视图 reshape 的 valid_shape 传播规则。
Environment / 环境信息 (Mandatory / 必填)
CANN 版本:9.2.0 (V100R001C25B114)(source /home/operation/Ascend/ascend-toolkit/set_env.sh)
pypto 版本/Commit:0.2.1 (pip) / 源码 HEAD 41b340b76
Python / torch / torch_npu:3.11.15 / 2.7.1+cpu / 2.7.1.post2
硬件:Ascend910,TILE_FWK_DEVICE_ID=0
环境快照:env_info.log
Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
source /home/operation/Ascend/ascend-toolkit/set_env.sh && export TILE_FWK_DEVICE_ID=0
cd issues/issue-04 && python repro_reshape_validshape.py
脚本构造带 valid_shape=[2,16] 的子视图,reshape 为 [8,4,4] 不传 valid_shape
检查输出中 rows beyond valid_shape 是否被写入(非零即 valid_shape 丢失)
完整证据见 issues/issue-04/README.md
Describe the expected behavior / 预期结果 (Mandatory / 必填)
reshape 应传播输入 valid_shape(子视图行维 valid_shape 按 reshape 映射延续),或对输入携带 valid_shape 而调用未显式传 valid_shape 的场景告警/报错,而非静默生成全量 valid_shape 导致越界写。
Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
Root cause: valid_shape loss in 2D→3D reshape of partial-row sub-view.
The 2D→3D reshape does NOT propagate the row-dimension valid_shape.
The reshaped 3D tensor carries full valid_shape [B_TILE, 4, 4] instead of [actual_bs, 4, 4].
max_diff: 54–983 (大规模发散)
NPU 运行产物:issues/issue-04/output/(kernel 编译产物)
Special notes for this issue/备注 (Optional / 选填)
复现状态:✅ 复现。NPU 运行完成,kernel 编译产物存在。仓分类:pypto。完整证据目录:issues/issue-04/README.md。0d292af807794351862fc6a09a6cbd61.zip