如何从 OpenVINO 的主分支构建 Python Wheel 包
作者:Adrian Boguszewski 和 Raymond Lo
翻譯:武卓 博士? 英特爾AI框架軟件布道師
什么是Wheel包?
Python *.whl文件或者叫Wheel包,是一個 Python 生態(tài)系統(tǒng)組件,可簡化包的安裝。 它在包分發(fā)過程中提供更快的安裝時間和更高的可靠性。 該格式包含只需要移動到要安裝的目標系統(tǒng)上的正確位置的文件和元數(shù)據(jù)。 如果你使用 pip 安裝 Python 包,它很可能是一個 wheel 包。
本文將教讀者從零開始從OpenVINO? 的主分支制作一個openvino .whl 文件以便于安裝OpenVINO?。
已經(jīng)有穩(wěn)定版本,為什么我還需要從主分支構建Wheel包?
有時,出于以下原因,需要從當前主分支構建安裝包(the bleeding-edge build):
1. 即使在穩(wěn)定版本中也存在錯誤。 如果您已經(jīng)不能等到下一個版本,急需已修復這些錯誤的安裝包 —— 唯一的解決方案是從主分支自行構建Wheel包。
2. 你需要一個已經(jīng)實現(xiàn)但等待正式發(fā)布的新特性——手動從主分支自行構建Wheel包。
3. 你的資源是有限的。 因此,您需要一個僅包含所需模塊的自定義包 —— 自定義編譯并構建主分支Wheel包。
4. 因為它是開源的,你可以DIY😉。
如何編譯 OpenVINO? 并構建 Python 包?
要構建 OpenVINO? 工具包,您可以使用干凈的 Ubuntu 20.04 或 Ubuntu 18.04。 為避免依賴性問題,我們建議在您現(xiàn)有的操作系統(tǒng)環(huán)境中使用 Docker。本文的全部步驟在12代Intel?酷睿處理器i3-12100F和Ubuntu 20.04.4LTS上完成測試,如圖1-1所示。現(xiàn)在,讓我們開始吧!
?圖1-1? 測試環(huán)境
第一步:安裝并設置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.04 sudo docker run -it ubuntu:20.04下載并運行ubuntur20.04容器,如圖1-3所示。
?圖1-3? 下載并運行Ubuntu 20.04容器
恭喜!您已經(jīng)在新的Ubuntu20.04容器里面了。此階段的最后一步是在 Docker 中安裝 git 和 sudo,并將目錄更改為 /opt。
運行命令:
apt update apt install git sudo cd /opt完成安裝git和sudo,并將目錄更改為 /opt,如圖1-4所示。
?圖1-4? 進入/opt目錄
注意!接下來的所有步驟都在上述這個Docker容器中運行。
第二步:克隆OpenVINO的代碼倉和子代碼倉。 OpenVINO? 使用 oneDNN 和 OpenCV 等軟件包。在代碼檢出(checkout)時,您將從它們中檢索出最新的源代碼。 由于OpenVINO代碼倉有很多子模塊,因此請確保使用 --recurse-submodules 標志運行。 這可能需要一段時間,具體取決于您的互聯(lián)網(wǎng)連接。
使用命令:
git clone --recurse-submodules --single-branch --branch=master https://github.com/openvinotoolkit/openvino.git完成克隆OpenVINO代碼倉和子代碼倉到本地,如圖1-5所示。
?圖1-5? 克隆OpenVINO代碼倉到本地
若您在中國,請參考《clone submodules via gitee mirrors》改用下面的命令:
?克隆子模塊成功后,如圖1-6所示。
?圖1-6? 克隆子模塊
第三步:安裝構建(Build)依賴項。下面是一個有用的腳本,但它不會為 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 安裝計算運行時。 如果您發(fā)現(xiàn)任何錯誤,請參閱此處的說明。
?apt install intel-opencl-icd第四步:編譯源代碼。到此,您的開發(fā)環(huán)境現(xiàn)已準備就緒,您可以在啟用 Python 和 wheel 選項的情況下配置和運行 cmake。 這將創(chuàng)建.wheel文件和所有其他可用于發(fā)布的 C++ 二進制文件。
輸入命令:
mkdir build && cd build
cmake -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 選項。
有關更多信息,請參閱《Additional Build Options》
?圖1-7? cmake 選項
接著運行以最大線程數(shù)運行Make,并等待 15 到 30 分鐘(取決于您的機器),命令如下:
make --jobs=$(nproc --all)在極少數(shù)情況下,操作系統(tǒng)可能會終止您的編譯。 如果您遇到這種情況,如所示,請增加您的 RAM 或同時使用較少的jobs重新make。
圖1-8? 內(nèi)存不足
在一切編譯完成后,您可以在“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 -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 .到此,恭喜您,您已經(jīng)獲得了最新的OpenVINOTM wheel安裝包了!
在目標機器上使用最新的 OpenVINO? wheel安裝包
創(chuàng)建一個新的虛擬環(huán)境并在其中安裝 openvino-dev。 您應該使用與編譯 OpenVINO? 時的相同版本的 Python 和 Ubuntu 操作系統(tǒng)。
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看,它正常工作了!到此,現(xiàn)在您已準備好導入 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? 的前沿技術,但請注意主分支不穩(wěn)定并且可能存在未識別的錯誤。 本編譯是基于 000f5d8049fd45ddb8b070b0d7a892b2a14ebe11 提交完成的。
參考文獻:
Solomon Brad, What Are Python Wheels and Why Should You Care? Available at: What Are Python Wheels and Why Should You Care? – Real Python (accessed: 23rd Aug 2022)
Docker Team, Install Docker Engine on Ubuntu. Available at: Install Docker Engine on Ubuntu | Docker Documentation (accessed: 23rd Aug 2022)
Docker Team, Post-installation steps for Linux. Available at: Post-installation steps for Linux | Docker Documentation (accessed: 23rd Aug 2022)
Docker Team, Runtime options with Memory, CPUs, and GPUs. Available at: Runtime options with Memory, CPUs, and GPUs | Docker Documentation (accessed: 23rd Aug 2022)
Intel, GPGPU Installation guide Ubuntu 20.04. Available at: GPGPU: Ubuntu 20.04 (focal) (accessed: 23rd Aug 2022)
OpenVINO Team, Building for Linux. Available at: BuildingForLinux · openvinotoolkit/openvino Wiki · GitHub (accessed: 23rd Aug 2022)
OpenVINO Team, Open Model Zoo. Available at: https://github.com/openvinotoolkit/open_model_zoo (accessed: 23rd Aug 2022)
總結
以上是生活随笔為你收集整理的如何从 OpenVINO 的主分支构建 Python Wheel 包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小屁孩看城管
- 下一篇: cifs挂载 mount ubuntu_