接口功能:在micro-batch训练场景,需要做micro-batch的梯度累计,会存在大量GroupedMatMul后接InplaceAdd的融合场景。QuantGroupedMatmulInplaceAdd算子将上述算子融合起来,提高网络性能。实现分组矩阵乘计算和加法计算,基本功能为矩阵乘和加法的组合,如T-C量化场景下,其中g为分组个数,为对应的维度。
计算公式:
- mx量化:
其中,gsK代表K轴的量化的block size即32,代表第m行长度为gsK的向量,代表第n列长度为gsK的向量,K轴均从起始切片,j的取值范围[0, kLoops), kLoops=ceil( / gsK),支持最后的切片长度不足gsK。
- T-C量化:
每个算子分为,必须先调用“aclnnQuantGroupedMatmulInplaceAddGetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnQuantGroupedMatmulInplaceAdd”接口执行计算。
[object Object]
[object Object]
- 确定性说明:aclnnQuantGroupedMatmulInplaceAdd默认确定性实现。
- x1和x2的每一维大小在32字节对齐后都应小于int32的最大值2147483647,且内轴大小需小于2097152。
- 动态量化(T-C量化)场景支持的输入类型为:
- 不为空的参数支持的数据类型组合要满足下表:
[object Object]undefined
- scale1Optional/scale2要满足以下约束(其中g为matmul组数即分组数):
[object Object]undefined
- 不为空的参数支持的数据类型组合要满足下表:
- 动态量化(mx量化)场景支持的数据类型为:
- 数据类型组合要满足下表:
[object Object]undefined
- scale1Optional/scale2要满足以下约束(其中g为matmul组数即分组数,g_i为第i个分组(下标从0开始)):
[object Object]undefined
- 数据类型组合要满足下表:
- 动态量化(T-C量化)场景支持的输入类型为:
- groupList第1维最大支持1024,即最多支持1024个group。
[object Object]