已关闭
[Requirement|需求建议]: LayerNormGradV3/LayerNormGrad 新增空tensor场景empty regbase模板 #6005
zhuzixian-lr创建于  9月19日关闭于  28 天前
zhuzixian-lr成员
9月19日 创建

Backgroud(背景信息)

LayerNormGradV3 与 LayerNormGrad 算子在空 tensor 场景(输入或输出 shape 任一维为 0)下 tiling 整体失败:基类 GetShapeAttrsInfo 对 dy 每维做 dim <= 0 校验直接返回 GRAPH_FAILED。aclnnLayerNormBackward API 层已有空 tensor 短路处理,但 layer_norm_x_backprop_v3、layer_norm_beta_gamma_backprop_v2 及图模式路径会直达 tiling 报错,需要 empty 模板在 regbase 平台承接空 tensor 场景。

Origin(信息来源)

内部需求:regbase 平台 norm 类算子空 tensor 场景支持补齐,对齐 GroupNormGrad 已有 empty 模板方案。

Benefit / Necessity(价值/作用)

  • 修复 regbase 平台(Ascend 950PR/Ascend 950DT)空 tensor 场景下图模式及拆分 API 路径的 tiling 失败问题
  • 对齐 GroupNormGrad 等算子的空 tensor 处理能力,保证含空 tensor shape 的模型(动态 shape 边界场景)正常运行

Design(设计方案)

  • tiling:新增 empty 模板(注册优先级 400,全局第一个;tiling key 900),入口条件为 regbase 且 (row==0 || col==0);GetShapeAttrsInfo 完整镜像基类校验仅放宽 dim==0;多核切分:N<=1024 单核,N 较大沿 N 轴多核切分(CeilDiv + max(vlFp32));nAlign UB 内切分(单核取 col,多核 nMax>nPerCore 取 nPerCore 否则按 512B 向下对齐);tilingdata 全字段无条件显式赋值(col=0 场景全 0);workspace 仅从 GetLibApiWorkSpaceSize 接口获取系统空间
  • kernel(arch35):空 tensor 场景 pd_x 恒为空无需计算,仅对 pd_gamma/pd_beta 填 0;Init 判断尾核并计算 loop/尾块,col==0 或 dgamma/dbeta 均不需要时直接退出;每块经高阶 API Duplicate 填 0 后按需 CopyOut;整链路 int64_t 防大 N 溢出
  • 文档:aclnnLayerNormBackward.md 约束说明及两算子 README 同步更新空 Tensor 支持说明
likedislike
Zzhuzixian-lr成员
9月19日 添加了label:requirement
zhuzixian-lr成员
9月19日 评论:

/assign @zhuzixian-lr

likedislike
CANN-robotCANN-robot成员
9月19日 将 zhuzixian-lr 设为负责人
CANN-robotCANN-robot成员
28 天前 关闭了 issue
CANN-robotCANN-robot成员
28 天前 添加了label:resolved