- 接口功能:完成一个输入为伪量化场景的矩阵乘计算,并可以实现对于输出的量化计算。
- 计算公式:
公式中的为伪量化场景的输入,其反量化公式为
- 当不需要对输出进行量化操作时,其计算公式为
- 当需要对输出再进行量化处理时,其量化公式为
每个算子分为,必须先调用“aclnnWeightQuantBatchMatmulV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnWeightQuantBatchMatmulV2”接口执行计算。
参数说明
[object Object]Atlas 350 加速卡:
- 上表数据类型列中的角标“1”代表该系列不支持的数据类型;
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
- 上表数据类型列中的角标“2”代表该系列不支持的数据类型。
[object Object]Atlas 推理系列产品[object Object]:
- 上表数据类型列中的角标“3”代表该系列不支持的数据类型。
返回值:
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
[object Object][object Object]
[object Object]确定性说明:默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
[object Object](aclTensor *, 计算输入):矩阵为非转置时,m大小在[1, 2^31-1]范围内;转置时,m大小在[1, 65535]范围内。[object Object](aclTensor *, 计算输入):维度支持2维,Reduce维度k需要与[object Object]的Reduce维度k大小相等。数据类型支持INT8、INT4、INT32,当[object Object]为FRACTAL_NZ且数据类型为INT4或INT32时,或者当[object Object]为ND且数据类型为INT32时,仅在INT4Pack场景支持,需配合[object Object]接口完成从INT32到INT4Pack的转换,以及从ND到FRACTAL_NZ的转换,,若数据类型为INT4,则[object Object]的内轴应为偶数。仅支持转置场景。shape支持(k, n),其中k表示矩阵第1维的大小,n表示矩阵第2维的大小。 对于不同伪量化算法模式,[object Object]的为FRACTAL_NZ仅在如下场景下支持:[object Object](aclTensor *, 计算输入):数据类型支持FLOAT16、BFLOAT16、UINT64、INT64(当FLOAT16、BFLOAT16时,数据类型要求和输入[object Object]保持一致;当为UINT64、INT64时,[object Object]仅支持FLOAT16,不转置,[object Object]仅支持INT8,ND转置,模式仅支持perchannel,quantScaleOptional和quantOffsetOptional必须传入空指针,m仅支持[1, 96],k和n要求64对齐,需要首先配合aclnnCast接口完成FLOAT16到FLOAT32的转换,详情请参考,再配合aclnnTransQuantParamV2接口完成FLOAT32到UINT64的转换,详情请参考)。仅支持转置场景。 对于不同伪量化算法模式,[object Object]支持的shape如下:[object Object](aclTensor *, 计算输入):数据类型支持FLOAT16、BFLOAT16、INT32,数据类型为FLOAT16、BFLOAT16时,数据类型要求和输入[object Object]的数据类型保持一致;数据类型为INT32类型时,数据范围限制为[-128, 127],x仅支持FLOAT16,weight仅支持INT8,[object Object]仅支持UINT64/INT64。仅支持转置场景。[object Object](aclTensor *, 计算输入):数据类型支持UINT64,支持ND。不支持。可选输入,当不需要时为空指针;对于不同的伪量化算法模式,支持的shape如下:[object Object](aclTensor *, 计算输入):数据类型支持FLOAT,支持ND。可选输入, 当不需要时为空指针;存在时shape要求与[object Object]一致。不支持。[object Object](aclTensor *, 计算输入):维度支持1维或2维,shape支持(n,)或(1, n)。数据类型支持FLOAT16、FLOAT。当[object Object]的数据类型为BFLOAT16时,本参数要求为FLOAT;当[object Object]的数据类型为FLOAT16时,本参数要求为FLOAT16。[object Object](int, 计算输入):表示在伪量化pergroup和mx下,对输入[object Object]进行反量化计算的groupSize输入,描述一组反量化参数对应的待反量化数据量在Reduce方向的大小。当伪量化算法不为pergroup和mx时传入0;当伪量化算法为pergroup时传入值的范围为[32, k-1]且值要求是32的倍数;在mx,仅支持32。[object Object](aclTensor *, 计算输出):维度支持2维,shape支持(m, n)。数据类型支持FLOAT16、BFLOAT16、INT8。当[object Object]存在时,数据类型为INT8;当[object Object]不存在时,数据类型支持FLOAT16、BFLOAT16,且与输入[object Object]的数据类型一致。性能优化建议:
[object Object][object Object]
[object Object]确定性说明:默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
[object Object](aclTensor *, 计算输入): 数据类型支持FLOAT16。shape支持2~6维,输入shape需要为(batch, m, k),其中batch表示矩阵的批次大小,支持0~4维,m表示单个batch矩阵第1维的大小,k表示单个batch矩阵的第2维的大小,batch维度需要与[object Object]的batch维度满足。当伪量化算法模式为pertensor时,[object Object]不能超过512000000。[object Object](aclTensor *, 计算输入):维度支持2~6维,batch维度需要与[object Object]的batch维度满足,数据类型支持INT8。具体如下:[object Object](aclTensor *, 计算输入):数据类型支持FLOAT16,数据类型要求和输入[object Object]保持一致。 对于不同伪量化算法模式,[object Object]支持的shape如下:[object Object](aclTensor *, 计算输入):数据类型支持FLOAT16,数据类型要求和输入[object Object]保持一致。[object Object](aclTensor *, 计算输入):预留参数,暂未使用,固定传入空指针。[object Object](aclTensor *, 计算输入):预留参数,暂未使用,固定传入空指针。[object Object](aclTensor *, 计算输入):数据类型支持FLOAT16。维度支持1~6维,带batch时,输入shape需要为(batch,1,n),batch要与x和weight的batch维度broadcast后的batch保持一致,不带batch时,输入shape需要为(n,)或(1, n)。[object Object](int, 计算输入):数据类型支持FLOAT16。维度支持2~6维,shape支持(batch, m, n),batch可不存在,支持x与weight的batch维度broadcast,输出batch与broadcast之后的batch一致,m与x的m一致,n与weight的n一致。[object Object](aclTensor *, 计算输出):
[object Object][object Object]
[object Object]确定性说明:默认确定性实现。
公共约束
[object Object]和[object Object]矩阵m、k、n大小在[1, 2^31-1]范围内。[object Object]Reduce维度k需要与[object Object]的Reduce维度k大小相等。- 支持的量化模式:pertensor、perchannel、pergroup和mx。
[object Object]不支持转置,因此不支持,weight仅转置场景支持非连续的Tensor;antiquantScale、antiquantOffsetOptional非连续Tensor仅支持转置场景并且连续性要求和weight保持一致。[object Object]不同量化模式支持的shape:[object Object]和[object Object]为预留参数,暂未使用,固定传入空指针。
[object Object][object Object]
[object Object]- 输入和输出数据类型组合要求
[object Object]undefined
[object Object][object Object][object Object]
[object Object]- 输入和输出数据类型组合要求
[object Object]undefined
[object Object][object Object]
性能优化建议
[object Object]
A16W8调用示例:
[object Object]A16W4调用示例,需要调用
[object Object]接口辅助完成调用:[object Object]