将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相同。 |