0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AUTO插件和自动批处理的最佳实践

OpenCV学堂 来源:英特尔物联网 作者:英特尔物联网 2022-06-24 10:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.1 概述

OpenVINO 2022.1是自OpenVINO工具套件2018年首次发布以来最大的更新之一,参见《OpenVINO 迎来迄今为止最重大更新,2022.1新特性抢先看!》。在众多新特性中,AUTO插件和自动批处理(Automatic-Batching)是最重要的新特性之一,它帮助开发者无需复杂的编程即可提高推理计算的性能和效率。

1.1.1 什么是AUTO插件?

AUTO插件1 ,全称叫自动设备选择(Automatic device selection),它是一个构建在CPU/GPU插件之上的虚拟插件,如图1-1所示。在OpenVINO 文档中,“设备(device)”是指用于推理计算的 Intel 处理器,它可以是受支持的CPU、GPU、VPU(视觉处理单元)或 GNA(高斯神经加速器协处理器)或这些设备的组合3 。

e09633e0-f301-11ec-ba43-dac502259ad0.png

图1-1 OpenVINO Runtime支持的设备插件3

AUTO插件好处有:

■ 首先检测运行时平台上所有可用的计算设备,然后选择最佳的一个计算设备进行推理计算,并根据深度学习模型和所选设备的特性以最佳配置使用它。

■使 GPU 实现更快的首次推理延迟:GPU 插件需要在开始推理之前在运行时进行在线模型编译——可能需要 10 秒左右才能完成,具体取决于平台性能和模型的复杂性。当选择独立或集成GPU时,“AUTO”插件开始会首先利用CPU进行推理,以隐藏此GPU模型编译时间。

■使用简单,开发者只需将compile_model()方法的device_name参数指定为“AUTO”即可,如图1-2所示。

e0bb1fca-f301-11ec-ba43-dac502259ad0.png

图1-2 指定AUTO插件

1.1.2 什么是自动批处理?

自动批处理(Automatic Batching)2 ,又叫自动批处理执行(Automatic Batching Execution),是OpenVINO Runtime支持的设备之一,如图1-1所示。

一般来说,批尺寸(batch size) 越大的推理计算,推理效率和吞吐量就越好。自动批处理执行将用户程序发出的多个异步推理请求组合起来,将它们视为多批次推理请求,并将批推理结果拆解后,返回给各推理请求。

自动批处理无需开发者手动指定。当compile_model()方法的config参数设置为{“PERFORMANCE_HINT”: ”THROUGHPUT”}时,OpenVINO Runtime会自动启动自动批处理执行,如图1-3所示,让开发人员以最少的编码工作即可享受计算设备利用率和吞吐量的提高。

e0d5d298-f301-11ec-ba43-dac502259ad0.png

图1-3 自动启动自动批处理执行

1.2 动手学AUTO插件的特性

读书是学习,实践也是学习,而且是更有效的学习。本文提供了完整的实验代码,供读者一边动手实践,一边学习总结。

Github地址: https://github.com/yas-sim/openvino-auto-feature-visualization

1.2.1 搭建实验环境

第一步,克隆代码仓到本地。

git clone https://github.com/yas-sim/openvino-auto-feature-visualization.git

第二步,在openvino-auto-feature-visualization路径执行:

python -m pip install --upgrade pip

pip install -r requirements.txt

第三步,下载模型并完成转换

omz_downloader --list models.txt

omz_converter --list models.txt

到此,实验环境搭建完毕。实验程序的所有配置和设置参数都硬编码在源代码中,您需要手动修改源代码以更改测试配置,如图1-4所示。

e0f240a4-f301-11ec-ba43-dac502259ad0.png

图1-4 手动修改源代码中的配置

1.2.2 AUTO插件自动切换计算设备

GPU插件需要在 GPU 上开始推理之前将IR模型编译为 OpenCL 模型。这个模型编译过程可能需要很长时间,例如 10 秒,会延迟应用程序开始推理,使得应用程序启动时的用户体验不好。

为了隐藏这种 GPU 模型编译延迟,AUTO插件将在 GPU 模型编译进行时使用CPU执行推理任务;当GPU模型编译完成后,AUTO插件会自动将推理计算设备从CPU切换到GPU,如图1-5所示。

e108dbac-f301-11ec-ba43-dac502259ad0.png

图1-5 AUTO插件自动切换计算设备

1.2.3 动手观察自动切换计算设备的行为

AUTO插件会依据设备优先级1 : dGPU > iGPU > VPU > CPU, 来选择最佳计算设备。当自动插件选择 GPU 作为最佳设备时,会发生推理设备切换,以隐藏首次推理延迟。

