| Files | Last commit | Last update |
|---|---|---|
| 3 months ago | ||
| 4 months ago | ||
| 4 months ago | ||
| 4 months ago | ||
| 4 months ago | ||
| 10 months ago | ||
| 4 months ago |
ModulateGrad
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
功能说明
-
算子功能:完成Modulate反向传播中参数的计算,进行梯度更新。
-
计算公式:
设输入self的shape为[B, L, D]计算公式如下: 公式:
{grad_x=grad_output⊙(1+scale↑L)grad_scale=∑l=1L(grad_output⊙input)b,l,dgrad_shift=∑l=1Lgrad_outputb,l,d\begin{cases} \text{grad\_x} = \text{grad\_output} \odot \left(1 + \text{scale}^{\uparrow L}\right) \\ \text{grad\_scale} = \sum_{l=1}^{L} (\text{grad\_output} \odot \text{input})_{b,l,d} \\ \text{grad\_shift} = \sum_{l=1}^{L} \text{grad\_output}_{b,l,d} \end{cases}
符号说明:
- ⊙\odot: 表示逐元素乘法;
- ∑l=1L\sum_{l=1}^{L}: 求和操作,沿序列维度LL(即dim=1)进行
- b,l,db,l,d:下标,表示张量的维度索引(通常为Batch,Length,Dimension)
- scale↑L\text{scale}^{\uparrow L}:表示将scale张量在序列维度 LL 上进行广播(扩展)
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| grad_output | 输入 | 表示传入的特征张量,公式中的grad_output。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| input | 输入 | 表示传入的特征张量,公式中的input。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| scale | 输入 | 可选参数,表示缩放的系数,公式中的scale。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| shift | 输入 | 可选参数,表示平移的系数,公式中的shift。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| grad_input | 输出 | 表示缩放后的输出张量,公式中的grad_input。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| grad_scale | 输出 | 表示缩放后的输出张量,公式中的grad_scale。 | FLOAT、FLOAT16、BFLOAT16 | ND |
| grad_shift | 输出 | 表示缩放后的输出张量,公式中的grad_shift。 | FLOAT、FLOAT16、BFLOAT16 | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_modulatebackward | 通过aclnnModulateBackward接口方式调用ModulateGrad算子。 |