昇腾社区首页
中文
注册
开发者
下载

aclnnWeightQuantBatchMatmulV3

产品支持情况

[object Object]undefined

功能说明

  • 算子功能:完成一个输入为伪量化场景的矩阵乘计算,并可以实现对于输出的量化计算。相较于aclnnWeightQuantBatchMatmulV2接口,此接口变化点为:

    新增innerPrecise参数,用于支持高精度或者高性能计算模式选择。A16W4 per_group场景在batchSize<=16的场景下可设置为1, 提升性能。

  • 计算公式

    y=x@ANTIQUANT(weight)+biasy = x @ ANTIQUANT(weight) + bias

    公式中的weightweight为伪量化场景的输入,其反量化公式ANTIQUANT(weight)ANTIQUANT(weight)

    ANTIQUANT(weight)=(weight+antiquantOffset)antiquantScaleANTIQUANT(weight) = (weight + antiquantOffset) * antiquantScale

    当用户配置quantScaleOptional输入时,会对输出进行量化处理, 其量化公式为

    y=QUANT(x@ANTIQUANT(weight)+bias)=(x@ANTIQUANT(weight)+bias)quantScale+quantOffset\begin{aligned} y &= QUANT(x @ ANTIQUANT(weight) + bias) \\ &= (x @ ANTIQUANT(weight) + bias) * quantScale + quantOffset \\ \end{aligned}

    当用户配置quantScaleOptional输入为nullptr, 则直接输出:

    y=x@ANTIQUANT(weight)+biasy = x @ ANTIQUANT(weight) + bias

函数原型

每个算子分为,必须先调用“aclnnWeightQuantBatchMatmulV3GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnWeightQuantBatchMatmulV3”接口执行计算。

[object Object]
[object Object]

aclnnWeightQuantBatchMatmulV3GetWorkspaceSize

  • 参数说明

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]

aclnnWeightQuantBatchMatmulV3

  • 参数说明

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

约束说明

  • 确定性说明:

    • [object Object]Atlas 训练系列产品[object Object]、[object Object]Atlas 推理系列产品[object Object]:aclnnWeightQuantBatchMatmulV3默认非确定性实现,支持通过aclrtCtxSetSysParamOpt开启确定性。
  • per_channel模式:为提高性能,推荐使用transpose后的weight输入。m范围为[65, 96]时,推荐使用数据类型为UINT64/INT64的antiquantScale。

  • per_group模式:在A16W4,batchSize<=16的场景下可设置innerPrecise参数为1,并且weight数据格式设为FRACTAL_NZ,来提升性能,但会存在一定的精度下降。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]