65.9K
CodeProject 正在变化。 阅读更多。
Home

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

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2022年9月27日

CPOL

5分钟阅读

viewsIcon

5979

从源代码编译 OpenVINO 的分步演练。

什么是 wheel 包?

wheel 是 Python 生态系统的一个组件,它简化了包的安装。它提供了更快的安装时间和更可靠的包分发过程。这种格式包含文件和元数据,只需将它们移动到目标系统的正确位置即可完成安装。如果您使用 pip 安装 Python 包,那很可能就是 wheel 包。我们想要创建一个 .whl 文件以方便安装。

既然有稳定版本,为什么我还需要构建主分支?

有时,出于以下原因,使用最新的构建版本是可取的:

  1. 即使是稳定版本也存在 bug。如果您需要这些修复但又无法等到下一个版本发布,唯一的解决方案就是构建主分支。
  2. 您需要一个已经实现但尚未正式发布的最新功能——再次,构建主分支。
  3. 您的资源有限。因此,您需要一个只包含必需模块的自定义包——自定义编译并构建主分支。
  4. 因为它开源,您可以自己动手。

如何编译 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™ 使用 oneDNNOpenCV 等包,在检出时,您将检索它们的最新源代码。有很多子模块,请确保运行带有 --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 日)

资源

© . All rights reserved.