昇腾社区首页
中文
注册

FastSoftMaxGradOperation

功能描述

训练算子,用于计算FastSoftMax的反向计算结果,其数据的排列结构与FastSoftMax相同。

使用场景

图1 模型流程图

FastSoftMaxGrad算子用于计算FastSoftMax的方向计算结果,其数据的排列结构与FastSoftMax相同。

图2 输入数据的排列方式

定义

struct FastSoftMaxGradParam {
    int32_t headNum = 0;
    std::vector<int32_t> qSeqLen;
};

参数列表

成员名称

类型

默认值

描述

headNum

int32_t

0

Attention的head数目,要求大于0。

qSeqLen

std::vector<int32_t>

-

每个batch的实际输入长度,元素个数与batch大小相同,最大不超过32

输入

参数

维度

数据类型

格式

描述

yInput

[nSquareTokens]

float16

ND

输入tensor,SoftMax算子前向计算的结果是batch个(headNum, qSeqLen[i], qSeqLen[i])大小的矩阵按照ND排布拼接成一维的结果。batch个值域在(0,1)之间且末轴和为1的(headNum, qSeqLen[i], qSeqLen[i])大小的矩阵,按照ND排布拼接成一维的结果。

yGrad

[nSquareTokens]

float16

ND

下一个算子传入的梯度数据。排列方式与yInput相同。

输出

参数

维度

数据类型

格式

描述

output

[nSquareTokens]

float16

ND

排列方式与yInput相同。

规格约束

  • qSeqLen数组长度不超过32,且要求各元素大于0。
  • 当前只支持 Atlas 800I A2 推理产品 / Atlas A2 训练系列产品
  • 输入tensor(yInput和yGrad)、输出tensor(outTensor)的维度大小nSquareTokens与参数中的headNum和qSeqLen有关。须满足

    :表示qSeqLen中的第k个元素。

功能列表

当参数列表中

时,

其对应的yInput 的shape大小为

例如参数中设置

此时的yInput 的shape大小为

输入 yInput、yGrad和输出tensor的shape为[5528144]。