文件最后提交记录最后更新时间
3 个月前
3 个月前
6 个月前
5 个月前
4 个月前
4 个月前
5 个月前
7 个月前
3 个月前
README.md

DynamicQuant

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品
Atlas 训练系列产品
Kirin X90 处理器系列产品
Kirin 9030 处理器系列产品

功能说明

  • 算子功能:为输入张量进行per-token对称动态量化。

  • 计算公式:

    • 若不输入smoothScalesOptional,则

    scaleOut=row_max(abs(x))/dtypeMax scaleOut=row\_max(abs(x))/dtypeMax

    yOut=round(x/scaleOut) yOut=round(x/scaleOut)

    • 若输入smoothScalesOptional,则

    input=x⋅smoothScalesOptionalinput = x\cdot smoothScalesOptional

    scaleOut=row_max(abs(input))/dtypeMax scaleOut=row\_max(abs(input))/dtypeMax

    yOut=round(input/scaleOut) yOut=round(input/scaleOut)

    其中row_max代表每行求最大值,dtypeMax为输出数据类型的最大值。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入
  • 算子输入的Tensor,对应公式中的`x`。
  • shape维度要大于1。
FLOAT16、BFLOAT16 ND
smooth_scales 可选输入
  • 算子输入的Tensor,对应公式中的`smoothScalesOptional`。
  • shape维度与`x`的最后一维相同。
FLOAT16、BFLOAT16 ND
group_index 可选输入
  • 指定组的索引。
  • shape支持1D,为[E, ],且shape跟输出`scale`的shape的第一维相同。
INT32 ND
dst_type 可选属性
  • 指定输出y的数据类型。支持DT_INT4(29)、DT_INT8(2)、DT_FLOAT8_E5M2(35)、DT_FLOAT8_E4M3FN(36)、DT_HIFLOAT8(34)。
  • 默认值为DT_INT8(2)。
INT -
y 输出
  • 量化后的输出张量,对应公式中的`yOut`。
  • 数据类型与参数`dst_type`配置的数据类型一致,shape与输入`x`的shape保持一致。
INT8、INT4、FLOAT8_E5M2、FLOAT8_E4M3FN、HIFLOAT8 ND
scale 输出 量化后的缩放系数,对应公式中的`scaleOut`。 FLOAT32 ND
  • Atlas 推理系列产品、Atlas 训练系列产品 :

    • 输入xsmooth_scales:数据类型仅支持FLOAT16。
    • 输出y:数据类型仅支持INT8。
    • 输入smooth_scales为预留参数,当前版本不参与计算。
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品:输出y的数据类型仅支持INT8、INT4。

  • Kirin X90/Kirin 9030 处理器系列产品:

    • 输入x:数据类型仅支持FLOAT16。
    • 可选输入smooth_scales:数据类型仅支持FLOAT16。
    • 输出y:数据类型仅支持INT8。

约束说明

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_dynamic_quant 通过aclnnDynamicQuant接口方式调用DynamicQuant算子。
图模式 - 通过算子IR构图方式调用DynamicQuant算子。