aclnnMoeTokenUnpermuteWithRoutingMapGrad
产品支持情况
功能说明
接口功能:aclnnMoeTokenUnpermuteWithRoutingMap的反向传播。
计算公式:
(1) probs非None:
dropAndPad为false时
dropAndPad为true时
(2) probs为None:
- hidden_size指unpermutedTokensGrad的第1维大小。
- dropAndPad等于true时,每个专家固定能够处理capacity个token。输入routingMapOptional的第1维是experts_num,即专家个数,输入outIndex的第0维是experts_num * capacity,根据这两个维度可以算出capacity。
- dropAndPad等于false时,每个token固定被topK_num个专家处理。输入unpermutedTokensGrad的第0维是tokens_num,即token的个数,输入outIndex的第0维是tokens_num * capacity,根据这两个维度可以算出topK_num。
函数原型
每个算子分为,必须先调用“aclnnMoeTokenUnpermuteWithRoutingMapGradGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMoeTokenUnpermuteWithRoutingMapGrad”接口执行计算。
[object Object]
[object Object]
aclnnMoeTokenUnpermuteWithRoutingMapGradGetWorkspaceSize
aclnnMoeTokenUnpermuteWithRoutingMapGrad
约束说明
- 确定性计算:
- aclnnMoeTokenUnpermuteWithRoutingMapGrad默认确定性实现。
- tokens_num表示输入的token数量,hidden_size表示词向量维度,experts_num表示专家个数。
- 通过dropAndPad区分以下两种模式:dropAndPad等于true时,每个专家固定能够处理capacity个token。dropAndPad等于false时,每个token固定被topK_num个专家处理。
- 当输入probsOptional非空,且dropAndPad为false时
- 要求topK_num <= 512且topK_num <= experts_num。
- 要求experts_num满足(196608 - (probTypeLen + 1) * numExpertAlign-(tokenTypeLen + 8) * 256) / (6 * tokenTypeLen + 12) >= 1,其中probTypeLen是输入probsOptional的数据类型对应的字节数,tokenTypeLen是输入unpermutedTokensGrad的数据类型对应的字节数,numExpertAlign是experts_num对32做向上对齐的结果。
- 当输入probsOptional非空,且dropAndPad为true时
- 要求capacity <= tokens_num。
- 要求hidden_size在输入unpermutedTokensGrad是BFLOAT16或FLOAT16时,需要小于等于4972544,hidden_size在输入unpermutedTokensGrad是FLOAT时,需要小于等于4149248。
调用示例
[object Object]