aclnnMoeInitRoutingV3
产品支持情况
功能说明
接口功能:MoE的routing计算,根据的计算结果做routing处理,支持不量化和动态量化模式。本接口针对V2接口做了如下功能变更,请根据实际情况选择合适的接口:
1.增加动态量化功能,支持输出expendX的 int8动态量化输出
2.增加参数activeExpertRangeOptional,支持筛选有效范围内的expertId
3.删除属性expertTokensBeforeCapacityFlag、删除输出expertTokensBeforeCapacityOut (使用expertTokensCountOrCumsumOut进行输出)
计算公式:
1.对输入expertIdx做排序,得出排序后的结果sortedExpertIdx和对应的序号sortedRowIdx:
2.以sortedRowIdx做位置映射得出expandedRowIdxOut:
3.在drop模式下,对sortedExpertIdx的每个专家统计直方图结果,得出expertTokensCountOrCumsumOutOptional:
4.计算quant结果:
- 动态quant:
若不输入scale:
若输入scale:
5.对quantResult取前NUM_ROWS个sortedRowIdx的对应位置的值,得出expandedXOut:
6.expandedRowIdxOut的有效元素数量availableIdxNum计算方式为,expertIdx中activeExpertRangeOptional范围内的元素的个数 $$ availableIdxNum = |{x\in expertIdx| expert_start \le x<expert_end \ }| $$
- 动态quant:
函数原型
每个算子分为,必须先调用 “aclnnMoeInitRoutingV3GetWorkspaceSize”接口获取入参并计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMoeInitRoutingV3”接口执行计算。
aclnnMoeInitRoutingV3GetWorkspaceSize
参数说明:
[object Object]返回值
[object Object][object Object]
aclnnMoeInitRoutingV3
约束说明
确定性计算:
- aclnnMoeInitRoutingV3默认确定性实现。
输入值域限制:
- activeNum 当前未使用,校验需等于NUM_ROWS*K。
- expertCapacity 当前未使用,仅校验非空。
- dropPadMode 当前只支持0,代表 Dropless 场景。
- expertTokensNumType 当前只支持 1 和 2,分别代表 count 模式和 key_value 模式。
- expertTokensNumFlag 只支持 true,代表输出 expertTokensCountOrCumsumOut。
- quantMode 只支持 1 和 -1,分别代表动态 quant 场景和不量化场景。
其他限制:该算子支持两种性能模板,进入两种性能模板需要分别额外满足以下条件,不满足条件则进入通用模板:
进入低时延性能模板需要同时满足以下条件:
- x、expertIdx、scaleOptional 输入 Shape 要求分别为:(1, 7168)、(1, 8)、(256, 7168)
- x 数据类型要求:BFLOAT16
- 属性要求:activeExpertRangeOptional=[0, 256]、 quantMode=1、expertTokensNumType=2、expertNum=256
进入大 batch 性能模板需要同时满足以下条件:
- NUM_ROWS范围为[384, 8192]
- K=8
- expertNum=256
- expertEnd-expertStart<=32
- quantMode=-1
- rowIdxType=1
- expertTokensNumType=1