10.4. 高阶指南(QAT)
量化是指以低于浮点精度的比特宽度执行计算和存储张量的技术。量化模型使用整数而不是浮点值对张量执行部分或全部操作。与典型的 FP32 模型相比,horizon_plugin_pytorch 支持 INT8 量化,从而使模型大小减少 4 倍,内存带宽需求减少 4 倍。对 INT8 计算的硬件支持通常比 FP32 计算快 2 到 4 倍。量化主要是一种加速推理的技术,量化运算只支持前向计算。
horizon_plugin_pytorc 提供了适配 BPU 的量化操作,支持量化感知训练,该训练使用伪量化模块对前向计算和反向传播中的量化误差进行建模。请注意,量化训练的整个计算过程是使用浮点运算执行的。在量化感知训练结束时,horizon_plugin_pytorch 提供转换函数,将训练后的模型转换为定点模型,在 BPU 上使用更紧凑的模型表示和高性能矢量化操作。
本章内容为您详细介绍地平线基于 PyTorch 开发的 horizon_plugin_pytorch 的量化训练工具。
- 10.4.1. 环境依赖
- 10.4.2. 快速上手
- 10.4.3. 使用指南
- 10.4.4. API 手册
- 10.4.4.1. 量化 API
horizon_plugin_pytorch.quantization.fuse_modules.fuse_modules()
horizon_plugin_pytorch.quantization.quantize.convert()
horizon_plugin_pytorch.quantization.quantize.prepare_calibration()
horizon_plugin_pytorch.quantization.quantize.prepare_qat()
horizon_plugin_pytorch.quantization.quantize_fx.convert_fx()
horizon_plugin_pytorch.quantization.quantize_fx.fuse_fx()
horizon_plugin_pytorch.quantization.quantize_fx.prepare_calibration_fx()
horizon_plugin_pytorch.quantization.quantize_fx.prepare_qat_fx()
horizon_plugin_pytorch.utils.fx_helper.wrap()
horizon_plugin_pytorch.quantization.fuse_modules.fuse_known_modules()
horizon_plugin_pytorch.quantization.qconfig.get_default_calib_qconfig()
horizon_plugin_pytorch.quantization.qconfig.get_default_qat_out_qconfig()
horizon_plugin_pytorch.quantization.qconfig.get_default_qat_qconfig()
horizon_plugin_pytorch.utils.onnx_helper.export_to_onnx()
horizon_plugin_pytorch.quantization.check_model()
horizon_plugin_pytorch.quantization.compile_model()
horizon_plugin_pytorch.quantization.export_hbir()
horizon_plugin_pytorch.quantization.perf_model()
horizon_plugin_pytorch.quantization.visualize_model()
- 10.4.4.2. Horizon 算子 API
- 10.4.4.3. 支持的算子
- 10.4.4.1. 量化 API
- 10.4.5. 注意事项
- 10.4.6. 数据校准