昇腾社区首页
中文
注册
开发者
下载

aclnnMoeTokenUnpermuteWithEpGrad

产品支持情况

[object Object]undefined

功能说明

  • 接口功能:aclnnMoeTokenUnpermuteWithEp的反向传播。

  • 计算公式:

    • probs非None计算公式如下,其中i0,1,2,...,num_tokens1i \in {0, 1, 2, ..., num\_tokens - 1}

      • 首先计算unpermutedTokens:

        • 当rangeOptional[0] <= sortedIndices[i] < rangeOptional[1]时:

          unpermutedTokens[i]=permutedTokensOptional[sortedIndices[i]rangeOptional[0]]unpermutedTokens[i] = permutedTokensOptional[sortedIndices[i]-rangeOptional[0]]
        • 否则:

          unpermutedTokens[i]=0unpermutedTokens[i] = 0
      • 接着计算:

        unpermutedTokens=unpermutedTokens.reshape(1,topkNum,hiddenSize)unpermutedTokens = unpermutedTokens.reshape(-1, topkNum, hiddenSize) unpermutedTokens=unpermutedTokensGrad.unsqueeze(1)unpermutedTokensunpermutedTokens = unpermutedTokensGrad.unsqueeze(1) * unpermutedTokens probsGrad=k=0topkNum(unpermutedTokensi,j,k)probsGrad = \sum_{k=0}^{topkNum}(unpermutedTokens_{i,j,k})
      • 最后,当rangeOptional[0] <= sortedIndices[i] < rangeOptional[1]时:

        permutedTokensGradOut[sortedIndices[i]]=((unpermutedTokensGrad.unsqueeze(1)probs.unsqueeze(1)).reshape(1,hiddenSize))[i]permutedTokensGradOut[sortedIndices[i]] = ((unpermutedTokensGrad.unsqueeze(1) * probs.unsqueeze(-1)).reshape(-1, hiddenSize))[i]
    • probs为None计算公式如下,其中i0,1,2,...,num_tokens1i \in {0, 1, 2, ..., num\_tokens - 1}

      • 当rangeOptional[0] <= sortedIndices[i] < rangeOptional[1]时:permutedTokensGradOut[sortedIndices[i]rangeOptional[0]]=unpermutedTokensGrad[i]permutedTokensGradOut[sortedIndices[i]-rangeOptional[0]] = unpermutedTokensGrad[i]

函数原型

每个算子分为,必须先调用“aclnnMoeTokenUnpermuteWithEpGradGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMoeTokenUnpermuteWithEpGrad”接口执行计算。

[object Object]
[object Object]

aclnnMoeTokenUnpermuteWithEpGradGetWorkspaceSize

  • 参数说明

    [object Object]
  • 返回值

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]

aclnnMoeTokenUnpermuteWithEpGrad

  • 参数说明

    [object Object]
  • 返回值

    aclnnStatus:返回状态码,具体参见

约束说明

  • 确定性计算:
    • aclnnMoeTokenUnpermuteWithEpGrad默认确定性实现。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]