假设有预训练的浮点模型和 Python 脚本用于在量化之前评估其准确性/MAP。在此情况下,Quantizer API 会用量化模块替代浮点模块。对于标准评估,评估函数有助于量化模块的前传。通过将 quant_mode 标志配置为 caliber,即可在训练后量化的评估过程中确定张量的量化步骤。校准完成后,将 quant_mode 设置为“test”以评估量化模型。
- 导入 vai_q_pytorch 模块:
from pytorch_nndct.apis import torch_quantizer, dump_xmodel
- 以需要输入的量化来生成量化器,并获取转换后的模型:
input = torch.randn([batch_size, 3, 224, 224]) quantizer = torch_quantizer(quant_mode, model, (input)) quant_model = quantizer.quant_model
- 使用转换后的模型前传神经网络:
acc1_gen, acc5_gen, loss_gen = evaluate(quant_model, val_loader, loss_fn)
- 输出量化结果并部署模型:
if quant_mode == 'calib': quantizer.export_quant_config() if deploy: quantizer.export_torch_script() quantizer.export_onnx_model() quantizer.export_xmodel(deploy_check=False)