矩阵乘输出的量化/反量化

功能介绍

对于特定输入输出数据类型,Matmul支持将计算结果从CO1搬出到Global Memory时,对输出C矩阵元素执行数据量化或反量化操作。

Matmul量化/反量化包含两种模式:同一系数的量化/反量化模式、向量的量化/反量化模式,开发者在算子Tiling侧调用SetDequantType接口设置量化或反量化模式,这两种模式的具体区别为:
  • 同一系数的量化/反量化模式(PER_TENSOR模式):整个C矩阵对应一个量化参数,量化参数的shape为[1]。开发者在算子Kernel侧调用接口SetQuantScalar设置量化参数。
  • 向量的量化/反量化模式(PER_CHANNEL模式):C矩阵的shape为[m, n],每个channel维度即C矩阵的每一列,对应一个量化参数,量化参数的shape为[n]。开发者在算子Kernel侧调用接口SetQuantVector设置量化参数。
表1 量化/反量化模式对应的接口配置

模式

Tiling侧接口

Kernel侧接口

同一系数的量化/反量化

SetDequantType(DequantType::SCALAR)

SetQuantScalar(gmScalar)

向量的量化/反量化

SetDequantType(DequantType::TENSOR)

SetQuantVector(gmTensor)

使用场景

需要对矩阵计算结果进行量化/反量化操作的场景,当前该场景下,Matmul输入输出矩阵支持的数据类型如下表所示。

表2 Matmul量化/反量化支持的数据类型

A矩阵

B矩阵

C矩阵

支持平台

half

half

int8_t

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

bfloat16_t

bfloat16_t

int8_t

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

int8_t

int8_t

half

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

int4b_t

int4b_t

half

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

int8_t

int8_t

int8_t

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

约束说明

调用示例