昇腾社区首页
中文
注册
开发者
下载

aclnnNormRopeConcatBackward

产品支持情况

[object Object]undefined

功能说明

  • 算子功能:(多模态)transfomer注意力机制中,针对query、key和Value实现归一化(Norm)、旋转位置编码(Rope)、特征拼接(Concat)融合算子功能反向推导:

    • 归一化(Norm)当前支持层归一化(LayerNorm)和带仿射变换参数层归一化(AFFINE LayerNorm)类型。
    • 旋转位置编码(Rope)支持Interleave和Half类型。
  • 计算公式:

    • LayerNorm反向推导:
    Lx=rstd(LyMean(Ly)x^Mean(Lyx^))[Mean over headDim dimension]\frac{\partial L}{\partial x} = \text{rstd} \cdot \Bigg( \frac{\partial L}{\partial y} - \text{Mean}\left( \frac{\partial L}{\partial y} \right) - \hat{x} \cdot \text{Mean}\left( \frac{\partial L}{\partial y} \odot \hat{x} \right) \Bigg) \quad \quad \quad \quad \quad \quad \quad \text{[Mean over headDim dimension]}
    • LayerNorm(带仿射变换参数)反向推导:
    {Lβ=B,S,HLy,[Sum over batch, seq, headNum dimensions]Lγ=B,S,HLyx^,[Element-wise product accumulation]Lx=rstd(Lx^Mean(Lx^)x^Mean(Lx^x^))[Mean over headDim dimension]}\left\{ \begin{aligned} \frac{\partial L}{\partial \beta} &= \sum_{B, S, H} \frac{\partial L}{\partial y}, &\quad \text{[Sum over batch, seq, headNum dimensions]} \\ \frac{\partial L}{\partial \gamma} &= \sum_{B, S, H} \frac{\partial L}{\partial y} \odot \hat{x}, &\quad \text{[Element-wise product accumulation]} \\ \frac{\partial L}{\partial x} &= \text{rstd} \cdot \Bigg( \frac{\partial L}{\partial \hat{x}} - \text{Mean}\left( \frac{\partial L}{\partial \hat{x}} \right) - \hat{x} \cdot \text{Mean}\left( \frac{\partial L}{\partial \hat{x}} \odot \hat{x} \right) \Bigg) &\quad \text{[Mean over headDim dimension]} \\ \end{aligned} \right\}
    • 其中(μ为均值,σ^2为方差):
    x^=xμσ2+ϵ,Lx^=Lyγ,rstd=1σ2+ϵ\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}}, \quad \quad \frac{\partial L}{\partial \hat{x}} = \frac{\partial L}{\partial y} \odot \gamma, \quad \quad \text{rstd} = \frac{1}{\sqrt{\sigma^2 + \epsilon}}
    • Rope-Interleave反向推导:
    Lx=Lycos+Interleave(Lysin)negMask\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \text{cos} + Interleave({\frac{\partial L}{\partial y} \cdot \text{sin}}) \odot \text{negMask}
    • Rope-Half反向推导:
    Lx=Lycos+Half(Lysin)negMask\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \text{cos} + Half({\frac{\partial L}{\partial y} \cdot \text{sin}}) \odot \text{negMask}
    • 其中则Interleave()表示headDim维度奇数与偶数位置交替重组,Half()表示headDim维度后半和前一半元素交替重组,例如x = [0,1,2,3,4,5,6,7], 则Interleave(x) = [1,0,3,2,5,4,7,6],Half(x)=[4,0,5,1,6,2,7,3];negMask为headDim长度,偶数位为1, 奇数位为-1,即(1, -1, 1, -1, 1, ...)

函数原型

每个算子分为,必须先调用“aclnnNormRopeConcatBackwardGetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnNormRopeConcatBackward”接口执行计算。

[object Object]
[object Object]

aclnnNormRopeConcatBackwardGetWorkspaceSize

  • 参数说明

    [object Object]
  • 返回值

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

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]

aclnnNormRopeConcatBackward

  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

约束说明

  • 确定性计算:
    • aclnnNormRopeConcatBackward默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。

调用示例

  • aclnn单算子调用方式

    通过aclnn单算子调用示例代码如下,仅供参考,具体编译和执行过程请参考

    [object Object]