接口功能:在micro-batch训练场景,需要做micro-batch的梯度累计,会存在大量QuantBatchMatmul后接InplaceAdd的融合场景。QuantBatchMatmulInplaceAdd算子将上述算子融合起来,提高网络性能。实现量化矩阵乘计算和加法计算,基本功能为矩阵乘和加法的组合。
计算公式:
mx量化:
其中, 代表K轴的量化的block size即32,代表第m行长度为 的向量,代表第n列长度为 的向量,K轴均从起始切片,j的取值范围[0, kLoops), kLoops=ceil( / ),支持最后的切片长度不足 。
HIFLOAT8 T-T量化:
其中,和分别对应和,均为标量(shape为 );当设置transposeX1/transposeX2时,公式中的和按转置后的视图参与计算。
每个算子分为,必须先调用“aclnnQuantBatchMatmulInplaceAddGetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnQuantBatchMatmulInplaceAdd”接口执行计算。
参数说明:
[object Object]- 计算公式:[object Object][object Object]
返回值:
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
确定性说明:aclnnQuantBatchMatmulInplaceAdd默认确定性实现。
当前仅支持transposeX1=true且transposeX2=false。
groupSize相关约束:
- 传入的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一致。
动态量化(mx量化)场景约束:
输入和输出支持以下数据类型组合:
[object Object]undefined
x1数据类型、x2数据类型、x1、x2、x1Scale、x2Scale和groupSize的取值关系:
[object Object]undefined
HIFLOAT8 T-T场景约束:
输入和输出支持以下数据类型组合:
[object Object]undefined
x1数据类型、x2数据类型、x1、x2、x1Scale、x2Scale和groupSize的取值关系:
[object Object]undefined