接口功能:执行局部旋转位置编码InplacePartialRotaryMul的反向计算。该算子对输入dy的D维度上切片[start, end)区域执行旋转位置编码梯度计算,计算结果inplace写回dy。
计算公式:
取旋转位置编码的正向计算中,broadcast的轴列表为
[object Object],在D维度上的切片范围为[object Object],令参与计算的切片数据为:则梯度计算公式可表达如下:
(1)half模式(rotary_mode等于0):
dx'的结果inplace写回dy的[start, end)区间。
(2)interleave模式(rotary_mode等于1):
dx'的结果inplace写回dy的[start, end)区间。
(3)quarter模式(rotary_mode等于2):
dx'的结果inplace写回dy的[start, end)区间。
(4)interleave-half模式(rotary_mode等于3):
dx'的结果inplace写回dy的[start, end)区间。
每个算子分为,必须先调用"aclnnInplacePartialRotaryMulGradGetWorkspaceSize"接口获取入参并根据流程计算所需workspace大小,再调用"aclnnInplacePartialRotaryMulGrad"接口执行计算。
该算子仅支持Ascend 950 AI Processor。
该算子仅支持连续Tensor,不支持非连续Tensor。
该算子当前版本仅支持 interleave 模式(
[object Object])。half(0)、quarter(2)、interleave-half(3)模式暂未实现。该算子不支持输入空Tensor(任意维度大小不能为0),不支持 slice 长度为零(即
[object Object])的场景。确定性计算:
- aclnnInplacePartialRotaryMulGrad默认确定性实现。
输入张量dyRef支持BSND排布以及其B/S/N维度的广播变体(如111D、1SND、B1ND、BS1D、11ND、B11D、1S1D等)。各参数的shape约束可以描述如下: