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算子。