请注意,设备切换前后的推理延迟不同;此外,推理延迟故障可能发生在设备切换的那一刻,如图1-6所示。

请如图1-6所示,设置auto-test-latency-graph.py配置参数为:

cfg['PERFORMANCE_HINT'] = ['THROUGHPUT', 'LATENCY'][0]

并运行命令:

python auto-test-latency-graph.py

同时打开Windows任务管理器,观察CPU和iGPU的利用率。

e11adb04-f301-11ec-ba43-dac502259ad0.png

图1-6 config={“PERFORMANE_HINT”:”THROUGPUT”}的执行行为

1.2.4 PERFORMANCE_HINT设置

如1.1.2节所述,AUTO插件的执行行为取决于compile_model()方法的config参数的PERFORMANCE_HINT设置,如表1-1所示:

表1-1 PERFORMANCE_HINT设置

e13ce636-f301-11ec-ba43-dac502259ad0.png

设置auto-test-latency-graph.py配置参数为:

cfg['PERFORMANCE_HINT'] = ['THROUGHPUT', 'LATENCY'][1]

并运行命令:

python auto-test-latency-graph.py

同时打开Windows任务管理器,观察CPU和iGPU的利用率,运行结果如图1-7所示。

e15161e2-f301-11ec-ba43-dac502259ad0.png

图1-7 config={“PERFORMANE_HINT”:”LATENCY”}的执行行为

通过实验,我们可以发现,根据不同的config参数设置,使得AUTO插件可以工作在不同的模式下:

■ 在Latency模式,不会自动启动Auto Batching,执行设备切换后,GPU上的推理延迟很小,且不会抖动。

■在THROUGHPUT模式,自动启动Auto Batching,执行设备切换后,GPU上的推理延迟较大,而且会抖动。

接下来,本文将讨论Auto Batching对推理计算行为的影响。

1.3 动手学Auto Batching的特性

如1.1.2节所述,自动批处理执行将用户程序发出的多个异步推理请求组合起来,将它们视为多批次推理请求,并将批推理结果拆解后,返回给各推理请求,如图1-8所示。

e193fda4-f301-11ec-ba43-dac502259ad0.png

图1-8 Auto Batching的执行过程

Auto Batching在收集到指定数量的异步推理请求或计时器超时(默认超时=1,000 毫秒)时启动批推理计算(batch-inference),如图1-9所示。

e1a10cf6-f301-11ec-ba43-dac502259ad0.png

图1-9 启动批推理计算

1.3.1 Auto Batching被禁止时

Auto Batching被禁止时,所有推理请求都是单独被处理的。

请配置并运行auto-test.py。

Device: AUTO

Config: {'PERFORMANCE_HINT': 'LATENCY'}

niter: 20 , interval: 30 ms

OPTIMAL_NUMBER_OF_INFER_REQUESTS 1

Number of infer requests: 1

运行结果如图1-10所示,可见每一个推理请求是被单独处理的。

e1af22f0-f301-11ec-ba43-dac502259ad0.png

图1-10 Auto Batching被禁止时的运行结果

1.3.2 Auto Batching被使能时

Auto Batching被使能时,异步推理请求将作为多批次推理请求进行绑定和处理。推理完成后,结果将分发给各个异步推理请求并返回。需要注意的是:批推理计算不保证异步推理请求的推理顺序。

请配置并运行auto-test.py。

Device: GPU

Config: {'CACHE_DIR': './cache', 'PERFORMANCE_HINT': 'THROUGHPUT', 'ALLOW_AUTO_BATCHING': 'YES'}

niter: 200 , interval: 30 ms

OPTIMAL_NUMBER_OF_INFER_REQUESTS 64

Number of infer requests: 16

运行结果如图1-11所示,可见每16个推理请求被组合成一个批次进行批推理计算,推理计算顺序不被保证。

e1bf0756-f301-11ec-ba43-dac502259ad0.png

图1-11 Auto Batching被使能时的运行结果

1.3.3 Auto Batching会导致推理延迟变长

由于较长的默认超时设置(默认timeout = 1,000ms),在低推理请求频率情况下可能会引入较长的推理延迟。

由于Auto Batching将等待指定数量的推理请求进入或超时计时器超时,在低推理频率的情况下,它无法在指定的超时时间内收集足够的推理请求来启动批推理计算,因此,提交的推理请求将被推迟,直到计时器超时,这将引入大于timeout设置的推理延迟。

为解决上述问题,用户可以通过 AUTO_BATCH_TIMEOUT 配置参数指定超时时间,以尽量减少此影响。

