MoeFinalizeRoutingV2Grad
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:aclnnMoeFinalizeRoutingV2的反向传播。
-
计算公式: R: batch * sequence
H: hidden
K: topk
gradY: (R, H)
expandedRowIdx: (R * K)
expandedXOptional: (R * K, H) or (activeNum, H) or (expertNum, expertCapacity, H)
scalesOptional: (R, K)
expertIdxOptional: (R, K)
biasOptional: (E, H)
i : 0 ~ R * K - 1
j : 0 ~ H
(1) scalesOptional为空指针:
gradExpandedXOut[expandedRowIdx[i]][j]=gradY[i/K][j]gradExpandedXOut[expandedRowIdx[i]][j] = gradY[i / K][j]
(2) scalesOptional不为空指针, biasOptional为空指针:
gradExpandedXOut[expandedRowIdx[i]][j]=gradY[i/K][j]∗scalesOptional[i]gradExpandedXOut[expandedRowIdx[i]][j] = gradY[i / K][j] * scalesOptional[i]
gradScalesOut[i]=sum(expandedXOptional[expandedRowIdx[i]][j]∗gradY[i/K][j])gradScalesOut[i] = sum(expandedXOptional[expandedRowIdx[i]][j] * gradY[i / K][j])
(3) scalesOptional不为空指针, biasOptional不为空指针:
gradExpandedXOut[expandedRowIdx[i]][j]=gradY[i/K][j]∗scalesOptional[i]gradExpandedXOut[expandedRowIdx[i]][j] = gradY[i / K][j] * scalesOptional[i]
gradScalesOut[i]=sum((expandedXOptional[expandedRowIdx[i]][j]+biasOptional[expertIdxOptional[i]][j])∗gradY[i/K][j])gradScalesOut[i] = sum((expandedXOptional[expandedRowIdx[i]][j] + biasOptional[expertIdxOptional[i]][j]) * gradY[i / K][j])
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| gradY | 输入 | 公式中的`gradY`,表示MoeFinalizeRoutingV2正向输出y的导数。 | FLOAT16、BFLOAT16、FLOAT32 | ND |
| expandedRowIdx | 输入 | 公式中的`expandedRowIdx`,表示token按照专家序排序的索引。 | INT32 | ND |
| expandedXOptional | 输入 | 公式中的`expandedXOptional`,表示根据expertIdx进行扩展过的特征。 | FLOAT16、BFLOAT16、FLOAT32 | ND |
| scalesOptional | 输入 | 公式中的`scalesOptional`,表示对特征进行的缩放。 | FLOAT16、BFLOAT16、FLOAT32 | ND |
| expertIdxOptional | 输入 | 公式中的`expertIdxOptional`,表示每一个特征对应的处理专家索引。 | INT32 | ND |
| biasOptional | 输入 | 公式中的`biasOptional`,表示对特征进行的偏移。 | FLOAT16、BFLOAT16、FLOAT32 | ND |
| dropPadMode | 属性 | 表示使用不同的场景。 | INT64 | - |
| activeNum | 属性 | 公式中的`activeNum`,表示gradExpandedXOut最大输出行数。 | INT64 | - |
| expertNum | 属性 | 公式中的`expertNum`,表示专家数。 | INT64 | - |
| expertCapacity | 属性 | 公式中的`expertCapacity`。 | INT64 | - |
| gradExpandedXOut | 输出 | 公式中的`gradExpandedXOut`,表示MoeFinalizeRoutingV2正向输入expandedX的导数。 | FLOAT16、BFLOAT16、FLOAT32 | ND |
| gradScalesOut | 输出 | 公式中的`gradScalesOut`,表示MoeFinalizeRoutingV2正向输入scales的导数。 | FLOAT16、BFLOAT16、FLOAT32 | ND |
约束说明
无。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_moe_finalize_routing_v2_grad.cpp | 通过aclnnMoeFinalizeRoutingV2Grad接口方式调用MoeFinalizeRoutingV2Grad算子。 |