接口功能:在 micro-batch 训练场景,需要做 micro-batch 的梯度累计,会存在大量 QuantBatchMatmul 后接 InplaceAdd 的融合场景。QuantBatchMatmulInplaceAdd 算子将上述算子融合起来,提高网络性能。实现量化矩阵乘计算和加法计算,基本功能为矩阵乘和加法的组合。
计算公式:
- mx 量化:
其中, 代表 K 轴的量化的 block size 即 32,代表第 m 行长度为 的向量,代表第 n 列长度为 的向量,K 轴均从起始切片,j 的取值范围[0, kLoops), kLoops=ceil( / ),支持最后的切片长度不足 。
每个算子分为,必须先调用“aclnnQuantBatchMatmulInplaceAddGetWorkspaceSize”接口获取入参并根据计算流程计算所需 workspace 大小,再调用“aclnnQuantBatchMatmulInplaceAdd”接口执行计算。
[object Object]
[object Object]
参数说明:
[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
- 输入和输出支持以下数据类型组合:
[object Object]