Caffe场景支持量化、非量化的精度比对。
文件 |
说明 |
获取方式 |
---|---|---|
非量化原始模型的npy文件 |
标杆数据 |
|
通过ATC转换离线模型文件生成的json文件 |
获取算子的映射关系 |
|
非量化离线模型在昇腾AI处理器上运行生成的dump数据文件 |
待比对数据 |
Caffe的离线推理场景,为了提升性能进行了模型量化,但量化后可能存在精度下降的问题。为了提升性能,一定的精度下降是可以接受的,一般一个模型精度下降在1%范围内,但如果误差较大,那么就需要定位原因。引起精度误差较大的原因主要有:
执行非量化原始模型(GPU/CPU) vs 量化原始模型(GPU/CPU)。
执行量化原始模型(GPU/CPU) vs 量化离线模型(关闭融合规则)(NPU)。
由于ATC工具的模型转换操作默认开启了算子融合功能,故为了排除融合后算子无法直接进行精度比对,模型转换先关闭算子融合。
atc --model=$HOME/module/resnet50_deploy_model.prototxt --weight=$HOME/module/resnet50_deploy_weights.caffemodel --framework=0 --output=$HOME/module/out/caffe_resnet50_off --soc_version=Ascend310B1 --fusion_switch_file=$HOME/module/fusion_switch.cfg
关闭算子融合功能需要通过--fusion_switch_file参数指定算子融合规则配置文件(如fusion_switch.cfg),并在配置文件中关闭算子融合。融合规则配置文件关闭配置如下:
{ "Switch":{ "GraphFusion":{ "ALL":"off" }, "UBFusion":{ "ALL":"off" } } }
ATC run success
成功执行命令后,在$HOME/module/out/caffe_resnet50_off目录下生成离线模型(如:caffe_resnet50.om)。
atc --mode=1 --om=$HOME/module/out/caffe_resnet50_off/caffe_resnet50.om --json=/home/HwHiAiUser/data/resnet50.json
文件 |
说明 |
获取方式 |
---|---|---|
非量化原始模型的npy文件 |
标杆数据 |
|
二选一 |
获取算子的映射关系 |
|
量化离线模型在昇腾AI处理器上运行生成的dump数据文件 |
待比对数据 |