qat生成的bin模型精度异常

使用ptq量化方式生成的bin模型精度正常,使用qat量化方式生成的bin模型精度异常

我使用了异构的qat训练方式,流程是:原始pth模型、qat训练后的pth模型、qat的onnx模型、bin模型

出现问题之后,我对应测试了原始pth模型和qat训练后的qat模型,模型精度正常;对应测试了原始onnx,模型精度正常;对应测试了quantized_model.onnx,qat版本的onnx模型多了很多的输出节点,舍弃多余节点后精度正常,

个人理解这些节点不会影响bin模型精度。转bin参数位置config.yaml差别不大,qat版本,增加remove_node_type: “Quantize;Dequantize”;修改了calibration_type: ‘load’,其他地方没有改变。

参考了精度调优的网址https://developer.horizon.ai/forumDetail/71036815603174578!

但是 hb_model_verifier这个工具安装失败了,公司板子没有开放安装环境的权限

hrt_model_exec这个工具使用也失败了,

想问一下这个精度异常问题应该如何解决,有没有ptq和qat量化流程的详细对照文档

你好,1.首先麻烦您提供一下开发板型号(xj3 or j5)和工具链版本;

2. 从截图来看,qat版本的quantized_model.onnx模型增加的输出节点都是transpose,并不一定是影响模型的最终输出,你这边保证对比的onnx的输出节点的shape和layout相同即可,可以使用netron可视化工具查看onnx模型的输出节点属性;3. 如果是因为板子的原因导致hb_model_verifier工具运行失败且难以克服,可以将.quanti.onnx模型推理、bin模型在X86环境下进行推理,参考命令:hb_verifier -m quanti.onnx,model.bin -s True (-i 选填) 参考手册:https://developer.horizon.ai/api/v1/fileData/horizon\_xj3\_open\_explorer\_cn\_doc/oe\_mapper/source/ptq/ptq\_tool/hb\_verifier.html-
4.从报错截图来看,hrt_model_exec这个工具使用失败的原因是您模型编译使用的xj3的bernoulli2架构,需要你根据提示设置环境变量,如果还会报错,请再联系我们;-
5.要想了解ptq和qat量化流程请参考用户手册,也可以参考社区文章https://developer.horizon.ai/forumDetail/118363846216941135

1、应该是xj3,工具链版本有点不太确定,试过的版本很多,也时常在升级,有什么方式能够快速的查看吗?

2、如果不影响模型精度的话,如何能删除掉qat版本的transpose节点?是在config.yaml文件中设置吗?类似remove_node_type: “Quantize;Dequantize”

3、我是公司的板子我没有配置环境的权限,因此类似hb_verifier这类工具我按不上,hb_verifier这类工具安装的命令后面都需要配置IP地址,有什么方式能不用输入IP地址,直接在PC端安装?

你好,1.可以在docker中使用pip list来查看horizon_nn、horizon_tc_ui、hbdk、horizon_plugin_pytorch的版本号,以此来确定工具链版本,麻烦在运行pip list后提供以上库的版本号;-
2. 如果想删除模型尾部的transpose节点,可以在编译成bin模型后,使用hb_model_modifier工具删除尾部的transpose节点,使用教程见https://developer.horizon.ai/api/v1/fileData/horizon\_xj3\_open\_explorer\_cn\_doc/oe\_mapper/source/ptq/ptq\_tool/hb\_model\_modifier.html;-
3.如果您这边无法对板端环境进行改变,下载OE开发包后参考手册完成对hb_verifier工具的安装,或者直接使用docker镜像,安装教程参考https://developer.horizon.ai/api/v1/fileData/horizon\_xj3\_open\_explorer\_cn\_doc/oe\_mapper/source/ptq/ptq\_tool/hb\_verifier.html#进行PC端工具的安装,OE开发包获取链接https://developer.horizon.ai/forumDetail/136488103547258769

1、工具链版本

当前在使用的是horizon_xj3_open_explorer_v1.13.3_20220617.tar.gz

2、关于hb_model_modifier工具

ptq版本:

qat版本

想问一下qat模型这个结果正常吗??我理解qat的bin模型应该像onnx模型一样有很多的nodes呀

3、hb_verifier工具

安装包里没有对应的安装文件install_host_package.sh

并且无法下载OE开发包

你好,你目前的工具链版本有点老,麻烦升级一下版本后再做验证,另外,第3条中OE包和docker可以直接在开发机端运行wget命令获取的,如果下载不了可能是网络原因,第二条中运行hb_model_verifier工具后提示无节点availble的原因是已经在yaml配置了remove_node_type: “Quantize; Dequantize”, bin模型尾部的Dequantize节点已被删除,还有就是老的版本可能只支持删除"Quantize; Dequantize"节点,建议你在更新工具链版本后,冲重新运行hb_model_modifier model.bin -a transpose来删除尾部的transpose节点;手册中也说明了输出端的transposes算子是可以删除的,如下:

更正一下命令:hb_model_modifier model.bin -a Transpose

感谢,问题已经解决了remove_node_type: "Quantize;Dequantize"改成remove_node_type: "Quantize"就好了

??

您好,地平线工具链在持续迭代优化,为了给您提供更好的服务,希望您能抽出3分钟左右的时间,将您在使用工具链期间的感受和建议告诉我们,您的宝贵意见对我们很重要,非常感谢!-
问卷链接:地平线算法工具链使用满意度反馈