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]。