跳到主要内容

DVPP数据处理高性能编程建议

DVPP数据处理高性能编程建议

目前在处理图像、视频数据时,可以使用VPC多功能组合接口、VPC批处理接口、合理选择VDEC的输出格式等编码方式,来提升应用的性能,具体编程建议请参见高性能编程建议

父主题: 精度/性能优化

简介

本文介绍整网推理场景下的精度调优流程、相关配置及典型案例等。由于是调优,因此在调优前,请确保已经完成了整网推理功能调测,功能不阻塞,只是推理精度错误,或推理精度与标杆数据存在少量差距。

在整网推理时,可能由于以下原因导致推理精度错误或者推理精度不达标:

  • 推理功能与其它功能之间的串接问题,当前比较典型的是DVPP+AIPP+模型推理串联使用的场景,该场景主要是因为接口中参数的配置问题、模型转换时AIPP的配置问题导致。

    如果存在DVPP、AIPP功能、模型推理串联使用的场景,建议先排查这部分问题;否则,可以跳过该排查,直接排查算子本身的精度问题。

  • 整网中算子本身的精度问题,该类问题可以借助精度比对工具,根据下文中具体的问题定位流程获取各类数据后,再进行比对、分析,确认是配置问题,还是算子实现问题,再逐一解决问题。本文中会结合具体的比对、分析的案例,介绍如何比对、分析。

图1 推理精度问题

:::note 说明

  • 本文中的“推理”,当前限定为使用om离线模型文件进行推理的场景。
  • 本文中的算子精度问题,是指整网中算子的精度问题,对于自定义的TBE算子,运行验证时的发现精度问题,请参见《TBE&AI CPU算子开发指南》。 :::

父主题: 模型推理精度提升建议

问题描述

推理结果不达标,包括以下两种情况:

  • 算子精度导致推理结果错误,是指整网推理的功能已调通,但推理结果错误,例如目标检测网络MAP结果全0、昇腾om模型的推理结果与标杆网络的推理结果比对时余弦相似度为0。
  • 算子精度导致推理精度不达标,是指整网推理的功能已调通,单次昇腾om模型的推理结果与标杆网络的推理结果比对时余弦相似度在95%以上,但数据集推理精度与标杆数据存在少量差距,例如:
    • 分类网络昇腾om模型,Top1/Top5分别为:0.90/0.70,;标杆网络Top1/Top5分别为:0.92/0.71。
    • 检测网络昇腾om模型MAP精度:0.54;标杆网络MAP精度:0.55。

父主题: 算子精度导致推理结果不达标

问题定位流程

图1 定位流程

  1. 推理结果错误,为了后续定位问题,需要重新执行推理,用于获取模型的Dump数据。

    获取模型的Dump数据,需要调用AscendCL接口打开Dump开关,详细描述请参见《精度比对工具使用指南》。

  2. 配置精度模式。

    1. 配置模型高精度模式后推理,获取模型的Dump数据。推理后,如果精度达标,则进行步骤2.b;如果精度不达标,则进行步骤3

      配置模型高精度模式后推理,可能会影响推理性能,如果在精度达标的同时,需要保持性能,则执行2.b~2.d,配置部分算子保持原始网络中的数据类型。

      配置模型高精度模式,请参见配置网络模型的高精度模式

    2. 使用精度比对工具比对高精度模式下的Dump数据与1获取的Dump数据。

      工具的使用请参见《精度比对工具使用指南》。

    3. 根据2.b中的比对结果识别计算有差异的算子。

      一般来说,每次识别一个差异算子(首个余弦相似度较低的算子,例如低于0.95),找到差异算子后,执行2.d推理,推理的同时获取Dump数据,用来与高精度模式下的Dump数据比对,继续找到下一个差异算子。

      需要循环执行该步骤,直至没有差异算子。

    4. 对于有差异的算子,配置该部分算子保持原始网络中的数据类型,再重新推理。

      配置部分算子的高精度模式,请参见配置部分算子保持原始网络中的数据类型

  3. 关闭数据缓存优化功能。

    1. 恢复模型的原有精度模式后,关闭数据缓存优化功能后推理,如果精度达标,则进行步骤3.b;如果精度不达标,则进行步骤4

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

      关闭数据缓存优化功能,请参见关闭数据缓存优化

    2. 使用精度比对工具比对关闭数据缓存优化功能后的Dump数据与1获取的Dump数据。

      工具的使用请参见《精度比对工具使用指南》。

    3. 根据3.b中的比对结果识别计算有差异的算子。

    4. 联系技术支持(您可以获取日志后单击Link联系技术支持。),提供有差异的算子,进一步分析。

  4. 关闭融合规则功能。

    1. 恢复启用数据缓存优化功能,关闭融合规则功能后推理,如果精度达标,则进行步骤4.b;如果精度不达标,则进行步骤5

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

      关闭融合规则功能,请参见关闭融合规则。关闭某些融合规则可能会导致功能问题,因此在配置关闭融合规则后,系统在不影响功能的前提下关闭部分融合规则,而不是全部融合规则。

    2. 使用精度比对工具比对关闭融合规则后的Dump数据与1获取的Dump数据。

      工具的使用请参见《精度比对工具使用指南》。

    3. 根据4.b中的比对结果识别计算有差异的算子。

    4. 联系技术支持(您可以获取日志后单击Link联系技术支持。),提供有差异的算子,进一步分析。

  5. 检查数据处理或配置。

    推理精度不达标可能是由于数据集、AIPP、后处理方式的差异导致,需逐步进行排查,恢复启用融合规则功能后,请检查数据处理或配置,参见检查数据处理或配置

    如果数据处理逻辑或数据配置有问题,则需修改后重新推理;如果数据处理逻辑或数据配置没有问题,则进行6

  6. 与标杆计算数据比对。

    1. 使用精度比对工具将模型的Dump数据与标杆网络的Dump数据进行对比。

      工具的使用请参见《精度比对工具使用指南》。

    2. 根据6.a中的比对结果识别计算有差异的算子。

    3. 联系技术支持(您可以获取日志后单击Link联系技术支持。),提供有差异的算子,进一步分析。

父主题: 算子精度导致推理结果不达标

在线提单