[object Object]

[object Object][object Object]undefined
[object Object]
  • Description: Computes the backpropagation of [object Object].

  • Formulas:

    • If [object Object] is not set to [object Object], the formula is as follows, where i0,1,2,...,num_tokens1i \in {0, 1, 2, ..., num\_tokens – 1}:

      • First, calculate [object Object].

        • When the condition rangeOptional[0] ≤ sortedIndices[i] < rangeOptional[1] is met,

          unpermutedTokens[i]=permutedTokensOptional[sortedIndices[i]rangeOptional[0]]unpermutedTokens[i] = permutedTokensOptional[sortedIndices[i]-rangeOptional[0]]
        • Otherwise,

          unpermutedTokens[i]=0unpermutedTokens[i] = 0
      • Then, compute the following:

        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})
      • Finally, when the condition rangeOptional[0] ≤ sortedIndices[i] < rangeOptional[1] is met,

        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]
    • If [object Object] is set to [object Object], the formula is as follows, where i0,1,2,...,num_tokens1i \in {0, 1, 2, ..., num\_tokens – 1}:

      • When the condition rangeOptional[0] ≤ sortedIndices[i] < rangeOptional[1] is met,
      permutedTokensGradOut[sortedIndices[i]rangeOptional[0]]=unpermutedTokensGrad[i]permutedTokensGradOut[sortedIndices[i]-rangeOptional[0]] = unpermutedTokensGrad[i]
[object Object]

Each operator has calls. First, [object Object] is called to obtain the workspace size required for computation and the executor that contains the operator computation process. Then, [object Object] is called to perform computation.

[object Object]
[object Object]
[object Object]
  • Parameters

    [object Object]
  • Returns:

    [object Object]: status code. For details, see .

    The first-phase API implements input parameter verification. The following errors may be thrown:

    [object Object]
[object Object]
  • Parameters

    [object Object]
  • Returns:

    [object Object]: status code. For details, see .

[object Object]
  • Deterministic computation:
    • [object Object] defaults to deterministic implementation.
[object Object]

The following example is for reference only. For details, see .

[object Object]