请使用AutoBatching的默认timeout,运行auto-test.py。

Device: GPU

Config: {'CACHE_DIR': './cache', 'PERFORMANCE_HINT': 'THROUGHPUT'}

niter: 20, interval: 300 ms

OPTIMAL_NUMBER_OF_INFER_REQUESTS 64

Number of infer requests: 64

运行结果如图1-12所示,由于每次都无法在timeout时间内收集到指定数量的推理请求,由此导致推理请求的延迟很高。

e1dc4758-f301-11ec-ba43-dac502259ad0.png

图1-12 timeout=1000ms运行结果

请配置AutoBatching的timeout=100ms,然后运行auto-test.py。

Device: GPU

Config: {'CACHE_DIR': './cache', 'PERFORMANCE_HINT': 'THROUGHPUT', 'AUTO_BATCH_TIMEOUT': '100'}

niter: 20 , interval: 300 ms

OPTIMAL_NUMBER_OF_INFER_REQUESTS 64

Number of infer requests: 16

e1f47f08-f301-11ec-ba43-dac502259ad0.png

图1-13 timeout=100ms运行结果

运行结果如图1-13所示, timeout=100ms时间内,仅能收集到一个推理请求。

1.3.4 Auto Batching最佳实践

综上所述,Auto Batching的最佳编程实践:

■ 要记住,默认情况下Auto Batching不会启用。

■只有在以下情况时,Auto Batching才启用:

{'PERFORMANCE_HINT': 'THROUGHPUT', 'ALLOW_AUTO_BATCHING': 'YES'}

■如果您的应用程序能够以高频率连续提交推理请求,请使用自动批处理。

■警告:如果您的应用间歇性地提交推理请求,则最后一个推理请求可能会出现意外的长延迟。

■如果推理节奏或频率较低,即推理频率远低于AUTO_BATCH_TIMEOUT(默认为 1,000 毫秒),请勿开启自动批处理。

■您可以使用AUTO_BATCH_TIMEOUT 参数更改自动批处理的超时设置,以最大限度地减少不需要的长延迟,参数值的单位是“ms”。

■如果您知道工作负载的最佳批处理大小,请使用PERFORMANCE_HINT_NUM_REQUESTS 指定适当的批处理数量,即 {'PERFORMANCE_HINT_NUM_REQUESTS':'4'}。同时,以GPU为例,AUTO插件会在后台根据可以使用的内存,模型精度等计算出最佳批处理大小。

1.4 总结

本节给出AUTO 插件和Auto Batching的快速小结,如表1-2所示。

表1-2 AUTO插件和自动批处理执行快速小结表

e205742a-f301-11ec-ba43-dac502259ad0.png

本文GitHub源代码链接:https://github.com/yas-sim/openvino-auto-feature-visualization

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Auto
    +关注

    关注

    0

    文章

    43

    浏览量

    15828
  • 深度学习
    +关注

    关注

    73

    文章

    5608

    浏览量

    124635

