立即学习:https://edu.csdn.net/course/play/28807/427188?utm_source=blogtoedu
目录
1、推理引擎详解
- 优化步骤:
- 1、特殊插件HETERO与MULTI
-
"HETERO"plugin —— 该插件可以在不同设备上运行不受支持的特定层。(设置优先级?)
-
-
"尝试在FPGA上运行所有层,如果找不到相应方案在CPU上运行"
-
"MULTI"Plugin —— 该插件可以在不同设备上运行每个推理调用,从来利用系统中的所有设备。(设置设备分配?)
-
程序运行时将生成许多推理请求,每帧都有不同的推理调用
-
-
"指令可以把所有请求发送到MYRIAD设备上,如果前者充分利用,后续请求将发送到CPU,两个设备并行执行推理"
-
-
2、特定设备优化插件
-
在推理之前,推理引擎把网络映射到正确的库单元的同时,网络发送至硬件插件,多个级别的硬件优化便已完成。
-
每个设备或者设备系列都有自己的插件实现方案。
-
优化内容:
-
1、网络级优化:一些操作不映射到内核,而是映射到他们之间的关系,例如数据重组,以提高性能,减少推理过程中数据转换的时间
-
2、内存级优化:在内存中按照特定数据的集合重组数据
-
3、内核级优化:根据设备是否支持特定指令集来选择合适的指令集
-
-
2、推理引擎API (ie_api)
- 常用的基本API
- 1、IECore(推理引擎对象) —— 推理引擎的主要类
-
运行在各种不同插件上层,因此可以创建一个core类对象而无需指定任何特定设备,并只有在加载网络,实际运行的时候才需要指定设备,因此无需注册特定插件,直接在IECore内部完成
-
- 2、InferRequest ——进行推理
-
使用推理请求类执行推理,还可以为推理指定请求ID,这对异步推理很重要
-
-
3、Performance Counters —— 性能计数器
-
报告实际运行时的性能计数器
-
performance_counters = exec_net.requests[0].get_perf_counts()
-
- 4、Available Devices —— 可用设备
- 感知哪些设备被连接且可以被使用
- devices = ie.available_devices