- Post Training Dynamic Quantization,模型训练完毕后的动态量化
- Post Training Static Quantization,模型训练完毕后的静态量化;
- QAT(Quantization Aware Training),模型训练中开启量化。
- 具体demo见 tensor_quantize_demo.py
- 对训练后的模型权重执行动态量化,将浮点模型转换为动态量化模型,仅对模型权重进行量化,偏置不会量化。
- 默认情况下,仅对 Linear 和 RNN 变体量化 (因为这些layer的参数量很大,收益更高)。
torch.quantization.quantize_dynamic(model, qconfig_spec=None, dtype=torch.qint8, mapping=None, inplace=False)
- 参数:
- model:浮点模型
- qconfig_spec:
- 集合:比如: qconfig_spec={nn.LSTM, nn.Linear} 。罗列要量化的
- 字典: qconfig_spec = {nn.Linear : default_dynamic_qconfig, nn.LSTM : default_dynamic_qconfig}
- dtype: float16 或 qint8
- mapping:就地执行模型转换,原始模块发生变异
- inplace:将子模块的类型映射到需要替换子模块的相应动态量化版本的类型