什么是 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-7cmake選項
接著運行以最大線程數運行 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>>>
審核編輯:劉清
-
處理器
+關注
關注
68文章
19387瀏覽量
230545 -
Ubuntu
+關注
關注
5文章
565瀏覽量
29922 -
python
+關注
關注
56文章
4802瀏覽量
84890
原文標題:如何從 OpenVINO? 的主分支構建 OpenVINO? Wheel 包? | 開發者實戰
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論