MaskedCausalConv1dBackward
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:对hidden层的token之间进行一维分组卷积操作的反向梯度计算。
-
计算公式:
假定卷积输入x、卷积输出的梯度gradY和卷积输入的梯度gradX的shape是[S, B, H],weight的shape是[W, H],i和j分别表示S/B轴的索引,k为卷积窗口W内的索引,那么计算将被表示为:
gradYMasked[i,j]=mask[j,i]∗gradY[i,j]gradYMasked[i,j] = mask[j,i] * gradY[i,j]
gradX[i,j]=∑k=0W−1gradYMasked[i+k,j]∗weight[W−1−k]gradX[i,j] = \sum_{k=0}^{W-1} gradYMasked[i+k,j] * weight[W-1-k]
gradWeight[k]=∑j=0B−1∑i=0S−1gradYMasked[i+W−1−k,j]∗x[i,j]gradWeight[k] = \sum_{j=0}^{B-1}\sum_{i=0}^{S-1} gradYMasked[i+W-1-k,j] * x[i,j]
其中,无效位置的padding为0填充;当前W仅支持3;H轴为elementwise操作,上述公式不体现。
参数说明
| 参数名 | 输入/输出 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| gradY | 输入 | 输入序列,shape为[S, B, H],对应公式中gradY。不支持空Tensor。 | FLOAT16、BFLOAT16 | ND |
| x | 输入 | 输入,shape为[S, B, H],对应公式中x。不支持空Tensor。 | 数据类型与gradY一致 | ND |
| weight | 输入 | 因果1维分组卷积核,shape为[W, H],W固定为3,对应公式中weight。不支持空Tensor。 | 数据类型与gradY一致 | ND |
| mask | 可选输入 | 布尔掩码,shape为[B, S],对应公式中mask。默认值是None。为None时表示mask的值全为True。不支持空Tensor。 | BOOL | ND |
| gradX | 输出 | 输出结果,表示分组卷积输入x的梯度,shape与gradY一致。不支持空Tensor。 | 数据类型与gradY一致 | ND |
| gradWeight | 输出 | 输出结果,表示分组卷积输入weight的梯度,shape与weight一致。不支持空Tensor。 | 数据类型与gradY一致 | ND |
约束说明
- 该接口不支持图模式。
- 输入输出的shape数据范围约束如下:
- B(Batchsize):取值范围为1~32。
- B * S(Batchsize * SeqLength):取值范围为1~512K。
- H(hiddenSize):取值范围384~24576,且是64的整数倍。
- W:W当前只支持3。
- 算子入参与中间计算结果,在对应运行数据类型(float16/bfloat16)下,数值均不会超出该类型值域范围。
- 算子输入不支持有±inf和nan的情况。
调用示例
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_masked_causal_conv1d_backward | 通过aclnnMaskedCausalConv1dBackward调用MaskedCausalConv1dBackward算子 |