文件最后提交记录最后更新时间
2 个月前
2 个月前
3 个月前
29 天前
2 个月前
2 个月前
3 个月前
2 个月前
README

FakeQuantWithMinMaxArgs

产品支持情况

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

功能说明

  • 算子功能:对输入x进行per-tensor假量化(Fake Quantization),通过Nudge算法将min/max调整为量化步长的整数倍后,执行量化-反量化操作。

  • 计算公式:

    Nudge预计算(host端):

    • qMin=narrow_range?1:0qMin = narrow\_range ? 1 : 0
    • qMax=2num_bits−1qMax = 2^{num\_bits} - 1
    • scale=(max−min)/(qMax−qMin)scale = (max - min) / (qMax - qMin)
    • scaleInv=(qMax−qMin)/(max−min)scaleInv = (qMax - qMin) / (max - min)(必须独立除法计算,不能用 1/scale1/scale,精度保障)
    • nudgedZeroPoint=round(qMin−min/scale)nudgedZeroPoint = round(qMin - min / scale),裁剪至 [qMin,qMax][qMin, qMax]
    • nudgedMin=(qMin−nudgedZeroPoint)×scalenudgedMin = (qMin - nudgedZeroPoint) \times scale
    • nudgedMax=(qMax−nudgedZeroPoint)×scalenudgedMax = (qMax - nudgedZeroPoint) \times scale
    • quantZero=floor(−nudgedMin×scaleInv+0.5)quantZero = floor(-nudgedMin \times scaleInv + 0.5)(必须基于nudgedMin重算,不能复用nudgedZeroPoint,精度保障)

    前向计算(kernel端):

    clamped=clamp(x,nudgedMin,nudgedMax)clamped = clamp(x, nudgedMin, nudgedMax)

    q_offset=floor((clamped−nudgedMin)×scaleInv+(0.5−quantZero))q\_offset = floor((clamped - nudgedMin) \times scaleInv + (0.5 - quantZero))

    y=q_offset×scaley = q\_offset \times scale

    • 当输入x为NaN时,NaN直通到输出y(NaN passthrough)。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入
  • 表示算子输入的Tensor,对应公式中的x;
  • shape与输出y一致。
FLOAT ND
min 可选属性
  • 表示量化范围的最小值,对应公式中的min;
  • 必须小于max;
  • 缺省值为-6.0。
FLOAT -
max 可选属性
  • 表示量化范围的最大值,对应公式中的max;
  • 必须大于min;
  • 缺省值为6.0。
FLOAT -
num_bits 可选属性
  • 表示量化位宽,对应公式中的num_bits;
  • 取值范围[2, 16];
  • 缺省值为8。
INT -
narrow_range 可选属性
  • 表示是否使用窄量化范围;
  • true时qMin=1,false时qMin=0;
  • 缺省值为false。
BOOL -
y 输出
  • 表示假量化的计算输出,对应公式中的y;
  • shape和输入x一致。
FLOAT ND

约束说明

  • 输入x与输出y的数据类型仅支持FLOAT32,shape必须完全一致。
  • min必须小于max
  • num_bits取值范围为[2, 16]。

调用说明

调用方式 样例代码 说明
图模式 test_geir_fake_quant_with_min_max_args 通过GE IR构图方式调用FakeQuantWithMinMaxArgs算子(per-tensor min/max/num_bits/narrow_range标量属性)。