GroupedMatmul和MoeFinalizeRouting的融合算子,GroupedMatmul计算后的输出按照索引做combine动作,支持w为AI处理器亲和数据排布格式(NZ)。
本接口相较于aclnnGroupedMatmulFinalizeRoutingWeightNz,此接口新增:
- 新增入参offsetOptional、antiquantScaleOptional、antiquantOffsetOptional、tuningConfigOptional,其中前三个参数当前为预留参数,暂不生效,传入空指针即可。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:新增对INT4类型weight矩阵的支持,支持tuningConfigOptional调优参数,数组中的第一个值表示各个专家处理的token数的预期值,算子tiling时会按照该预期值合理进行tiling切分,性能更优。请根据实际情况选择合适的接口。
- Atlas 350 加速卡:新增Pertoken-perchannel、静态pertensor-perchannel和MxA8W4量化场景,相关信息参考。
每个算子分为,必须先调用"aclnnGroupedMatmulFinalizeRoutingWeightNzV2GetWorkspaceSize"接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用"aclnnGroupedMatmulFinalizeRoutingWeightNzV2"接口执行计算。
[object Object]
[object Object]
参数说明
[object Object]- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
- 上表数据类型列中的角标"1"代表该系列不支持的数据类型。
- x1仅支持INT8。维度m的取值范围为[1,16*1024*8],k支持2048。
- x2支持INT8、INT4以及INT32。当输入为INT32时维度为(e, k, n / 8),输入转为INT4时维度为(e, k, n),e取值范围[1,256],k支持2048,n支持7168。只支持转置属性为false。
- offsetOptional的shape支持三维,维度为(e, 1, n),e、n和weight的e、n一致。
- scaleOptional支持INT64、FLOAT、BF16。
- rowIndex支持INT64、INT32。
- x1、x2、groupList是必选参数,scale、pertokenScaleOptional、logit、rowIndex、bias、sharedInput是可选参数。
- Atlas 350 加速卡:
- 上表数据类型列中的角标"2"代表该系列不支持的数据类型。
- rowIndex在x1以及x2数据类型为INT8时,数据类型支持INT64、INT32;在x1以及x2数据类型为FLOAT8_E4M3FN、HIFLOAT8或MxA8W4量化模式时,数据类型仅支持INT64。
- x1、x2、scale、groupList、logit、rowIndex是必选参数,pertokenScaleOptional、sharedInput、bias是可选参数。MxA8W4场景下pertokenScaleOptional为必选参数。目前暂不支持offsetOptional参数,必须为nullptr。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
返回值
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
- 确定性计算:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:aclnnGroupedMatmulFinalizeRoutingWeightNzV2默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
- Atlas 350 加速卡:aclnnGroupedMatmulFinalizeRoutingWeightNzV2默认非确定性实现,不支持通过aclrtCtxSetSysParamOpt开启确定性。
公共约束
- groupList:当groupListType为0时,groupList必须为非负单调非递减数列;当groupListType为1时,groupList必须为非负数列。
- x1维度m的取值范围为 ,k支持2048。
- x2的e取值范围,k支持2048,n支持7168。只支持转置属性为false。
- offsetOptional的shape支持三维,维度为(e, 1, n),e、n和x2的e、n一致。
输入和输出支持以下数据类型组合
[object Object]undefined
公共约束
- groupList:当groupListType为0时,groupList必须为非负单调非递减数列;当groupListType为1时,groupList必须为非负数列。
- x2的e取值范围[1, 1024]。
- sharedInput的bsdp必须小于等于outputBS,n和x2的n一致。
- sharedInputOffset + sharedInput的bsdp <= outputBS。
全量化场景支持的数据类型为:
[object Object]undefined
- x2支持转置属性为true或者false,非转置下维度为(e, k, n),转置下维度为(e, n, k)。
- scale的shape为(e, 1, n),e、n和x2的e、n一致。
- pertokenScaleOptional的shape为(m),m和x1的m一致。
伪量化场景支持的数据类型为:
[object Object]undefined
- x2的format为NZ_C0_32,shape为(e, n, k),对应NZ格式的shape为(e, ceil(k/32), ceil(n/16), 16, 32)。
- transposeX2固定为true。
- pertokenScaleOptional为必选参数,shape为(m, ceil(k/64), 2)。
- scale的shape为(e, n, ceil(k/64), 2)。
- k必须满足k % 32 == 0。
- n必须满足n % 32 == 0。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
[object Object]Atlas 350 加速卡:
- Pertoken量化数据流示例:
[object Object]- MxA8W4数据流示例:
[object Object]