FastSoftMaxGradOperation
产品支持情况
| 
          产品  | 
        
          是否支持  | 
       
|---|---|
| 
          | 
        
          √  | 
       
| 
          | 
        
          √  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
功能描述
训练算子,用于计算FastSoftMax的反向计算结果,其数据的排列结构与FastSoftMax相同。

使用场景
    FastSoftMaxGrad算子用于计算FastSoftMax的反向计算结果,其数据的排列结构与FastSoftMax相同。
    定义
          1 2 3 4 5  | 
         
          struct FastSoftMaxGradParam { int32_t headNum = 0; std::vector<int32_t> qSeqLen; uint8_t rsv[8] = {0}; };  | 
        
参数列表
| 
          成员名称  | 
        
          类型  | 
        
          默认值  | 
        
          描述  | 
       
|---|---|---|---|
| 
          headNum  | 
        
          int32_t  | 
        
          0  | 
        
          Attention的head数目,要求大于0。  | 
       
| 
          qSeqLen  | 
        
          std::vector<int32_t>  | 
        
          -  | 
        
          每个batch的实际输入长度,元素个数与batch大小相同,最大不超过32。  | 
       
| 
          rsv[8]  | 
        
          uint8_t  | 
        
          {0}  | 
        
          预留参数。  | 
       
输入
| 
          参数  | 
        
          维度  | 
        
          数据类型  | 
        
          格式  | 
        
          描述  | 
       
|---|---|---|---|---|
| 
          yInput  | 
        
          [nSquareTokens]  | 
        
          float16  | 
        
          ND  | 
        
          输入tensor,SoftMax算子前向计算的结果是batch个值域在(0,1)之间,且末轴和为1的(headNum, qSeqLen[i], qSeqLen[i])大小的矩阵,按照ND排布拼接成一维的结果。  | 
       
| 
          yGrad  | 
        
          [nSquareTokens]  | 
        
          float16  | 
        
          ND  | 
        
          下一个算子传入的梯度数据。排列方式与yInput相同。  | 
       
输出
| 
          参数  | 
        
          维度  | 
        
          数据类型  | 
        
          格式  | 
        
          描述  | 
       
|---|---|---|---|---|
| 
          output  | 
        
          [nSquareTokens]  | 
        
          float16  | 
        
          ND  | 
        
          排列方式与yInput相同。  | 
       
规格约束
- qSeqLen数组长度不超过32,且要求各元素大于0。
 - 输入tensor(yInput和yGrad)、输出tensor(outTensor)的维度大小nSquareTokens与参数中的headNum和qSeqLen有关。须满足
      

:表示qSeqLen中的第k个元素。 
功能列表
当参数列表中
时,
其对应的yInput的shape大小为
。
例如参数中设置

此时的yInput的shape大小为

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