已关闭
SparseApplyAdagradV2 动态标量在 Ascend950 tiling 阶段被拒绝 #6656
KaranocaVe创建于  7 天前关闭于  5 天前
KaranocaVe
KaranocaVe
7 天前 创建

SparseApplyAdagradV2 动态标量在 Ascend950 tiling 阶段被拒绝

源码基线为 cann/ops-nn@ae873b119fb5499c41a6893f920171551fb0a197。

InferShape 将一维 shape 为 [-1] 的 lr 和 epsilon 视为合法动态标量(optim/sparse_apply_adagrad_v2/op_host/sparse_apply_adagrad_v2_infershape.cpp:119-128),现有 InferShape 用例 S005 也覆盖了这一输入。Ascend950 tiling 随后检查 storage shape,但只接受 rank-0 或 [1](optim/sparse_apply_adagrad_v2/op_host/arch35/sparse_apply_adagrad_v2_tiling_arch35.cpp:122-134)。因此 lr、epsilon 均为 [-1] 时,shape 推断通过后会在 tiling 的 lr 检查处返回 GRAPH_FAILED。

最小输入条件:var/accum=[4,3]、grad=[2,3]、indices=[2],lr=[-1]、epsilon=[-1],数据类型为 float32/int32。预期 tiling 与 InferShape 对动态单元素标量的约定一致,继续生成 tiling 数据;当前实现报错并拒绝该动态输入。静态标量 rank-0 和 [1] 不受影响。

修复让 Ascend950 tiling 与 InferShape 一致地接受一维未知维度 [-1],并保留 [2] 等已知非标量 shape 的拒绝行为。此处结论来自固定源码的检查条件及现有 S005 用例;本次未在设备上执行新增 tiling 用例。

Validation

验证记录

源码基线:cann/ops-nn@ae873b119fb5499c41a6893f920171551fb0a197。

  • 静态对照 InferShape 的 S005:lr/epsilon 为 [-1] 时校验放行;原 tiling 条件只接受空 shape 或 [1],对应输入会在 lr 条件返回 GRAPH_FAILED。补丁将这两个条件扩展为接受 [-1],新增 UT 覆盖动态标量成功、lr=[2] 拒绝、epsilon=[2] 拒绝。
  • 固定源码快照上的初始补丁通过 git apply --check;最终补丁对应当前上游 master 上的两个改动文件。
  • 仓库 pre-commit 4.6.2 检查通过;适用的空白、EOF、文件大小、冲突标记、私钥、clang-format 18.1.8、codespell 和 OAT 1.0.3 检查均通过。YAML、JSON 和 Ruff 对 C++ 改动不适用。
  • 未运行 CANN 构建、新增 C++ UT 或设备算子用例;新增 UT 需要由上游 CI 验证。
likedislike
yuning_chen
yuning_chen成员
7 天前 评论:

初步分析

感谢反馈。

现象理解:SparseApplyAdagradV2 的 InferShape 接受 lr、epsilon 的 shape 为负一,Ascend950 tiling 只接受零维或一维长度为 1。动态标量可能在 shape 通过后被 tiling 拒绝。

当前判断:初步判断,待复现确认。静态标量不受影响。

涉及范围:optim/sparse_apply_adagrad_v2 的 InferShape 与 arch35 tiling。

下一步:用 var、accum 为 [4,3]、lr 与 epsilon 为一维未知维度的输入看 tiling 是否失败,并保留对明确非标量 shape 的拒绝。

likedislike
yuning_chenyuning_chen成员
7 天前 将 ji-songyuan 设为负责人
yuning_chen
yuning_chen成员
7 天前 评论:

您好,问题已收到,目前 @ji-songyuan 正在处理中。

likedislike
renshuojian
renshuojian
6 天前 评论:

/assign

likedislike
CANN-robotCANN-robot成员
6 天前 将 rsj007 设为负责人
renshuojianrenshuojian
5 天前 关联了pull request:fix(sparse_apply_adagrad_v2): arch35 tiling 接受动态标量[-1]并防御未解析维度
CANN-robotCANN-robot成员
5 天前 关闭了 issue
CANN-robotCANN-robot成员
5 天前 添加了label:resolved