megengine.quantization

注解

import megengine.quantization as Q

model = ... # The pre-trained float model that needs to be quantified

Q.quantize_qat(model, qconfig=...) #

for _ in range(...):
    train(model)

Q.quantize(model)

具体用法说明请参考用户指南页面 —— 量化(Quantization)

量化配置 QConfig

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 的基类

MinMaxObserver

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

SyncMinMaxObserver

一个分布式版本的 MinMaxObserver

ExponentialMovingAverageObserver

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

SyncExponentialMovingAverageObserver

一个分布式版本的 ExponentialMovingAverageObserver

HistogramObserver

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

PassiveObserver

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

伪量化

FakeQuantize

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

TQT

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

LSQ

LSQ:https://arxiv.org/pdf/1902.08153.pdf 在每个权重和激活层的量化器步长处评估和缩放任务的梯度损失

量化操作

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

实用工具

QParams

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

QuantMode

量化模式枚举类。

create_qparams

类型模式

QuantMode

fake_quant_bias

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

fake_quant_tensor

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