评价此页

HistogramObserver#

class torch.ao.quantization.observer.HistogramObserver(bins=2048, dtype=torch.quint8, qscheme=torch.per_tensor_affine, reduce_range=False, quant_min=None, quant_max=None, factory_kwargs=None, eps=1.1920928955078125e-07, is_dynamic=False, **kwargs)[source]#

该模块记录张量值的运行直方图以及最小值/最大值。 calculate_qparams 将计算 scale 和 zero_point。

参数
  • bins (int) – 用于直方图的 bin 数量

  • dtype (dtype) – quantize 节点所需的 dtype 参数,用于实现参考模型规范

  • qscheme – 要使用的量化方案

  • reduce_range – 将量化数据类型的范围减少 1 位

  • eps (Tensor) – float32 的 epsilon 值,默认为 torch.finfo(torch.float32).eps

scale 和 zero point 的计算方法如下:

  1. 创建输入张量的直方图。

    直方图是连续计算的,并且每个 bin 的范围会随着观察到的新张量而变化。

  2. 在直方图中搜索分布以获得最优的 min/max 值。

    min/max 值的搜索确保了与浮点模型相比,量化误差的最小化。

  3. 计算 scale 和 zero point 的方法与

    MinMaxObserver