FastSoftMaxGradOperation

功能

将unpad处理后的Q矩阵和K矩阵相乘的结果做Softmax的反向计算处理。

约束

seqLen数组长度不超过32,且要求各元素大于0。

定义

struct FastSoftMaxGradParam {
    int32_t              headNum = 0;
    std::vector<int32_t> qSeqLen;
    bool operator==(const FastSoftMaxGradParam &other) const
   {
       return this->headNum == other.headNum &&
           this->qSeqLen == other.qSeqLen;
   }
};

成员

成员名称

描述

headNum

Attention的head数量。

qSeqLen

每个batch的实际输入长度。元素个数为batchSize,最大不超过32。

输入

参数

维度

数据类型

格式

描述

yInput

[nSquareTokens]

float16

ND

SoftMax算子前向计算的结果。

yGrad

[nSquareTokens]

float16

ND

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

输出

参数

维度

数据类型

格式

描述

output

[nSquareTokens]

float16

ND

结果向量。排列方式与yInput相同。