人工智能的挑战之一是迎合各种能用于推理的各种计算设备。OpenVINO™ 工具套件通过时序优化,可充分利用各种处理器的优势如 CPU,GPU 或视觉处理单元(VPU)并整合最终加快 AI 应用程序的速度。它降低不同架构编写导致其复杂性的门槛,同时使开发人员能够充分释放其目标平台的性能。
现在,
随着 OpenVINO™ 2022.1版本的发布,自动设备插件(AUTO)可以轻松定位不同的目标设备。
自动选择最合适的目标设备,并对其进行适当配置,并确定延迟或吞吐量的优先级。新插件还加入了加速首次推理延迟的功能。
自动设备插件(Automatic Device Plugin或简称AUTO)是 OpenVINO™ 中的新虚拟代理设备,不会直接绑定到特定类型的硬件设备。
当您选择 AUTO 作为目标推理平台时,OpenVINO™ 会自动找出平台的加速器和硬件功能,并自动选择使用哪一个加速器和硬件来实现您的目标。您可以在配置 API 中提供提示,以告知 OpenVINO™ 根据应用程序优化延迟或吞吐量。
使用 AUTO 插件的好处包括:
The following lines are equivalent:ov::CompiledModel model0 = core.compile_model(model);ov::CompiledModel model1 = core.compile_model(model, “AUTO”);
Python 示例:
compiled_model0 = core.compile_model(model=model)
compiled_model1 = core.compile_model(model=model, device_name="AUTO")
The following lines are equivalent (GPU is 1st priority to be used):ov::CompiledModel model3 = core.compile_model(model, “AUTO:GPU,CPU”);
ov::CompiledModel model4 = core.compile_model(model, “AUTO”, ov::device::priorities (“GPU,CPU”));
Python 示例:
compiled_model3 = core.compile_model(model=model, device_name="AUTO:GPU,CPU")
compiled_model4 = core.compile_model(model=model, device_name="AUTO", config={"MULTI_DEVICE_PRIORITIES": "GPU,CPU"})
:ov::CompiledModel compiled_model = core.compile_model(model, “AUTO:GPU,CPU”, ov::hint::performance_mode(
ov::hint::PerformanceMode::THROUGHPUT));
:ov::CompiledModel compiledModel1 = core.compile_model(model, “AUTO:GPU,CPU”, ov::hint::performance_mode (
ov::hint::PerformanceMode::LATENCY));
Python 示例:
compiled_model = core.compile_model(model=model, device_name="AUTO", config={"PERFORMANCE_HINT":"THROUGHPUT"})
compiled_model = core.compile_model(model=model, device_name="AUTO", config={"PERFORMANCE_HINT":"LATENCY"})
在英特尔® 酷睿™ i7处理器上使用 googlenet-v1 模型,我们发现,与延迟倾向
¹
相比,在集成 GPU 上使用吞吐量倾向可提供两倍的每秒帧数(FPS)性能。相比之下,在 GPU 上使用延迟倾向的延迟比吞吐量倾向
¹
低 10 倍以上。
请注意,性能倾向不需要特定于设备的设置,并且在计算设备之间也可以完全移植。这意味着更高的性能,更少的代码更改,以及所需的专业知识更少。
为实现增大吞吐量方案,设备配置为具有更高的利用率,例如,增加批大小以及更多的线程和流。对于降低延迟方案,减小了任务队列的大小和并行化,以实现更快的周转时间。
带有性能倾向的 AUTO 用法的完整 Python 示例在此
OpenVINO™ 笔记本
中可用:
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/106-auto-device
(请复制地址至浏览器浏览)
使用 AUTO 的主要好处之一是加速首次推理延迟FIL(First Inference Latency)。
将 OpenCL 图编译为 GPU 优化的内核需要几秒钟。对于某些应用程序(如基于人脸的身份验证),这几秒钟的初始化时间可能无法容忍。
使用 CPU 将提供最短的 FIL,因为 OpenVINO™ 图形表示可以为 CPU 快速做 JIT 编译。但是,CPU 可能不是在启动后满足开发人员的吞吐量或延迟目标的最佳平台。
为了加快 FIL 的速度,AUTO 使用 CPU 作为第一个推理设备,直到 GPU 准备就绪(参见图 2)。带有 AUTO 的 FIL 接近 CPU 设备的 FIL (绿色),即使 CPU 除了 GPU 的网络编译之外还执行推理。使用 AUTO,与仅使用 GPU
1
相比(蓝色),我们看到 FIL 减少了 10 倍以上。
但请注意,CPU 上的吞吐量可能比 GPU 更差。对于需要满足吞吐量目标的实时应用程序,缓慢推理的初始阶段可能不可接受。最好等待模型在 GPU 上加载。在许多情况下,建议使用模型/内核缓存来加快模型加载速度。
如果遇到执行问题,AUTO 将提供有关异常和错误值的信息。如果返回的数据不足以用于调试目的,可以使用ov::log::Level 获取更多信息。
Runtime 和 AUTO 的所有主要性能调用都使用检测和跟踪技术 (ITT) API 进行检测。有关更多信息,
请
参阅有关 OpenVINO™ 分析的文档:
https://docs.openvino.ai/latest/groupie_dev_profiling.html
(请复制地址至浏览器浏览)
和
英特尔® VTune™ Profiler 用户指南
:
https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/api-support/instrumentation-and-tracing-technology-apis.html
(请复制地址至浏览器浏览)
在未来的版本中,AUTO 将提供更多的性能倾向功能,并将在系统级别平衡工作负载,例如,通过将一个神经网络的推理卸载到多个硬件设备(类似于
多设备插件
)。
插件地址:
https://docs.openvino.ai/2021.1/openvino_docs_IE_DG_supported_plugins_MULTI.html
(请复制地址至浏览器浏览)
有关详细信息,请参阅
AUTO 文档
:
https://docs.openvino.ai/latest/openvino_docs_OV_UG_supported_plugins_AUTO.html
(请复制地址至浏览器浏览)
通知和免责声明:
性能因使用情况、配置和其他因素而异。在 www.intel.com/PerformanceIndex“www.intel.com/PerformanceIndex 了解更多信息
性能结果基于截至配置中显示的日期的测试,可能无法反映所有公开可用的更新。有关配置详细信息,请参阅备份。没有任何产品或组件是绝对安全的。
英特尔技术可能需要支持的硬件、软件或服务激活。
所描述的产品可能包含勘误表中已知的设计缺陷或错误,这可能会导致产品与公布的规格有所偏差。当前已确定的勘误表可根据要求提供。
¹
测试配置:
配置一:英特尔® 酷睿™ i7–10710U处理器,带DDR4 2 * 16 GB@2666MHz,集成 GPU,操作系统:Windows 10企业版10.0.19042 Build 19042,Microsoft Visual Studio Community 2019版本16.11.8,Intel(R)UHD 显卡驱动程序版本30.0.101.1191,OpenVINO 2022.1(zip文件下载),googlenet-v1网络模型。已使用Notbook 106 自动设备进行测试。
配置二:英特尔® 酷睿™ i7–1165G7 处理器,带 DDR4 2*16 GB,4,266 MHz,集成 GPU,英特尔® Iris® X
e
MAX 显卡,操作系统:Windows 10 企业版 10.0.19042 内部版本 19042,Microsoft Visual Studio Community 2019 版本 16.11.10,英特尔(R) Iris® X
e
显卡驱动程序 30.0.101.1003 版(集成 GPU),英特尔(R) Iris® X
e
MAX 显卡驱动程序 30.0.101.1340 版(独立 GPU), OpenVINO™ 2022.1(zip文件下载),googlenet-v1网络模型。在 OpenVINO™ 2022.1中用CPP benchmark_app 进行测试。
这些测试由英特尔于 2022 年 4 月 20 日进行。
* 本文内容及配图均为“英特尔物联网”的原创内容。该公众号的运营主体拥有上述内容的著作权或相应许可。除在微信朋友圈分享之外,如未经该运营主体书面同意,请勿转载、转帖或以其他任何方式复制、发表或发布上述内容。如需转载上述内容或其中任何部分,请留言联系。
英特尔、英特尔标识、以及其他英特尔商标是英特尔公司或其子公司在美国和/或其他国家的商标。
* 文中涉及的其它名称及商标属于各自所有者资产