接口功能: GroupedMatmul和MoeFinalizeRouting的融合算子,GroupedMatmul计算后的输出按照索引做combine动作。
相较于aclnnGroupedMatmulFinalizeRoutingV2接口,此接口新增:
计算公式:
1.分组矩阵乘法GMM:
2.路由专家与专家输出分配:
对于每个token j,执行路由与输出专家分配:
其中 是 token j被分配到的专家索引。是该token在对应专家下的计算结果。
3.共享专家输出融合:
4.共享专家输出融合:最终输出结果是所有专家输出与共享专家输出,按照rowIndex所有进行合并的结果,计算过程如下:
其中是表示分配给token j的专家集合。
每个算子分为,必须先调用“aclnnGroupedMatmulFinalizeRoutingV3GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnGroupedMatmulFinalizeRoutingV3”接口执行计算。
参数说明
[object Object][object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
- x1仅支持INT8。维度为(m, k),维度m的取值范围为[1,16*1024*8],k支持2048;
- x2仅支持INT4。当输入为INT32时维度为(e, k, n / 8),输入转为INT4时维度为(e, k, n),e取值范围[1,256],k支持2048,n支持7168。
- scaleOptional支持INT64。shape支持三维,维度为(e, 1, n),e、n和w的e、n一致。
- biasOptional支持FLOAT32。e、n和w的e、n一致。
- offsetOptional支持FLOAT32。shape支持三维,维度为(e, 1, n),e、n和w的e、n一致。
- perTokenScaleOptional支持FLOAT32。支持一维,维度为(m),m和x的m一致。
- groupListOptional支持e和w的e一致。
- sharedInputOptional支持二维,维度为(bsdp,n),bsdp必须小于等于batchSize/e,n和w的n一致。
- logitOptional支持m和x的m一致。
- rowIndexOptional支持m和x的m一致。
- x1、x2、groupListOptional是必选参数,scaleOptional、pertokenScaleOptional、logitOptional、rowIndexOptional、biasOptional,sharedInputOptional是可选参数。
Atlas 350 加速卡:
- x1不支持INT8。
- x2不支持INT4。维度为(e,k,n),转置情况下维度为(e,n,k),e取值范围[1,1024]。
- scaleOptional支持FLOAT8_E8M0。shape支持四维,维度为(e,n,Ceil(k/64),2) 并且数据类型只支持FLOAT8_E8M0,转置属性必须和x2保持一致。
- biasOptional支持BF16。
- sharedInputOptional支持二维,维度为(bsdp,n),bsdp代表batchSize / dataParallelSize。
- perTokenScaleOptional支持FLOAT8_E8M0。shape支持三维,维度为(m,Ceil(k/64),2)。
- x1、x2、scaleOptional、pertokenScaleOptional、groupListOptional、logitOptional、rowIndexOptional是必选参数,biasOptional,sharedInputOptional是可选参数。目前暂不支持offsetOptional参数。所有参数均不支持空tensor。
- out的第一维bacth、sharedInputOffset必须大于等于0。
- x1支持M为0的空Tensor。
- x2支持N为0的空Tensor。
返回值
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
确定性计算:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:aclnnGroupedMatmulFinalizeRoutingV3默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
- Atlas 350 加速卡 :aclnnGroupedMatmulFinalizeRoutingV3默认非确定性实现,不支持通过aclrtCtxSetSysParamOpt开启确定性。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:仅支持伪量化场景。
输入和输出支持以下数据类型组合:
[object Object]undefined
在该场景中,scaleOptional代表per-channel和per-group离线融合的结果。
在该场景中,biasOptional代表离线计算的辅助结果,值要求为,并在第一维累加。
该场景支持对称量化和非对称量化。在对称量化时,offsetOptional需要设置为空;在非对称量化时,offsetOptional代表离线计算的辅助结果,即为的结果。
在该场景中,antiquantScaleOptional、antiquantOffsetOptional必须设置为空。
Atlas 350 加速卡:仅支持MX全量化场景。
输入和输出支持以下数据类型组合:
[object Object]undefined
在MXFP4/MXFP8场景中,offsetOptional、antiquantScaleOptional、antiquantOffsetOptional必须设置为空。
在MXFP4场景中,必须满足k必须为偶数的约束。在x2非转置的情况下,n必须为偶数。
在MXFP4/MXFP8场景中,支持x2转置或者非转置。x2与scale的转置属性必须保持一致。
e 必须小于等于1024。
在MXFP4场景中,k不能为2。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
[object Object]Atlas 350 加速卡:
[object Object]