目录
什么是wheel package?
wheel是一个Python生态系统组件,可简化包安装。它在包分发过程中提供了更快的安装时间和更高的可靠性。该格式包含的文件和元数据只需移动到要安装的目标系统上的正确位置。如果你使用pip来安装一个Python包,它很可能是一个wheel package。我们想制作一个.whl文件以便于安装。
如果有稳定版本,为什么我需要构建主分支?
有时,出于以下原因,需要使用前沿构建:
- 即使在稳定版本中也存在错误。如果您需要这些修复并且不能等到下一个版本,唯一的解决方案是构建主分支。
- 你需要一个已经实现但正在等待正式版本的新功能——再次构建主分支。
- 你的资源是有限的。因此,您需要一个仅包含所需模块的自定义包—自定义编译并构建主分支。
- 因为它是开源的,你可以DYI。
如何编译OpenVINO™并构建Python包?分步演练
要构建OpenVINO™工具包,您可以使用干净的Ubuntu 20.04。为避免依赖项问题,我们建议将Docker与现有操作系统环境配合使用。
让我们开始吧。
1. 设置Docker
第一步是安装Docker。按照官方Docker文档和适用于Linux的安装后中的说明解决权限问题。我们还建议您为8核计算机分配至少8GB的RAM。如果运行编译错误,请增加RAM大小并重新运行脚本。安装和配置过程完成后,让我们检查Docker是否正常工作。
docker run hello-world
你已准备好下载并运行Ubuntu容器。您可以使用18.04或20.04。但是,请注意,在不久的将来,对Ubuntu 18.04的支持将被放弃。
docker pull ubuntu:20.04
docker run -it ubuntu:20.04
您现在在新的Ubuntu 20.04容器中!此阶段的最后一步是在Docker中安装git和sudo,并将目录更改为/opt。
apt update
apt install git sudo
cd /opt
以下所有步骤都应在您所在的容器中运行。
2. 克隆存储库
下一步是克隆存储库和子存储库。OpenVINO™使用 oneDNN和OpenCV等软件包,在结帐期间,您将从中检索最新的源代码。有许多子模块,因此请确保使用--recurse-submodules标志运行。这可能需要一段时间,具体取决于您的互联网连接。
git clone --recurse-submodules --single-branch --branch=master https://github.com/openvinotoolkit/openvino.git
3. 安装构建依赖项
有一个有用的脚本,但它不安装Python的依赖项,因此需要额外的步骤。
cd openvino
./install_build_dependencies.sh
apt install cython3
pip3 install --upgrade pip
pip3 install -r src/bindings/python/wheel/requirements-dev.txt
如果要构建GPU插件(支持集成GPU),则必须为OpenCL安装计算运行时。如果您看到任何错误,请参阅此处的说明。
apt install intel-opencl-icd
4. 编译源代码
您的环境现已准备就绪,您可以在启用Python和轮子选项的情况下进行配置和运行cmake。这将创建轮子和可用于发布的所有其他C++二进制文件。
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PYTHON=ON -DENABLE_SYSTEM_PUGIXML=OFF -DENABLE_WHEEL=ON ..
确保显示以下选项,指示将构建CPU、GPU和VPU的插件,以及Python支持(在本例中为Python 3.8.10)。要针对其他版本的Python进行编译,请使用其他选项-DPYTHON_EXECUTABLE、-DPYTHON_LIBRARY和-DPYTHON_INCLUDE_DIR选项。有关更多信息,请参阅此处。
使用尽可能多的线程运行make,并等待15到30分钟(具体取决于您的计算机)。
make --jobs=$(nproc --all)
极少数情况下,可能会出现操作系统终止编译的情况。如果您遇到这种情况(如下所示),请同时增加您的RAM或make减少作业。
一切准备就绪后,您可以在build文件夹下的wheels目录中找到wheel包。运行时包和开发包如下所示。
包位于容器中。您需要做的最后一件事是将它们复制到您的计算机。按Ctrl+P,然后按Ctrl+Q退出容器而不停止它。然后运行docker ps以获取容器的ID并将文件复制到主机。
docker ps -a
docker cp <container_id>:/opt/openvino/build/wheels/openvino_dev-2022.3.0–000-py3-none-any.whl .
docker cp <container_id>:/opt/openvino/build/wheels/openvino-2022.3.0–000-cp38-cp38-manylinux_2_31_x86_64.whl .
最后,您已准备好使用OpenVINO™前沿!
在目标计算机上使用新包
创建一个新的虚拟环境并在其中安装openvino-dev。您应该使用编译OpenVINO™的相同版本的Python和Ubuntu OS。
python3.8 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip 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-0200
benchmark_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 linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import openvino
>>>
免责声明:虽然您能够构建和运行OpenVINO™的前沿,但请注意,主分支不稳定,可能存在未识别的错误。此编译是在000f5d8049fd45ddb8b070b0d7a892b2a14ebe11提交之上完成的。
引用
Solomon Brad,什么是Python轮子,你为什么要关心?可用地址:What Are Python Wheels and Why Should You Care? – Real Python
Docker团队,在Ubuntu上安装Docker引擎。可用地址: Install Docker Engine on Ubuntu
Docker Team,Linux的安装后步骤。可用地址: Linux post-installation steps for Docker Engine
Docker团队,具有内存、CPU和GPU的运行时选项。可用地址:Runtime options with Memory, CPUs, and GPUs
英特尔,GPGPU安装Ubuntu 20.04指南。可用地址:https://dgpu-docs.intel.com/installation-guides/ubuntu/ubuntu-focal.html
OpenVINO团队,为Linux构建。可用地址:BuildingForLinux · openvinotoolkit/openvino Wiki · GitHub
OpenVINO团队,Open Model Zoo。可用地址:GitHub - openvinotoolkit/open_model_zoo: Pre-trained Deep Learning models and demos (high quality and extremely fast)
资源
https://www.codeproject.com/Articles/5341636/How-to-build-a-Python-wheel-package-from-the-main