原文标题:OpenVINO™ 2022.1中AUTO插件和自动批处理的最佳实践 | 开发者实战

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    声智科技语音交互插件上线ClawHub

    核心突破:填补生态空白近日,声智科技自主研发的语音交互插件,包含ASR(自动语音识别)与TTS(语音合成)正式通过ClawHub官方审核并接入服务;与此同时,声智自研的LLM(大语言模型)插件也已成功接入OpenClaw(龙虾)
    的头像 发表于 04-08 17:55 1161次阅读

    手机主板散热导热胶薄层涂布最佳实践 |铬锐特实业

    铬锐特实业|东莞厂家|详解手机主板导热胶薄层涂布最佳实践:推荐80-150μm厚度范围,热阻可降低40-50%,芯片温度下降5-10℃。掌握精准点胶、压力组装与材料选择,实现高效散热与性能稳定。
    的头像 发表于 03-02 01:54 253次阅读
    手机主板散热导热胶薄层涂布<b class='flag-5'>最佳</b><b class='flag-5'>实践</b> |铬锐特实业

    BMS设计中如何选择MOSFET——关键考虑因素与最佳实践

    MOSFET时需要综合考虑多个因素,以确保其满足BMS的高效和稳定运行要求。本文将介绍在BMS设计过程中选择MDD的MOSFET时需要重点关注的关键因素和最佳实践。一、MO
    的头像 发表于 12-15 10:24 566次阅读
    BMS设计中如何选择MOSFET——关键考虑因素与<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>

    长电科技荣获2025年上市公司可持续发展最佳实践案例

    近日,长电科技荣获中国上市公司协会颁发的“2025年度上市公司董事会最佳实践案例”“2025年上市公司可持续发展最佳实践案例”两项大奖,彰显市场对长电科技公司治理,践行ESG可持续发展
    的头像 发表于 12-10 10:34 731次阅读
    长电科技荣获2025年上市公司可持续发展<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>案例

    立讯精密荣获2025年上市公司可持续发展最佳实践案例

    11月18日,由中国上市公司协会(中上协)主办的2025上市公司可持续发展大会在北京隆重召开。会上,中上协发布了2025上市公司可持续发展最佳实践案例名单,从环境、社会和治理3个维度出发评优树典,立
    的头像 发表于 11-26 17:49 1905次阅读

    思瑞浦获评“2025年上市公司董事会最佳实践案例”

    喜讯11月18日,中国上市公司协会发布“2025年上市公司董事会最佳实践案例评选榜单”。思瑞浦凭借在董事会运作及董事会创新特色等方面的优秀表现,获评“2025年上市公司董事会最佳实践
    的头像 发表于 11-18 16:33 1409次阅读
    思瑞浦获评“2025年上市公司董事会<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>案例”

    爱芯元智荣获2025金辑奖最佳技术实践应用奖

    2025年盖世汽车第七届“金辑奖”揭晓,爱芯元智凭借全球化辅助驾驶芯片M57系列荣获“最佳技术实践应用奖”。
    的头像 发表于 11-02 09:17 899次阅读

    安波福荣获2025年度最佳实践奖之产品领导力大奖

    近日,全球领先的增长咨询公司Frost & Sullivan在美国亚利桑那州举办2025年度最佳实践奖颁奖典礼。安波福PULSE雷达视觉一体感知系统凭借在全球汽车辅助泊车领域的卓越表现,荣获2025年度最佳
    的头像 发表于 10-30 15:02 1856次阅读

    订单退款自动化接口:高效处理退款流程的技术实现

    高效的订单退款自动化接口,涵盖核心概念、技术实现、代码示例和最佳实践。我们将使用RESTful API作为基础,并以Python示例展示具体实现。 1. 什么是订单退款自动化接口? 订
    的头像 发表于 10-21 10:41 530次阅读
    订单退款<b class='flag-5'>自动</b>化接口:高效<b class='flag-5'>处理</b>退款流程的技术实现

    达实智能荣获中国企业管理“十大最佳实践”奖

    10月17日,以“AI+管理:铸就新质生产力” 为主题的第十五届中国管理·全球论坛暨首届“中国企业管理最佳实践榜”发布盛典在山东青岛顺利举行。达实智能董事长刘磅作为中国管理模式50人+论坛核心成员
    的头像 发表于 10-20 17:53 2153次阅读

    生产环境中Kubernetes容器安全的最佳实践

    随着容器化技术的快速发展,Kubernetes已成为企业级容器编排的首选平台。然而,在享受Kubernetes带来的便利性和可扩展性的同时,安全问题也日益凸显。本文将从运维工程师的角度,深入探讨生产环境中Kubernetes容器安全的最佳实践
    的头像 发表于 07-14 11:09 944次阅读

    Linux网络管理的关键技术和最佳实践

    在大型互联网企业中,Linux网络管理是运维工程师的核心技能之一。面对海量服务器、复杂网络拓扑、高并发流量,运维人员需要掌握从基础网络配置到高级网络优化的全套技术栈。本文将结合大厂实际场景,深入解析Linux网络管理的关键技术和最佳实践
    的头像 发表于 07-09 09:53 1129次阅读

    恩智浦完成对TTTech Auto的收购

    恩智浦半导体宣布,根据先前宣布的2025年1月生效的协议,正式完成对TTTech Auto的收购。TTTech Auto是一家专注于为软件定义汽车(SDV)开发独特的安全关键系统和中间件的领先企业。
    的头像 发表于 06-24 16:43 1633次阅读

    天马荣获新财富杂志“2024 ESG最佳实践奖”

    天马可持续发展•ESG表现再获认可,上榜2024年新财富杂志最佳上市公司评选“ESG最佳实践榜单”。
    的头像 发表于 05-21 14:43 1058次阅读

    华为ADN L4解决方案斩获FutureNet World 2025自智网络最佳实践

    ,共论未来网络转型之路。随着自智网络近年来在通信产业热度的持续上升,本次大会首次设立“自智网络最佳实践奖”,华为以自动驾驶网络(ADN)L4解决方案突出的技术创新和前沿实践成果,成为首
    的头像 发表于 05-09 19:47 1896次阅读
    华为ADN L4解决方案斩获FutureNet World 2025自智网络<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>奖