19OPENVINO intermediate course11 推理引擎API的用法实践

编程入门 行业动态 更新时间:2024-10-09 11:21:07

19OPENVINO intermediate course11 推理<a href=https://www.elefans.com/category/jswz/34/1771263.html style=引擎API的用法实践"/>

19OPENVINO intermediate course11 推理引擎API的用法实践

推理引擎API的用法实践

  • 1 说明
  • 2 实验目的
  • 3 任务内容
  • 4 实验原理
    • 一、HETERO插件
    • 二、MULTI插件
    • 三、性能计数器
    • 四、以设备为中心的查询
  • 5 操作步骤
  • 6 实验操作

1 说明

本实验所有代码均在ubuntu18.04 + OpenVINO 2020R3.LTS installed 环境下验证通过,若需要代码移植,请务必检查环境配置是否与本实验环境相同。

2 实验目的

1、认识HETERO插件和MULTI插件。
2、认识性能计数器和以设备为中心的查询。
3、掌握调用API来打印系统中的所有可用设备的方法。
4、掌握使用API调用性能计数器来打印性能数据的方法。

3 任务内容

1、学习HETERO插件和MULTI插件。
2、学习性能计数器和以设备为中心的查询。
3、调用API来打印系统中的所有可用设备。
4、使用API调用性能计数器来打印性能数据。

4 实验原理

一、HETERO插件

以前的实验已经介绍了如何将网络加载到特定的插件中,例如模型当前在CPU上运行,如果要在英特尔集成显卡上运行它,只需要将目标设备更改为英特尔集成显卡,也可以是其他任何支持的设备。但有时候目标设备并不支持所有的层,因此HETERO插件可以将不支持层的执行回退到其他设备。

例如此处的HETERO:FPGA,CPU 表示尝试在FPGA上运行所有层,如果找不到任何层的实施方案,可在CPU上运行相应层。

二、MULTI插件

HETERO插件支持在不同设备上运行不受支持的特定层,MULTI插件则完全不同。程序运行时将生成许多推理请求。例如,如果在视频上运行推理,每帧都具有不同的推理调用,甚至在一帧中有可能有几个推理的调用。因此,MULTI插件可以在不同的设备上运行每个推理调用,从而利用系统中的所有设备。例如这里使用MULTI:MYRIAD,CPU。

因此所有推理请求将发送到MYRIAD设备,例如Movidius神经计算棒或任何其他Movidius设备,但是当该设备被充分利用时,后续推理请求将发送到CPU,这样MYRIAD和CPU将并行执行推理,并且可以提供更好的性能。该插件支持根据设备的实时可用性来使用它们。

三、性能计数器

推理引擎Inference Engine可以报告实际的运行时性能计数器。例如下图第四行可以看到执行的特定层为Conv/Conv2D,有些层进行了融合,不需要被执行。该层类型是卷积,执行时为511微秒,使用的库单元是数据类型为avx2_FP32指令集。

四、以设备为中心的查询

推理引擎还可以感知哪些设备已连接并可以使用,还可以获取实际物理状况的实时指示。基本上IE现在可以充分感知其使用的系统,从而更好的利用系统。它不仅可以报告可用的设备,而且还可以获取每个设备的各种指标,甚至实时信息,例如当前温度。

5 操作步骤

步骤1
登录实验平台,进入实验环境并打开命令行执行终端。

步骤2
执行命令su,输入root用户密码root@openlab,切换到root目录。

步骤3
执行命令cd ~/51openlab/04/exercise-2/,进入exercise-2目录。

步骤4
执行如下命令,初始化OpenVINO环境。

# source /opt/intel/openvino/bin/setupvars.sh

步骤5
执行命令vi classifiction-1.py编辑classifiction-1.py文件,编辑代码,将系统中的可用设备进行打印输出。

说明:这里使用api文档中的IECore,查看如何获取可用设备,将devices变量定义为可用设备,并将其打印出来。

步骤6
执行命令python3 classifiction-1.py运行代码,检查结果。

可以看到屏幕上输出可用设备为[CPU,GNA],即系统中包含了一个CPU和一个声卡设备,此次推理是在CPU上运行的。

步骤7
执行命令vi classifiction-2.py编辑classifiction-2.py文件,编辑代码,以增加性能计数器performance counters,将代码添加在“your code here”。

说明:打开api文档查找inferRequest,查看性能计数器的使用帮助,参考示例代码,使用exec_net就像执行推理一样,不仅需要get performance,还需要添加推理请求的id。这里定义perf_counts变量,使用perf_counters = exec_net.requests[0].get_perf_counts()增加性能计数器,然后设置一下打印数据的排版样式,用来增强网络性能数据的可读性。
参考代码如下:

      perf_counts = exec_net.requests[0].get_perf_counts()print('{:<40} {:<15} {:<25} {:<15} {:<10}'.format('name', 'layer_type', 'exet_type', 'status', 'real_time, us'))print("-----------------------------------------------------------------------")for layer, stats in perf_counts.items():print('{:<40} {:<15} {:<25} {:<15} {:<10}'.format(layer,stats['layer_type'], stats['exec_type'], stats['status'], stats['real_time']))

步骤8
执行命令python3 classifiction-2.py运行添加了计数器的代码。



可以在表格中看到每层的名称,以第一层为例,他们的类型是Convolution,使用avx2指令级的FP32执行方案,执行这一层需要1950微秒。你可以获取该神经网络所有统计信息,并找到执行时间最长的那一层,可以借此来判断这一层是否是网络的性能瓶颈。

本实验介绍了推理引擎Influence Engine的概念和插件架构,以及Python API的一些主要功能,并动手执行了推理和其他功能。基本上如果想用Influence Engine来推理一个应用,那么利用OpenVINO就能完成几乎一切需要准备的工作,本实验运行的代码以及OpenVINO软件包提供的许多其他示例和演示都可以集成到应用中。

6 实验操作



注意classifiction2的编写

更多推荐

19OPENVINO intermediate course11 推理引擎API的用法实践

本文发布于:2024-03-07 22:42:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719103.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:引擎   OPENVINO   intermediate   API

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!