在部署深度学习模型,尤其是用于物体检测的模型(如Ultralytics YOLO 模型)时,实现最佳性能至关重要。本指南将深入探讨如何利用Intel 的OpenVINO 工具包来优化推理,重点关注延迟和吞吐量。无论您是在开发消费级应用还是大规模部署,了解并应用这些优化策略都能确保您的模型在各种设备上高效运行。
对于需要在单一输入情况下从单一模型立即做出响应的应用来说,延迟优化至关重要,这在消费场景中非常典型。我们的目标是尽量减少输入与推理结果之间的延迟。然而,实现低延迟需要仔细考虑,尤其是在运行并发推理或管理多个模型时。
优化延迟的关键策略:
每个设备一次推理:
实现低延迟的最简单方法是限制每个设备一次只能进行一个推理。额外的并发通常会导致延迟增加。
利用子设备:
多插槽 CPU 或多层 GPU 等设备可利用其内部子设备执行多个请求,并将延迟增加降至最低。
OpenVINO 性能提示:
利用OpenVINO
ov::hint::PerformanceMode::LATENCY
为
ov::hint::performance_mode
模型编译过程中的属性简化了性能调整,提供了一种与设备无关且面向未来的方法。
管理首次推理延迟
模型缓存:
为减少模型加载和编译时间对延迟的影响,应尽可能使用模型缓存。在缓存不可行的情况下,CPU 通常能提供最快的模型加载时间。
模型映射与阅读
为了缩短加载时间,OpenVINO 用映射取代了模型读取。不过,如果模型在移动硬盘或网络硬盘上,可考虑使用
ov::enable_mmap(false)
切换回阅读状态。
自动设备选择:
该模式在CPU 上开始推理,一旦准备就绪,就会切换到加速器,从而无缝减少首次推理延迟。
优化吞吐量
吞吐量优化对于同时处理大量推理请求的场景至关重要,它可以在不明显影响单个请求性能的情况下最大限度地提高资源利用率。
吞吐量优化方法
OpenVINO 性能提示:
利用性能提示提高跨设备吞吐量的高级、面向未来的方法。