如何从 OpenVINO™ 的主分支构建 Python wheel 包?





0/5 (0投票)
从源代码编译 OpenVINO 的分步演练。
什么是 wheel 包?
wheel 是 Python 生态系统的一个组件,它简化了包的安装。它提供了更快的安装时间和更可靠的包分发过程。这种格式包含文件和元数据,只需将它们移动到目标系统的正确位置即可完成安装。如果您使用 pip 安装 Python 包,那很可能就是 wheel 包。我们想要创建一个 .whl 文件以方便安装。
既然有稳定版本,为什么我还需要构建主分支?
有时,出于以下原因,使用最新的构建版本是可取的:
- 即使是稳定版本也存在 bug。如果您需要这些修复但又无法等到下一个版本发布,唯一的解决方案就是构建主分支。
- 您需要一个已经实现但尚未正式发布的最新功能——再次,构建主分支。
- 您的资源有限。因此,您需要一个只包含必需模块的自定义包——自定义编译并构建主分支。
- 因为它开源,您可以自己动手。
如何编译 OpenVINO™ 并构建 Python 包?分步指南
要构建 OpenVINO™ Toolkit,您可以使用干净的 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. 编译源代码
现在您的环境已准备就绪,您可以配置并运行 cmake
,并启用 Python 和 wheel 选项。这将创建 wheel 以及您可以用于发布的其他所有 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
让我们运行一个基准测试来查看一切是否正常。让它成为 Open Model Zoo 中的一个人员检测模型,在 CPU 上运行。您可能还需要使用 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
成功了!现在您已准备好在 Python 中导入 OpenVINO™ 并运行您的代码(本例中为 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™ 的最新版本,但请注意,主分支不稳定,可能存在未识别的 bug。此编译是在 000f5d8049fd45ddb8b070b0d7a892b2a14ebe11
commit 的基础上完成的。
参考文献
Solomon Brad, Python Wheels 是什么以及您为什么要关心?网址:https://realpython.com/python-wheels/ (访问时间:2022 年 8 月 23 日)
Docker Team, 在 Ubuntu 上安装 Docker Engine。网址:https://docs.dockerd.com.cn/engine/install/ubuntu/ (访问时间:2022 年 8 月 23 日)
Docker Team, Linux 后续安装步骤。网址:https://docs.dockerd.com.cn/engine/install/linux-postinstall/ (访问时间:2022 年 8 月 23 日)
Docker Team, 使用内存、CPU 和 GPU 的运行时选项。网址:https://docs.dockerd.com.cn/config/containers/resource_constraints/ (访问时间:2022 年 8 月 23 日)
Intel, GPGPU 安装指南 Ubuntu 20.04。网址:https://dgpu-docs.intel.com/installation-guides/ubuntu/ubuntu-focal.html (访问时间:2022 年 8 月 23 日)
OpenVINO Team, 为 Linux 构建。网址:https://github.com/openvinotoolkit/openvino/wiki/BuildingForLinux (访问时间:2022 年 8 月 23 日)
OpenVINO Team, Open Model Zoo。网址:https://github.com/openvinotoolkit/open_model_zoo (访问时间:2022 年 8 月 23 日)