接口功能:完成量化的Matmul计算、Permute(保证通信后地址连续)和AlltoAll通信的融合,先计算后通信,支持K-C量化、mx。
计算公式:假设x1的shape为(BS, H1),x2的shape为(H1, H2),rankSize为NPU卡数。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
- K-C量化场景:
Atlas 350 加速卡:
K-C量化场景:
mx量化场景:
每个算子分为,必须先调用 “aclnnQuantMatmulAlltoAllGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnQuantMatmulAlltoAll”接口执行计算。
参数说明:
[object Object]x1QuantMode、x2QuantMode、commQuantMode的枚举值与关系如下:
- 0: 不量化
- 1: pertensor
- 2: perchannel
- 3: pertoken
- 4: pergroup
- 5: perblock
- 6: mx量化
- 7: pertoken动态量化
返回值
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
默认支持确定性计算。
NPU卡数(rankSize),根据设备型号有不同限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:支持2、4、8卡。
- Atlas 350 加速卡:支持2、4、8、16卡。
参数说明中shape使用的变量H2必须整除NPU卡数。
BS*rankSize和H2的值不得超过2147483647(INT32_MAX),BS的值不得小于1,H2的值不得小于2。
不支持空tensor。
非连续tensor的支持度根据不同设备型号有不同的限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:不支持任何非连续tensor。
- Atlas 350 加速卡:仅支持x2为非连续tensor,其它非连续tensor均不支持。
传入的x1、x2、x1Scale、x2Scale与output均不为空指针,且
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:biasOptional不支持传入空指针。
groupSize相关约束:
仅当x1Scale和x2Scale输入都是2维及以上数据时,groupSize取值有效,其他场景需传入0。
传入的groupSize内部会按如下公式分解得到groupSizeM、groupSizeN、groupSizeK,当其中有1个或多个为0,会根据x1/x2/x1Scale/x2Scale输入shape重新设置groupSizeM、groupSizeN、groupSizeK用于计算。原理:假设groupSizeM=0,表示m方向量化分组值由接口推断,推断公式为groupSizeM = m / scaleM(需保证m能被scaleM整除),其中m与x1 shape中的m一致,scaleM与x1Scale shape中的m一致,k和n方向同理。
假设输入x和scale各方向满足整除关系,且自动推导的groupSizeM、groupSizeN、groupSizeK满足[1,1,32],则mx量化场景下groupSize支持以下取值:
[object Object]undefined
该算子输入输出的数据类型、数据维度和量化模式根据不同设备型号有不同的限制:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
量化模式:
- 目前支持:K-C量化,左矩阵perToken量化,x1QuantMode=3,右矩阵perChannel量化,x2QuantMode=2。
- bias偏置在量化后增加。
类型约束:
- 输入输出支持的数据类型组合有:
K-C量化:
[object Object]undefined
- 输入输出支持的数据类型组合有:
维度约束:
- H1范围仅支持[1, 65535]。
- Atlas 350 加速卡:
量化模式:
- 目前支持:K-C量化,左矩阵perToken量化,x1QuantMode=3,右矩阵perChannel量化,x2QuantMode=2;mx量化,左矩阵mx量化,x1QuantMode=6,右矩阵mx量化,x2QuantMode=6。
类型约束:
- biasOptional可以为空。
- 输入输出支持的数据类型组合有:
K-C量化:
[object Object]undefined
mx量化:
[object Object]undefined
维度约束:
- H1范围仅支持[1, 65535]。
- mx量化场景下,x2必须转置,shape为(H2, H1),transposeX2为True。
- mx量化场景下,且x1和x2输入为FLOAT4_E2M1时,H1必须是偶数,且ceil(H1/32)必须是偶数。
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
通算融合算子不支持并发调用,不同的通算融合算子也不支持并发调用。
不支持跨超节点通信,只支持超节点内。
说明:本示例代码调用了部分HCCL集合通信库接口:HcclGetCommName、HcclCommInitAll、HcclCommDestroy,请参考。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
[object Object]Atlas 350 加速卡:
[object Object]