模型量化
本章节主要介绍模型量化工具的使用细节。进迭时空 RISC - V 系列芯片支持直接部署浮点(FP32)模型,但我们强烈建议您将浮点模型进一步量化为定点(INT8)模型。量化后模型的精度损失一般可以控制在 1%以内,但推理性能却可以提升数十倍!
1 模型量化简介
XQuant 是基于 PPQ (0.6.6 +)开发的量化工具,集成了已经调整好的适配芯片的量化策略,使用 Json 配置文件调用统一接口实现模型量化。
2 量化工具说明
当前,模型量化功能已经被集成进 spine convert
命令中,您可以通过 -c
或 --config
选项指定相关量化配置文件路径。
【提示】量化工具安装包位于 SDK 中 spacengine - wheel/xquant
目录下,您也可以将其安装到指定的 Python 虚拟环境中。安装示例:
$ python3 -m pip install spacengine - wheel/xquant/xquant - 1.1.0 - py3 - none - any.whl --extra - index - url https://pypi.ngc.nvidia.com
2.1 QuickStart
Python Code 以及 Shell 示例在 xquant_samples
中有源码,以便于快速开始模型量化
Python Code 使用
import xquant
demo_json = dict()
# 以下缺省对demo_json内容的填入
demo_json_path = "./demo_json.json"
# 使用字典的方式
xquant.quantize_onnx_model(demo_json)
# 使用json文件的方式
xquant.quantize_onnx_model(demo_json_path)
# 支持API调用时传入模型路径或模型Proto
# xquant.quantize_onnx_model("resnet18.json", "/home/share/modelzoo/classification/resnet18/resnet18.onnx")
# xquant.quantize_onnx_model(
# "resnet18.json", "/home/share/modelzoo/classification/resnet18/resnet18.onnx", "resnet18_output.onnx"
# )
# import onnx
# onnx_model = onnx.load("/home/share/modelzoo/classification/resnet18/resnet18.onnx")
# quantized_onnx_model = xquant.quantize_onnx_model("resnet18.json", onnx_model)
Shell 使用
python -m xquant --config./demo_json.json
# 指定输入以及输出模型路径
# python -m xquant -c./demo_json.json -i demo.onnx -o demo.q.onnx