已关闭
[Bug-Report|缺陷反馈]: UnsortedSegmentSum InferShape 未拒绝 segment_ids 的超范围 rank #5071
KaranocaVe创建于 8月24日关闭于 9月30日
8月24日 添加了label:bug-report
8月24日 将 KaranocaVe 设为负责人
yuning_chen
9月17日 评论:
9月17日 评论:
初步分析
感谢反馈,我们已开始核对这个问题。
现象理解:缺陷反馈;UnsortedSegmentSum InferShape 未拒绝 segment_ids 的超范围 rank。
当前判断:从描述看这是缺陷反馈「UnsortedSegmentSum InferShape 未拒绝 segment_ids 的超范围 rank」。正文里出现报错信息(如 ``UnsortedSegmentSumInferShape.SegmentIdsRankGreaterThanXRankMustFail。),更像实现或使用问题。以上为初步判断,待复现确认,不能当成已确认根因。
涉及范围:segment_ids_rank、run_rank_ut、run_rank_valid、repeat_invalid_rank、unsorted_segment_sum_rank、unsorted_segment_sum_valid
下一步:我们会继续对照代码/文档定位。
正文中的报错摘录:
- ``UnsortedSegmentSumInferShape.SegmentIdsRankGreaterThanXRankMustFail
。 在形状检查阶段返回ge::GRAPH_FAILED,而不是继续计算输出 rank。- ``ge::GRAPH_FAILED (4294967295)
。包含两个合法对照和该非法用例的测试退出码为1;


9月30日 关闭了 issue
9月30日 添加了label:resolved
m0_46386992
18 天前 评论:
18 天前 评论:
Rank & 前缀合法性检查已在tiling中存在。另外,为了防止无符号x_rank - segment_ids_rank + 1 计算出现下溢问题,已在infershape阶段增加针对rank的校验。


问题描述
在
cann/ops-nn的 commitbcf8c094ca51b5659c7c21ac5abecec5fa9ef2be中,UnsortedSegmentSum的 proto 规定segment_idsrank 必须小于等于xrank,且 shape 必须是x.shape的前缀。但 Host InferShape 实现没有先检查这两个约束,直接以
size_t计算x_rank - segment_ids_rank + 1。当
x为一维、segment_ids为二维时,非法输入没有被拒绝,InferShape 仍返回GRAPH_SUCCESS。该路径还会发生无符号 rank 下溢,调用方可能继续使用不符合算子契约的输出 shape。
环境信息
cann/ops-nn/bcf8c094ca51b5659c7c21ac5abecec5fa9ef2be重现步骤
ops-nn的 Host OpInfer 共享库和UnsortedSegmentSumInferShape UT。UnsortedSegmentSumInferShape.SegmentIdsRankGreaterThanXRankMustFail。x=[4]、segment_ids=[4,1]、num_segments=[1],并调用注册的UnsortedSegmentSumInferShape 回调。x=[2,3]、segment_ids=[2]和x=[2,3]、segment_ids=[2,3]运行合法rank 对照。
预期结果
由于
segment_idsrank 为 2,而xrank 为 1,输入违反算子 proto 约束;回调应在形状检查阶段返回
ge::GRAPH_FAILED,而不是继续计算输出 rank。实际结果
非法用例回调返回
ge::GRAPH_SUCCESS (0),而断言期望ge::GRAPH_FAILED (4294967295)。包含两个合法对照和该非法用例的测试退出码为1;非法用例连续重复 5 次,结果均一致。两个合法对照均退出成功,分别得到输出 shape
[-1,3]和[-1]。关键日志为
run_rank_ut.log、run_rank_valid.log、repeat_invalid_rank.log,结构化结果为
unsorted_segment_sum_rank.xml和unsorted_segment_sum_valid.xml。影响与建议
非法输入可绕过 Host shape 校验并返回成功,后续编译/执行阶段可能接收与算子契约不符
的 shape。建议在计算输出 rank 前显式校验
segment_idsrank 不大于xrank,并校验
segment_idsshape 是xshape 的前缀;增加超范围 rank、非前缀 shape、合法前缀和等 rank 的回归测试。临时规避方式是调用方在构图前自行遵守上述 proto 约束。
备注
本报告仅基于固定 commit 的 Host InferShape 复现。由于源码与验证环境 Toolkit/OPP 版本
不匹配,未将结果扩展为匹配版本 NPU 运行结论。