Moe Per Expert Scale Kernels#
- void trt_edgellm::kernel::applyPerExpertScale(
- float *topkWeights,
- int32_t const *topkIds,
- float const *perExpertScale,
- int32_t numTokens,
- int32_t topK,
- cudaStream_t stream,
Apply per-expert multiplicative scale to top-k routing weights.
After the MoE router selects top-k experts and renormalizes their weights, this kernel applies a learned per-expert scale factor:
for alltopkWeights[i] *= perExpertScale[topkIds[i]]
iin [0, numTokens * topK).- Parameters:
topkWeights – [inout] Flat array of renormalized routing weights, shape [numTokens * topK]. Modified in-place.
topkIds – [in] Expert indices for each slot, shape [numTokens * topK]. Each value must be in [0, numExperts).
perExpertScale – [in] Per-expert scale factors, shape [numExperts].
numTokens – [in] Number of tokens (batch dimension).
topK – [in] Number of selected experts per token.
stream – [in] CUDA stream for asynchronous execution.