SOPHON SDK进行int8模型量化过程中出现的常见问题
1. int8的输出和fp32模型输出差异比较大怎么办?
- 检查前后处理是否有问题,是否遗漏int8网络输入输出的scale处理。
- 通过量化可视化工具分析int8的输出和fp32的输出的精度差异,做个输出曲线对比;通过曲线查找出导致误差较大的层,通过更换该层的量化方式调整结果,找到最优量化方式,若仍然不能满足精度要求,则可将该层设置为float输出,不进行量化。
2. 如何提高模型的量化效率和精度
- 对于检测和分类模型,使用自动量化工具,量化成功后精度测试;
- 对于其他类模型,手动指定量化参数,量化成功后精度测试;
- 自动量化失败 或 精度不够的,反馈给我们的技术支持。
3. 可以使用已有的量化表(比如 TensorRT 量化后得到的量化表)作为输入来完成BModel模型的量化吗?
目前不支持,前端转换成umodel之后网络的layer的名字对不上。
4. 一键量化会不会遍历KL、MAX这些量化策略,策略的细节有哪些?
autocalib会遍历所有量化策略,循环进行量化和测试精度的过程,叠加每次进行多次 iteration 的推理,选优提高量化精度。目前搜索策略有:
comb_list: [post_process_use_fp32,0],[first_conv_compute_by_fp32,1],[first_conv_enableper_channel,1],-accuracy_opt=true,1],[per_channel=t rue,1],[-thmethod=SYMKL,1],[-th_methodsD,1],[-thmethod=MAX&#