昇腾社区首页
中文
注册

aclnnGroupNormBackward

产品支持情况

产品 是否支持
[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]
[object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]
[object Object]Atlas 200I/500 A2 推理产品[object Object] ×
[object Object]Atlas 推理系列产品 [object Object] ×
[object Object]Atlas 训练系列产品[object Object]

功能说明

  • 算子功能:undefined的反向计算。用于计算输入张量的梯度,以便在反向传播过程中更新模型参数。
  • 计算公式:dβ=i=1ndyd\beta = \sum_{i=1}^n dy dγ=i=1n(dyx^)d\gamma = \sum_{i=1}^n (dy \cdot \hat{x}) dx=meanrstdγ[dy1N(dβ+x^dγ)]dx = mean \cdot rstd \cdot \gamma \begin{bmatrix} dy - \frac{1}{N} (d\beta + \hat{x} \cdot d\gamma) \end{bmatrix}

函数原型

每个算子分为undefined,必须先调用“aclnnGroupNormBackwardGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnGroupNormBackward”接口执行计算。

  • aclnnStatus aclnnGroupNormBackwardGetWorkspaceSize(const aclTensor* gradOut, const aclTensor* input, const aclTensor* mean, const aclTensor* rstd, const aclTensor* gamma, int64_t N, int64_t C, int64_t HxW, int64_t group, const aclBoolArray* outputMask, aclTensor* gradInput, aclTensor* gradGammaOut, aclTensor* gradBetaOut, uint64_t* workspaceSize, aclOpExecutor** executor)
  • aclnnStatus aclnnGroupNormBackward(void* workspace, uint64_t workspaceSize, aclOpExecutor* executor, const aclrtStream stream)

aclnnGroupNormBackwardGetWorkspaceSize

  • 参数说明:

    • gradOut(aclTensor*,计算输入):反向计算的梯度tensor,Device侧的aclTensor。对应公式中的dy,shape支持0-8维,元素个数需要等于N*C*HxW,数据类型与input相同,undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。
    • input(aclTensor*,计算输入):正向计算的首个输入,Device侧的aclTensor。对应公式中的x,shape支持0-8维,元素个数需要等于N*C*HxW,数据类型与gradOut相同,undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。
    • mean(aclTensor*,计算输入):正向计算的第二个输出,表示input分组后每个组的均值,Device侧的aclTensor。对应公式中的mean,shape支持0-8维,元素个数需要等于N*group,undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。数据类型与gradOut相同。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。数据类型与gradOut相同。
    • rstd(aclTensor*,计算输入):正向计算的第三个输出,表示input分组后每个组的标准差倒数,Device侧的aclTensor。对应公式中的rstd,shape支持0-8维,元素个数需要等于N*group,数据类型与mean相同,undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。
    • gamma(aclTensor*,计算输入):表示每个channel的缩放系数,Device侧的aclTensor。对应公式中的γ,shape支持0-8维,元素个数需要等于C,数据类型与mean相同,undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。
    • N(int64_t,计算输入):Host侧的aclTensor,INT64常量,表示输入gradOut在N维度上的空间大小。

    • C(int64_t,计算输入):Host侧的aclTensor,INT64常量,表示输入gradOut在C维度上的空间大小。

    • HxW(int64_t,计算输入):Host侧的aclTensor,INT64常量,表示输入gradOut在除N、C维度外的空间大小。

    • group(int64_t,计算输入):Host侧的aclTensor,INT64常量,表示将输入gradOut的C维度分为group组,group需大于0,且C必须可以被group整除。

    • outputMask(aclBoolArray*,计算输入):Host侧的aclTensor,数据类型支持BOOL,size大小为3。分别表示是否输出gradInput,gradGammaOut,gradBetaOut,若为true则输出,否则输出对应位置返回空。

    • gradInput(aclTensor*,计算输出):计算输出的梯度,用于更新输入数据的梯度。对应公式中的dx,数据类型与gradOut相同,shape与input相同,Device侧的aclTensor。undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。
    • gradGammaOut(aclTensor*,计算输出):计算输出的梯度,用于更新缩放参数的梯度。对应公式中的,数据类型与mean相同,shape与gamma相同,Device侧的aclTensor。undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。
    • gradBetaOut(aclTensor*,计算输出):计算输出的梯度,用于更新偏置参数的梯度。对应公式中的,数据类型与mean相同,shape与gamma相同,Device侧的aclTensor。undefined支持ND,支持undefined

      • [object Object]Atlas 训练系列产品[object Object]:数据类型支持FLOAT16、FLOAT。
      • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持FLOAT16、FLOAT、BFLOAT16。
    • workspaceSize(uint64_t*,出参):返回用户需要在npu device侧申请的workspace大小。

    • executor(aclOpExecutor**,出参):返回op执行器,包含了算子计算流程。

  • 返回值:

    aclnnStatus:返回状态码,具体参见undefined

    [object Object]

aclnnGroupNormBackward

  • 参数说明:

    • workspace(void*,入参):在Device侧申请的workspace内存地址。
    • workspaceSize(uint64_t,入参):在Device侧申请的workspace大小,由第一段接口aclnnGroupNormBackwardGetWorkspaceSize获取。
    • executor(aclOpExecutor*,入参):op执行器,包含了算子计算流程。
    • stream(aclrtStream,入参):指定执行任务的Stream。
  • 返回值:

    aclnnStatus:返回状态码,具体参见undefined

约束说明

是否支持空Tenor:支持空进空出。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考undefined

[object Object]