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¶
A config class indicating how to do quantize toward |
可用预设配置¶
min_max_fakequant_qconfig
使用
MinMaxObserver
和FakeQuantize
预设。ema_fakequant_qconfig
sync_ema_fakequant_qconfig
ema_lowbit_fakequant_qconfig
使用
ExponentialMovingAverageObserver
和FakeQuantize
且数值类型为qint4
的预设。calibration_qconfig
对激活值使用
HistogramObserver
进行后量化(无FakeQuantize
)的预设。tqt_qconfig
使用
TQT
进行假量化的预设。passive_qconfig
使用
PassiveObserver
和FakeQuantize
的预设。easyquant_qconfig
用于 easyquant 算法的 QConfig,等价于
passive_qconfig
.
Observer¶
所有 Observer 的基类 |
|
一个通过记录输入 Tensor 的滑动最小值、最大值来计算 scale 的 Observer。 |
|
一个分布式版本的 |
|
一个支持动量更新最小、最大值的 |
|
一个分布式版本的 |
|
一个使用滑动直方图统计算法更新最小、最大值的 |
|
一个支持直接设置 |
FakeQuantize¶
可根据observer的scale和zero_point参数来进行量化(Quantization)和反量化(Dequantization)的模块。 |
|
TQT: https://arxiv.org/abs/1903.08066 Trained Quantization Thresholds for Accurate and Efficient Fixed-Point Inference of Deep Neural Networks |
|
LSQ: https://arxiv.org/pdf/1902.08153.pdf Estimating and scaling the task loss gradient at each weight and activation layer's quantizer step size |
量化操作¶
使用 |
|
应用 |
|
使用 |
|
使用 |
|
使用 |
|
使用 |
|
使用 |
|
根据 |
Utils¶
一个辅助类用于标准化 FakeQuant、Observer 和 Tensor 的 |
|
量化模式枚举类。 |
|
|
根据给定输入和权重的 scale 属性,对给定的偏置进行假量化,目前仅支持输入类型为 qint8,偏置类型为 qint32。 |
|
对输入 Tensor 进行假量化操作。 |