作者:
在 OpenVINO 編譯過程中,我們可以根據應用對于硬件平臺的需求,關閉或開指定推理后端的編譯,以達到簡化 OpenVINO 運行庫的目的,例如 cmake -DENABLE_INTEL_GPU=OFF 便可以取消 GPU plugin 庫的編譯。除此以外 OpenVINO 還提供了條件編譯功能,用于針對特定模型進行運行庫壓縮,接下來就讓我們一起來看下如何在 Windows 操作系統上實現這一功能。
1. 環境安裝與配置
第一步,我們需要確保已經在 Windows 上安裝了 Visual Studio 編譯環境。如果是第一次安裝 Visual Studio 可以通過以下鏈接下載。
https://visualstudio.microsoft.com/
在安裝組件過程中,選擇“使用C++的桌面開發”。
Visual Studio 安裝示例
安裝完畢后建議使用 Visual Studio 自帶的命令行工具“x64 Native Tools Command Prompt”對編譯環境進行初始化。
搜索“x64 Native Tools Command Prompt”
2. 預編譯
在完成編譯環境初始化后,會看到以下提醒。接下來我們就可以在該命令行終端上輸入編譯指令了。
編譯環境初始化成功
在這一步中,我們需要先利用 Ninja 編譯工具對 OpenVINO 運行庫進行預編譯,并使用 itt 組件來收集模型運行過程中的依賴數據??梢酝ㄟ^cmake -DENABLE_PROFILING_ITT=ONDSELECTIVE_BUILD=COLLECT ..指令開啟這一功能的編譯。以下是完整命令參考:
git clone https://github.com/openvinotoolkit/openvino.git set OPENVINO_HOME=D:work_pathopenvino cd %OPENVINO_HOME% git submodule update --init --recursive md build_cc cd build_cc cmake -G Ninja -Wno-dev -DCMAKE_BUILD_TYPE=Debug -DENABLE_CPPLINT=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF -DENABLE_FASTER_BUILD=ON -DENABLE_SANITIZER=OFF -DTHREADING=TBB -DBUILD_SHARED_LIBS=OFF -DENABLE_PROFILING_ITT=ON -DSELECTIVE_BUILD=COLLECT -DENABLE_INTEL_GPU=OFF -DENABLE_MULTI=OFF -DENABLE_AUTO=OFF -DENABLE_AUTO_BATCH=OFF -DENABLE_HETERO=OFF -DENABLE_TEMPLATE=OFF -DENABLE_OV_ONNX_FRONTEND=OFF -DENABLE_OV_PADDLE_FRONTEND=OFF -DENABLE_OV_PYTORCH_FRONTEND=OFF -DENABLE_OV_JAX_FRONTEND=OFF -DENABLE_OV_TF_FRONTEND=OFF -DCMAKE_INSTALL_PREFIX=install -DENABLE_PYTHON=OFF .. cmake --build . --config Debug
3. 數據收集
完成預編譯后,我們需要針對特定模型,利用 itt 工具收集 OpenVINO 運行庫在運行指定模型所需的依賴模塊。
cd %OPENVINO_HOME%uild_cc cmake --build . --config Debug --target sea_itt_lib cd %OPENVINO_HOME% set PATH=%PATH%;%OPENVINO_HOME%\temp bbin mkdir cc_data cd %OPENVINO_HOME%cc_data python3 .. hirdpartyitt_collector untoolsea_runtool.py --bindir ..inintel64Debug -o %OPENVINO_HOME%cc_datadata ! ..inintel64Debugenchmark_app.exe -niter 1 -nireq 1 -m-d NPU
可以看到在以上命令中,我們將 benchmark app 所采集到的模型運行數據保存在 cc_data 目錄下,接下來就需要基于該數據來壓縮 OpenVINO 運行庫的體積。
OpenVINO 運行依賴數據
4.運行庫編譯
使用cmake -DSELECTIVE_BUILD=ON -DSELECTIVE_BUILD_STAT=%OPENVINO_HOME%cc_data*.cs 指令,我們可以利用上一步所采集的依賴數據,在正式編譯過程中刪除一些不必要的依賴組件或是函數,以達到針對指定模型優化運行庫容量的目的。以下是完整的參考指令:
cd %OPENVINO_HOME% md build cd build cmake -G "Visual Studio 16 2019" -A x64 -DENABLE_CPPLINT=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF -DCMAKE_BUILD_TYPE=Release -DENABLE_FASTER_BUILD=ON -DENABLE_PROFILING_ITT=OFF -DSELECTIVE_BUILD=ON -DENABLE_INTEL_GPU=OFF -DENABLE_MULTI=OFF -DENABLE_AUTO=OFF -DENABLE_AUTO_BATCH=OFF -DENABLE_HETERO=OFF -DENABLE_TEMPLATE=OFF -DENABLE_OV_ONNX_FRONTEND=OFF -DENABLE_OV_PADDLE_FRONTEND=OFF -DENABLE_OV_PYTORCH_FRONTEND=OFF -DENABLE_OV_JAX_FRONTEND=OFF -DENABLE_OV_TF_FRONTEND=OFF -DSELECTIVE_BUILD_STAT=%OPENVINO_HOME%cc_data*.csv -DBUILD_SHARED_LIBS=OFF -DENABLE_LTO=ON -DENABLE_ONEDNN_FOR_GPU=OFF -DENABLE_OV_TF_LITE_FRONTEND=OFF -DENABLE_PROFILING_FIRST_INFERENCE=OFF .. cmake --build . --config Release
這里我們比較開啟條件編譯功能和關閉條件編譯功能后,OpenVINO 運行庫的大小。
條件編譯前后對比
可以看到在只編譯 NPU plugin 以及 samples 示例的情況下,OpenVINO 被壓縮了6MB左右的空間,其中 openvino.dll 動態庫為主要壓縮對象。當然針對不同模型的壓縮效果也是不同的,以上數據僅為參考。
openvino.dll 壓縮效果
5. 小結
使用條件編譯功能可以最大限度壓縮 OpenVINO 運行庫的體積,幫助應用瘦身,從而減少應用軟件在發行時由容量問題帶來的網絡和磁盤壓力。關于 OpenVINO 條件編譯功能更詳細的使用方法可以參考:
https://docs.openvino.ai/2024/openvino-workflow/deployment-locally/optimial-binary-size-conditional-compilation.html
-
WINDOWS
+關注
關注
4文章
3553瀏覽量
88984 -
編譯
+關注
關注
0文章
660瀏覽量
32926 -
OpenVINO
+關注
關注
0文章
94瀏覽量
214
原文標題:開發者實戰 | 使用 OpenVINO? 條件編譯功能,壓縮 Windows 應用體積
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論