从OpenVINO的主分支制作一个openvino .whl文件

什么是 wheel 包?
python *.whl 文件或者叫 wheel 包,是一个 python 生态系统组件,可简化包的安装。它在包分发过程中提供更快的安装时间和更高的可靠性。该格式包含只需要移动到要安装的目标系统上的正确位置的文件和元数据。如果你使用 pip 安装 python 包,它很可能是一个 wheel 包。
本文将教读者从零开始从openvino 的主分支制作一个openvino .whl 文件以便于安装openvino。
已经有稳定版本,为什么我还需要从主分支构建wheel包?
有时,出于以下原因,需要从当前主分支构建安装包(the bleeding-edge build):
1. 即使在稳定版本中也存在错误。如果您已经不能等到下一个版本,急需已修复这些错误的安装包 —— 唯一的解决方案是从主分支自行构建 wheel 包。
2. 你需要一个已经实现但等待正式发布的新特性——手动从主分支自行构建 wheel 包。
3. 你的资源是有限的。因此,您需要一个仅包含所需模块的自定义包 —— 自定义编译并构建主分支 wheel 包。
4.  因为它是开源的,你可以 diy
如何编译 openvino 并构建 python 包? 
要构建 openvino 工具套件,您可以使用干净的 ubuntu 20.04 或 ubuntu 18.04。为避免依赖性问题,我们建议在您现有的操作系统环境中使用 docker。本文的全部步骤在12代intel 酷睿处理器 i3-12100f 和 ubuntu 20.04.4lts 上完成测试,如图1-1所示。现在,让我们开始吧!
图1-1  测试环境
第一步:安装并设置 docker。请按照官方 docker 文档安装docker和 linux 安装后的说明解决权限问题。我们还建议您为 8 核计算机分配至少 8gb 的 ram。如果您运行编译错误,请增加 ram 大小并重新运行脚本。安装和配置过程完成后,让我们运行:docker run hello world 检查一下 docker 是否正常工作,如图1-2所示。
图1-2  docker 安装成功并运行正常!
接下来,请下载并运行 ubuntu 容器。您可以使用 18.04 或 20.04。如果您希望您的软件包更便携并与旧版本的 ubuntu 一起使用,请使用 ubuntu 18.04。
运行命令:
sudo docker pull ubuntu:20.04sudo docker run -it ubuntu:20.04  
下载并运行 ubuntur20.04 容器,如图1-3所示。
图1-3  下载并运行ubuntu 20.04容器
恭喜!您已经在新的 ubuntu20.04 容器里面了。此阶段的最后一步是在 docker 中安装 git 和 sudo,并将目录更改为 /opt。
运行命令:
apt updateapt install git sudocd /opt  
完成安装 git 和 sudo,并将目录更改为 /opt,如图1-4所示。
图1-4  进入/opt目录
注意!接下来的所有步骤都在上述这个 docker 容器中运行。
第二步:克隆 openvino 的代码仓和子代码仓。openvino 使用 onednn 和 opencv 等软件包。在代码检出(checkout)时,您将从它们中检索出最新的源代码。由于 openvino 代码仓有很多子模块,因此请确保使用 --recurse-submodules 标志运行。这可能需要一段时间,具体取决于您的互联网连接。
使用命令:
git clone --recurse-submodules --single-branch --branch=master https://github.com/openvinotoolkit/openvino.git  
完成克隆 openvino 代码仓和子代码仓到本地,如图1-5所示。
图1-5  克隆openvino代码仓到本地
改用下面的命令:
提示:如果使用一次 git submodule update 这行命令,可能会遇到中途 clone 中断,无法满足 clone 某些 submodule 的目的。可以再次运行这条命令,直到所有 submodule 都被 clone 为止。
克隆子模块成功后,如图1-6所示。
图1-6  克隆子模块
第三步:安装构建(build)依赖项。下面是一个有用的脚本,但它不会为 python 安装依赖项,因此需要额外的步骤。
cd openvino./install_build_dependencies.shapt install cython3pip3 install --upgrade pippip3 install -r src/bindings/python/wheel/requirements-dev.txt  
如果要构建 gpu 插件(支持集成 gpu),则必须为 opencl 安装计算运行时。如果您发现任何错误,请参阅此处的说明:
apt install intel-opencl-icd  
第四步:编译源代码。到此,您的开发环境现已准备就绪,您可以在启用 python 和 wheel 选项的情况下配置和运行 cmake。这将创建.wheel 文件和所有其他可用于发布的 c++ 二进制文件。
输入命令:
mkdir build && cd buildcmake -dcmake_build_type=release -denable_python=on -denable_system_pugixml=off -denable_wheel=on ..  
确保显示以下选项,如图1-7所示,表示将构建 cpu、gpu 和 vpu 的插件,以及 python 支持(本例中为 python 3.8.10)。若要针对其他版本的 python 进行编译,请使用附加选项:
-dpython_executable、-dpython_library 和 -dpython_include_dir 选项。
图1-7  cmake 选项
接着运行以最大线程数运行 make,并等待 15 到 30 分钟(取决于您的机器),命令如下:
make --jobs=$(nproc --all)  
在极少数情况下,操作系统可能会终止您的编译。如果您遇到这种情况,如所示,请增加您的 ram 或同时使用较少的 jobs 重新 make 。
图1-8  内存不足
在一切编译完成后,您可以在“build”文件夹下的“wheels”目录中找到 wheel 包,既有 openvino runtime 包也有 openvino development 包,如图1-9所示。
图1-9  编译成功获得wheel安装包
需要注意的是,如图1-9所示的 wheel 包在您的 docker 容器中。您需要做的最后一件事是将它们复制到您的主机上。
请先按 ctrl+p,再按 ctrl+q 退出容器而不停止它;接着运行 docker ps 以获取容器的 id ,并通过容器 id 将容器中的 wheel 文件复制到您的主机。
docker ps -adocker cp :/opt/openvino/build/wheels/openvino_dev-2022.3.0-000-py3-none-any.whl .docker cp :/opt/openvino/build/wheels/openvino-2022.3.0-000-cp38-cp38-manylinux_2_31_x86_64.whl .  
到此,恭喜您,您已经获得了最新的openvino wheel安装包了!
在目标机器上
使用最新的 openvino wheel 安装包 
创建一个新的虚拟环境并在其中安装 openvino-dev。您应该使用与编译 openvino 时的相同版本的 python 和 ubuntu 操作系统。
python3.8 -m venv venvsource venv/bin/activatepip install --upgrade pippip install openvino-2022.3.0-000-cp38-cp38-manylinux_2_31_x86_64.whl pip install openvino_dev-2022.3.0-000-py3-none-any.whl  
让我们运行一个基准测试,看看是否一切正常。让它成为在 cpu 上运行的 open model zoo 中的人员检测模型。您可能还需要使用 apt 安装 libgl-dev。
omz_downloader --name person-detection-0200benchmark_app -m intel/person-detection-0200/fp16-int8/person-detection-0200.xml -d cpu -t 10
看,它正常工作了!到此,现在您已准备好导入 openvino 并在 python(本例中为 python 3.8.10)中运行您的代码。
python 3.8.10 (default, jun 22 2022, 20:18:18) [gcc 9.4.0] on linuxtype help, copyright, credits or license for more information.>>> import openvino>>>  


数据可视化技术实例报告
背投电视的分辨率
科技+艺术,阿里影业与秀狐科技等合作生态伙伴携手推动虚拟拍摄的应用与普及
安全气囊控制单元负责评估传感器数据的MEMS加速计
【节能学院】安科瑞电力监控系统在嘉兴万豪酒店的设计与应用
从OpenVINO的主分支制作一个openvino .whl文件
浅谈热学背后的逻辑结构和各部分的关系
开关电源的实际应用限制和问题分析
气动量仪的组成、特点及原理
CAN协议解析
韩国5G用户数量或将达到1000万?
5G网络潮流下,华为手机业务或将扛不住?
“寿命”最长的量子比特出现
七牛云入选“2020 年中国独角兽企业”榜单
中科艾尔二期生产基地开工,聚焦集成电路气路系统核心零部件领域
AMD三季度净利润同比增长近三倍
医疗废物在线监管系统在医废信息化管理中的应用
是德科技与新思科技定制化编译器设计环境完成整合
如何编写dll文件
cmos带隙基准电压源设计