【CANN文档速递10期】推理网络精度调优

昇腾CANN 发表于 2022/09/08 14:49:24 2022/09/08
【摘要】 推理时精度错误或不达标,怎么办?模型推理时,模型推理功能调测OK,但推理精度错误,或推理精度与标杆数据存在少量差距,这时该怎么做呢?
一、推理时精度错误或不达标,怎么办?

模型推理时,模型推理功能调测OK,但推理精度错误,或推理精度与标杆数据存在少量差距,这时该怎么做呢?我们可以从以下两种导致精度问题的原因入手,建议先检查配置问题、再检查算子精度问题。

图片


二、推理前,哪些配置可能影响精度?

1、JPEGD解码后的输出图片可能存在补边的无效数据,可能影响推理精度。

建议:JPEGD+VPC串联使用时,由于JPEGD解码后的输出图片的宽stride*高stride有128*16对齐的约束,因此解码后的输出图片的宽、高有一些补边的无效数据,所以VPC在处理图片前,应首先对JPEGD对齐后的输出图片进行原分辨率裁剪,目的是去除无效数据对图像精度的影响。

图片2、VPC输出图片格式与AIPP输入图片格式不一致,可能影响推理精度。

建议:AIPP色域转换配置中的源图片格式要与VPC的输出图片格式保持一致,如果不一致,例如,VPC的输出格式是YUV420SP(NV12),而AIPP色域转换的配置是YUV420SP(NV21)-->RGB888,则UV分量的顺序不同会影响模型推理的精度。

三、模型中算子精度不达标,怎么定位呢?

模型中算子精度不达标导致整网推理精度不达标时,可以借助精度比对工具、一键Dump比对工具,根据下文中具体的问题定位流程获取各类数据后,再进行比对、分析,逐一解决问题。

图片

在定位问题前,我们先需要获取相关辅助工具:

• 精度比对工具:用于比对昇腾算子与业界标准算子的运算结果,也可用于比对昇腾算子多次运算结果,但需用户自行准备昇腾算子或业界标准算子的运算结果数据(即Dump数据)。该工具的获取及用法请参见配套版本的《精度比对工具使用指南》。

• 一键Dump比对工具:仅用于比对昇腾算子与TensorFlow/ONNX标准算子的运算结果,无需用户准备昇腾算子和TensorFlow/ONNX标准算子的运算结果数据,只需指定昇腾模型和TensorFlow/ONNX 模型的路径即可。该工具的获取及用法请参见https://gitee.com/ascend/tools/tree/master/msquickcmp

通过工具比对数据时,我们还需要修改或检查以下配置:

1、配置模型高精度模式

• 原因分析

当前默认采用fp16(float16)数据类型进行计算。配置模型高精度模式后推理,可提升精度,但可能会影响推理性能,如果在精度达标的同时,需要保持性能,则可以配置部分算子保持原始网络中的数据类型。

• 配置方法

模型高精度模式:模型转换时增加--precision_mode=allow_fp32_to_fp16

部分算子保持原始网络中的数据类型:模型转换时增加--keep_dtype参数以及--precision_mode=force_fp16

2、关闭数据缓存优化

• 原因分析

当前默认开启数据缓存优化,开启数据缓存优化可提高计算效率、提升性能,但由于部分算子在实现上可能存在未考虑的场景,导致影响精度,因此在出现精度问题时可以尝试关闭数据缓存优化。如果关闭数据缓存优化功能后,精度达标,则还是需要识别出问题算子,反馈给华为工程师进一步分析、解决算子问题,解决算子问题后,建议保持开启数据缓存优化。

• 配置方法

模型转换时增加--buffer_optimize=off_optimize

3、关闭融合规则

• 原因分析

当前默认开启融合规则,开启融合规则可提高计算效率、提升性能,但算子之间可能会融合,融合后的部分算子在实现上可能存在未考虑的场景,导致影响精度,因此在出现精度问题时可以尝试关闭融合规则。如果关闭融合规则功能后,精度达标,则还是需要识别出问题算子,反馈给华为工程师进一步分析、解决算子问题,解决算子问题后,建议保持开启融合规则功能。

• 配置方法

模型转换时增加--fusion_switch_file参数,指定融合规则配置文件,一键式关闭融合规则。融合规则配置文件内容如下:

图片

4、检查数据处理或配置

推理精度不达标可能是由于数据集预处理或推理结果后处理方式与标杆不一致导致,也有可能是由于AIPP配置不正确导致,需一一检查、修改后,重新推理。

5、与标杆计算数据比对

上面的配置、检查都完成后,如果推理精度还是不达标,最后,我们可以使用一键Dump比对工具比对昇腾算子与TensorFlow/ONNX标准算子的运算结果的差异,然后联系华为工程师,进一步定位算子问题并解决。

四、更多介绍

了解更详细的内容,登录昇腾社区,在开发者文档中心

https://www.hiascend.com/document?tag=community-developer

阅读相关文档:

图片

昇腾CANN文档中心致力于为开发者提供更优质的内容和更便捷的开发体验,助力CANN开发者共建AI生态。任何意见和建议都可以在评论区留言,您的每一份关注都是我们前进的动力。 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。