性能优化简介¶
在探讨可能的优化技术之前,我们先定义什么是推理性能以及如何衡量它。请注意,报告的推理性能往往侧重于执行速度。事实上,至少有四种相关因素,即精度、吞吐量/延迟和效率。本文的其余部分介绍如何平衡这些关键因素。
什么是推理性能¶
一般而言,性能指的是模型处理实时数据的速度。用于衡量性能的两个关键指标:延迟和吞吐量从根本上是互相关联的。
延迟测量的是处理单个输入所需的推理时间(毫秒)。如果同时执行多个输入(如通过批处理),那么整体吞吐量(在特定视觉处理任务中,则是每秒的推理次数或每秒帧数,即 FPS)通常更为重要。用处理的输入数量除以处理时间来计算吞吐量。
端到端应用性能¶
有一点很重要,就是要将神经网络的“纯”推理时间与端到端应用性能分开。例如,当在 dGPU 等加速器上处理主机输入张量时,主机和设备之间的数据传输可能会意外地影响性能。
同样,输入预处理也会显著增加推理时间。如在获得性能数据一节中所述,在训练推理性能时,一种选择就是单独测量所有这些项目。但对于端到端场景,请考虑通过 OpenVINO 和异步执行进行图像预处理,作为分摊数据传输等通信成本的方式。您可以在通用优化文档中找到更多详细内容。
首次推理延迟是另一个特定例子(例如,需要快速启动应用时),由此产生的性能可能主要受模型加载时间的影响。可以考虑用模型缓存来缩短模型加载/编译时间。
最后,内存空间限制是设计应用时的另一种可能的考虑因素。虽然这是下一节所提到的模型优化技术的动机,但请注意,面向吞吐量的执行通常需要更多内存,详情请参见运行时推理优化。
备注
如需获取 OpenVINO 的性能数据,如何测量以及如何与原生框架进行比较的提示,请查看获得性能数据页面。
提高性能:模型与运行时优化对比¶
备注
请确保您的模型可以通过 OpenVINO™ 运行时成功进行推理。
通过 OpenVINO 提升推理性能有两种主要方式,即模型级和运行时级优化。这两种优化方向完全兼容。