干货|OpenVINO 2022 新版本源码编译流程讲解和新特性Auto-Device演示

1. 新版本的介绍
自推出以来OpenVINO一直紧随AI的技术发展,保持着高频的迭代更新,来解决各行各业开发者提出的各种需求和面临的挑战。这次版本迭代,从2021.4到2022.1,改动很大,可以说是迄今为止最重大的更新。
最新版本精简了安装包和运行时库,添加了Auto-Device Plugin、MO参数简化等一系列的有利于开发者快速上手的功能,也官宣了对Paddle Paddle的正式支持,其他还有推理API的改进等等,有兴趣可以查看官网文档,这里不一一而论。
2. OpenVINO 安装使用方法
3. 环境准备
1. 支持的linux OS:
2. 软件要求:
3. 检查环境
4. 下载与编译
1. clone代码
从GitHub克隆OpenVINO及其子项目
git clone https://github.com/openvinotoolkit/openvino.git
cd openvino
git submodule update --init --recursive
2. 切换gitee源(可选)
如果访问github网络不是很顺畅,可以使用gitee源加速
cd openvino
chmod +x scripts/submodule_update_with_gitee.sh
./scripts/submodule_update_with_gitee.sh
3. 安装OpenVINO源码编译依赖
chmod +x install_build_dependencies.sh
./install_build_dependencies.sh
pip3 install -r src/bindings/python/src/compatibility/openvino/requirements-dev.txt
4. build选项介绍与操作步骤
- 编译选项介绍
cmake 编译OpenVINO 环境的时候,允许我们根据自身需求来灵活指定编译的选项。
如果我们希望有python的环境,可以选择加入下面的选项,要注意的是path要根据自己的实际环境匹配。
-DENABLE_PYTHON=ON
-DNGRAPH_PYTHON_BUILD_ENABLE=ON
-DPYTHON_EXECUTABLE=`which python3.8`
-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so
-DPYTHON_INCLUDE_DIR=/usr/include/python3.8
MKLDNN库,即是Intel公司针对自身CPU以及GPU设计的深度学习加速库,能够成倍地提升神经网络在Intel CPU下的推理速度。
-DENABLE_MKL_DNN=ON
clDNN,即深度神经网络计算库,是一个用于深度学习(DL)应用程序的开源性能库,旨在对英特尔GPU进行推理的加速。
-DENABLE_CLDNN=ON
开启ONNX的模型导入功能
-DNGRAPH_ONNX_IMPORT_ENABLE=ON
开启MYRIAD设备的加速,比如NCS2设备
-DENABLE_MYRIAD=ON
开启debug功能
-DNGRAPH_DEBUG_ENABLE=ON
- 执行build
介绍完每个选项的功能后,接下来就开始build操作了。
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PYTHON=ON -DNGRAPH_PYTHON_BUILD_ENABLE=ON -DPYTHON_EXECUTABLE=`which python3.8` -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.8 -DENABLE_MKL_DNN=ON -DENABLE_CLDNN=ON -DENABLE_MYRIAD=ON -DNGRAPH_ONNX_IMPORT_ENABLE=ON -DNGRAPH_DEBUG_ENABLE=ON ..
make --jobs=$(nproc --all)
编译完成
- 环境初始化
这里需要把编译好的python动态库导入setupvars路径,这样脚本才能找到python环境。cd scripts/setupvars/
mkdir python
cp -rf ~/openvino/bin/intel64/Release/lib/python_api/python3.8/ ./python
source ~/openvino/scripts/setupvars/setupvars.sh
5. Auto-Device 的介绍与演示
1. 什么是Auto Device?
AUTO Device (简称 AUTO)是 OpenVINO 工具包中的一个新的特殊“虚拟”或“代理”设备,它不绑定到特定类型的设备。它可以降低使用者对硬件设备选择的复杂性,代码中指定-d AUTO后,它可以自动发现设备中可用的计算硬件并自动选择执行推理,通过配置 API 来分别动态优化延迟或吞吐量,从而匹配用户的性能需求。开发人员可以编写一次应用程序并部署到任何地方。
2.演示
接下来就让我们试试怎么使用吧。首先检测benchmark_app的环境是否配置成功。这里发现有个报错,当前环境没有’progress’模块。
cd openvino/tool***enchmark_tool
./benchmark_app.py --help
安装progress模块
pip3 install progress
再次执行上边的命令,现在可以看到benchmark_app的参数介绍了,环境配置成功。它也检测到我们目前可用的device有CPU、GNA和GPU。
找个resnet-50的OV模型,执行推理。可以在执行过程中看到Device info为 AUTO,此时OV会在可用的硬件设备中自动匹配并加载和优化模型,进行推理。
./benchmark_app.py -m ~/resnet-50-pytorch.xml -d AUTO -b 8 -t 50 -nstreams 8 -progress