开发者
资源
[object Object][object Object][object Object]undefined
[object Object]
  • 接口功能:完成一个输入为伪量化场景的矩阵乘计算。此接口仅支持矩阵乘的右输入矩阵为FRACTAL_NZ格式。
  • 计算公式
    • 基础计算公式:

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

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

      ANTIQUANT(weight)=(weight+antiquantOffset)antiquantScaleANTIQUANT(weight) = (weight + antiquantOffset) * antiquantScale
    • 需要对输出进行量化处理时的量化公式:

      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}
[object Object]

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

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值:

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

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

    [object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值:

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

[object Object]
  • 确定性说明:aclnnWeightQuantBatchMatmulNz默认确定性实现。
  • 支持的量化模式:perchannel、pergroup和mx
  • 输入和输出支持以下数据类型和shape组合:
    • Atlas 350 加速卡:[object Object]undefined
      • x的shape均为(m, k),y的shape均为(m, n),biasOptional的shape为null/(1, n)/(n,)。
      • weight的数据类型为INT32或FLOAT时,表示紧密排布的INT4或FLOAT4_E2M1,需要满足以下约束:
        • 原始ND矩阵的最后一维8对齐;
        • 在调用本接口前,必须配合[object Object]接口完成从稀疏排布的INT32/FLOAT到紧密排布的INT4/FLOAT4_E2M1及ND到FRACTAL_NZ的转换,
        • 传入本接口的FRACTAL_NZ矩阵的shape为(ceil(n/16), ceil(k/16), 16, 2)。
        • weight仅支持非转置,原始ND矩阵的shape均为(k, n)。
      • weight的数据类型为INT4或FLOAT4_E2M1时,需要满足以下约束:
        • 原始ND矩阵的最后一维2对齐;
        • 在调用本接口前,必须配合[object Object]接口完成从ND到FRACTAL_NZ的转换,
        • 传入本接口的FRACTAL_NZ矩阵的shape为(ceil(n/16), ceil(k/16), 16, 16)。
        • weight仅支持非转置,原始ND矩阵的shape均为(k, n)。
      • weight的数据类型为INT8时,需要满足以下约束:
        • 传入本接口的FRACTAL_NZ矩阵的shape为(ceil(n/32), ceil(k/16), 16, 32)。
        • k大小在[1, 65535]范围内,n大小在[2, 65535]范围内;
        • weight支持转置和非转置,原始ND矩阵的shape为(n, k)或(k, n)。
      • m大小在[1, 2^31-1]范围内。
[object Object]

仅供参考,具体编译和执行过程请参考

  • x为FLOAT16,weight为FLOAT32调用示例,需要调用 [object Object] 接口辅助完成调用:

    [object Object]
  • x为FLOAT16,weight为INT8调用示例,需要调用 [object Object] 接口辅助完成调用:

    [object Object]