aclnnWeightQuantBatchMatmulV2
产品支持情况
功能说明
- 接口功能:完成一个输入为伪量化场景的矩阵乘计算,并可以实现对于输出的量化计算。
- 计算公式:
公式中的为伪量化场景的输入,其反量化公式为
- 当不需要对输出进行量化操作时,其计算公式为
- 当需要对输出再进行量化处理时,其量化公式为
函数原型
每个算子分为,必须先调用“aclnnWeightQuantBatchMatmulV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnWeightQuantBatchMatmulV2”接口执行计算。
aclnnWeightQuantBatchMatmulV2GetWorkspaceSize
参数说明
[object Object][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]
aclnnWeightQuantBatchMatmulV2
约束说明
- 确定性说明:aclnnWeightQuantBatchMatmulV2默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
[object Object][object Object]
[object Object][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][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 *, 计算输出):