量化(Quantization)

量化配置

QConfig

一个配置类指明如何对 QATModuleactivationweight 进行量化。

可用预设配置如下:

min_max_fakequant_qconfig

使用 MinMaxObserverFakeQuantize 预设。

ema_fakequant_qconfig

使用 ExponentialMovingAverageObserverFakeQuantize 预设。

sync_ema_fakequant_qconfig

使用 SyncExponentialMovingAverageObserverFakeQuantize 的预设。

ema_lowbit_fakequant_qconfig

使用 ExponentialMovingAverageObserverFakeQuantize 且数值类型为 qint4 的预设。

calibration_qconfig

对激活值使用 HistogramObserver 进行后量化(无 FakeQuantize )的预设。

tqt_qconfig

使用 TQT 进行假量化的预设。

passive_qconfig

使用 PassiveObserverFakeQuantize 的预设。

easyquant_qconfig

用于 easyquant 算法的 QConfig,等价于 passive_qconfig.

观察

Observer

所有 Observer 的基类

Observer.enable

Observer.disable

MinMaxObserver

一个通过记录输入 Tensor 的滑动最小值、最大值来计算 scale 的 Observer。

SyncMinMaxObserver

一个分布式版本的 MinMaxObserver

ExponentialMovingAverageObserver

一个支持动量更新最小、最大值的 MinMaxObserver

SyncExponentialMovingAverageObserver

一个分布式版本的 ExponentialMovingAverageObserver

HistogramObserver

一个使用滑动直方图统计算法更新最小、最大值的 MinMaxObserver

PassiveObserver

一个支持直接设置 scale 而非通过统计得到的 Observer。

假量化

FakeQuantize

可根据observer的scale和zero_point参数来进行量化(Quantization)和反量化(Dequantization)的模块。

FakeQuantize.enable

FakeQuantize.disable

TQT

TQT: https://arxiv.org/abs/1903.08066 Trained Quantization Thresholds for Accurate and Efficient Fixed-Point Inference of Deep Neural Networks

量化操作

quantize_qat

通过使用 apply 并设置相应的qconfig,递归地将float Module 转换为 QATModule

quantize

使用 applyQATModule 递归地转换为 QuantizedModule

apply_easy_quant

应用 EasyQuant 算法(https://arxiv.org/pdf/2006.16669)更新 scale。

enable_fake_quant

使用 apply 在QATModule中递归地启用 module fake quantization 。

disable_fake_quant

使用 apply 在QATModule中递归地禁用 module fake quantization。

enable_observer

使用 apply 在QATModule中递归地启用 module observer 。

disable_observer

使用 apply 在QATModule中递归地禁用 module observer 。

propagate_qconfig

使用 apply 递归地设置 module 的qconfig。

reset_qconfig

根据 qconfig 来替换模块中所有的 _FakeQuantizeObserver

Utils

QParams

一个辅助类用于标准化 FakeQuant、Observer 和 Tensor 的 qparams 格式。

QuantMode

量化模式枚举类。

create_qparams

根据给定的量化模式返回对应的 QParams

fake_quant_bias

根据给定输入和权重的 scale 属性,对给定的偏置进行假量化,目前仅支持输入类型为 qint8,偏置类型为 qint32。

fake_quant_tensor

对输入 Tensor 进行假量化操作。