默认是uint8量化,需要安装onnx 1.8或以上版本。
目前在ubuntu 20.04下测试通过
#Dynamic quantization 动态量化
import onnx
from onnxruntime.quantization import quantize_dynamic, QuantType
model_fp32 = 'path/to/the/model.onnx'
model_quant = 'path/to/the/model.quant.onnx'
quantized_model = quantize_dynamic(model_fp32, model_quant, weight_type=QuantType.QUInt8)
--------------------------
# QAT quantization QAT量化
import onnx
from onnxruntime.quantization import quantize_qat, QuantType
model_fp32 = 'path/to/the/model.onnx'
model_quant = 'path/to/the/model.quant.onnx'
quantized_model = quantize_qat(model_fp32, model_quant)
量化后使用同fp32时一样的代码进行推理,无需修改。
还有一种方法是静态量化,需要用少量数据对模型进行校准。可以参见 以下链接。
其它文章中关于静态量化时校准的信息: 模型量化(3):ONNX 模型的静态量化和动态量化_AI Studio的博客-CSDN博客_onnx模型量化