性能优化简介

在探讨可能的优化技术之前,我们先定义什么是推理性能以及如何衡量它。请注意,报告的推理性能往往侧重于执行速度。事实上,至少有四种相关因素,即精度、吞吐量/延迟和效率。本文的其余部分介绍如何平衡这些关键因素。

什么是推理性能

一般而言,性能指的是模型处理实时数据的速度。用于衡量性能的两个关键指标:延迟和吞吐量从根本上是互相关联的。

_images/LATENCY_VS_THROUGHPUT.svg

延迟测量的是处理单个输入所需的推理时间(毫秒)。如果同时执行多个输入(如通过批处理),那么整体吞吐量(在特定视觉处理任务中,则是每秒的推理次数或每秒帧数,即 FPS)通常更为重要。用处理的输入数量除以处理时间来计算吞吐量

端到端应用性能

有一点很重要,就是要将神经网络的“纯”推理时间与端到端应用性能分开。例如,当在 dGPU 等加速器上处理主机输入张量时,主机和设备之间的数据传输可能会意外地影响性能。

同样,输入预处理也会显著增加推理时间。如在获得性能数据一节中所述,在训练推理性能时,一种选择就是单独测量所有这些项目。但对于端到端场景,请考虑通过 OpenVINO 和异步执行进行图像预处理,作为分摊数据传输等通信成本的方式。您可以在通用优化文档中找到更多详细内容。

首次推理延迟是另一个特定例子(例如,需要快速启动应用时),由此产生的性能可能主要受模型加载时间的影响。可以考虑用模型缓存来缩短模型加载/编译时间。

最后,内存空间限制是设计应用时的另一种可能的考虑因素。虽然这是下一节所提到的模型优化技术的动机,但请注意,面向吞吐量的执行通常需要更多内存,详情请参见运行时推理优化

备注

如需获取 OpenVINO 的性能数据,如何测量以及如何与原生框架进行比较的提示,请查看获得性能数据页面。

提高性能:模型与运行时优化对比

备注

请确保您的模型可以通过 OpenVINO™ 运行时成功进行推理。

通过 OpenVINO 提升推理性能有两种主要方式,即模型级和运行时级优化。这两种优化方向完全兼容

  • 模型优化包括模型修改,如量化、修剪、预处理优化等。请参阅本文档了解更多详细内容。

    • 请注意,即使不调优运行时参数,模型优化也会直接缩短推理时间,如下所述

  • 运行时(部署)优化包括调优模型执行参数。请访问运行时推理优化阅读更多内容。

性能基准测试

为了评估性能和比较在各种支持设备上测量的性能数据,性能基准测试一节提供了各种公共模型。