0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用OpenVINO?條件編譯功能,壓縮Windows應(yīng)用體積

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 2025-01-13 10:26 ? 次閱讀

作者:

楊亦誠(chéng) 英特爾 AI 軟件工程師

在 OpenVINO 編譯過程中,我們可以根據(jù)應(yīng)用對(duì)于硬件平臺(tái)的需求,關(guān)閉或開指定推理后端的編譯,以達(dá)到簡(jiǎn)化 OpenVINO 運(yùn)行庫(kù)的目的,例如 cmake -DENABLE_INTEL_GPU=OFF 便可以取消 GPU plugin 庫(kù)的編譯。除此以外 OpenVINO 還提供了條件編譯功能,用于針對(duì)特定模型進(jìn)行運(yùn)行庫(kù)壓縮,接下來就讓我們一起來看下如何在 Windows 操作系統(tǒng)上實(shí)現(xiàn)這一功能。

1. 環(huán)境安裝與配置

第一步,我們需要確保已經(jīng)在 Windows 上安裝了 Visual Studio 編譯環(huán)境。如果是第一次安裝 Visual Studio 可以通過以下鏈接下載。

https://visualstudio.microsoft.com/

在安裝組件過程中,選擇“使用C++的桌面開發(fā)”。

bf71685a-cf32-11ef-9310-92fbcf53809c.png

Visual Studio 安裝示例

安裝完畢后建議使用 Visual Studio 自帶的命令行工具“x64 Native Tools Command Prompt”對(duì)編譯環(huán)境進(jìn)行初始化。

bf97b884-cf32-11ef-9310-92fbcf53809c.png

搜索“x64 Native Tools Command Prompt”

2. 預(yù)編譯

在完成編譯環(huán)境初始化后,會(huì)看到以下提醒。接下來我們就可以在該命令行終端上輸入編譯指令了。

bfb7e46a-cf32-11ef-9310-92fbcf53809c.png

編譯環(huán)境初始化成功

在這一步中,我們需要先利用 Ninja 編譯工具對(duì) OpenVINO 運(yùn)行庫(kù)進(jìn)行預(yù)編譯,并使用 itt 組件來收集模型運(yùn)行過程中的依賴數(shù)據(jù)??梢酝ㄟ^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. 數(shù)據(jù)收集

完成預(yù)編譯后,我們需要針對(duì)特定模型,利用 itt 工具收集 OpenVINO 運(yùn)行庫(kù)在運(yùn)行指定模型所需的依賴模塊。

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 所采集到的模型運(yùn)行數(shù)據(jù)保存在 cc_data 目錄下,接下來就需要基于該數(shù)據(jù)來壓縮 OpenVINO 運(yùn)行庫(kù)的體積。

bfd4ce2c-cf32-11ef-9310-92fbcf53809c.png

OpenVINO 運(yùn)行依賴數(shù)據(jù)

4.運(yùn)行庫(kù)編譯

使用cmake -DSELECTIVE_BUILD=ON -DSELECTIVE_BUILD_STAT=%OPENVINO_HOME%cc_data*.cs 指令,我們可以利用上一步所采集的依賴數(shù)據(jù),在正式編譯過程中刪除一些不必要的依賴組件或是函數(shù),以達(dá)到針對(duì)指定模型優(yōu)化運(yùn)行庫(kù)容量的目的。以下是完整的參考指令:

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

這里我們比較開啟條件編譯功能關(guān)閉條件編譯功能后,OpenVINO 運(yùn)行庫(kù)的大小。

bff2d37c-cf32-11ef-9310-92fbcf53809c.png

c001d84a-cf32-11ef-9310-92fbcf53809c.png

條件編譯前后對(duì)比

可以看到在只編譯 NPU plugin 以及 samples 示例的情況下,OpenVINO 被壓縮了6MB左右的空間,其中 openvino.dll 動(dòng)態(tài)庫(kù)為主要壓縮對(duì)象。當(dāng)然針對(duì)不同模型的壓縮效果也是不同的,以上數(shù)據(jù)僅為參考。

c0162dae-cf32-11ef-9310-92fbcf53809c.png

openvino.dll 壓縮效果

5. 小結(jié)

使用條件編譯功能可以最大限度壓縮 OpenVINO 運(yùn)行庫(kù)的體積,幫助應(yīng)用瘦身,從而減少應(yīng)用軟件在發(fā)行時(shí)由容量問題帶來的網(wǎng)絡(luò)和磁盤壓力。關(guān)于 OpenVINO 條件編譯功能更詳細(xì)的使用方法可以參考:

https://docs.openvino.ai/2024/openvino-workflow/deployment-locally/optimial-binary-size-conditional-compilation.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3567

    瀏覽量

    89175
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    661

    瀏覽量

    32986
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    222

原文標(biāo)題:開發(fā)者實(shí)戰(zhàn) | 使用 OpenVINO? 條件編譯功能,壓縮 Windows 應(yīng)用體積

文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語言中條件編譯的妙用

    。例如,我們有一個(gè)數(shù)據(jù)類型,在Windows平臺(tái)中,應(yīng)該使用long類型表示,而在其他平臺(tái)應(yīng)該使用float表示,這樣往往需要對(duì)源程序作必要的修改,這就降低了程序的通用性??梢杂靡韵碌?b class='flag-5'>條件編譯
    發(fā)表于 07-19 01:53

    opencv_videoio_ffmpeg_64.dll缺失,無法在OpenVINO trade中配置OpenCV怎么處理?

    ] global C:\\jenkins\\workspace\\OpenCV\\OpenVINO\\2021.4\\build\\windows\\opencv\\modules\\videoio
    發(fā)表于 08-15 08:24

    如何正確安裝OpenVINO并將其與所需依賴關(guān)系鏈接?

    Windows 10 中安裝OpenVINO 2019.3 在 Windows 路徑中設(shè)置:C:\\Program Files (x86)\\Intel
    發(fā)表于 08-15 08:29

    導(dǎo)入IECore庫(kù)OpenVINO trade ldquo分配錯(cuò)誤如何解決?

    下載了 Windows Docker 分發(fā)版的 OpenVINO? 工具套件 使用可安裝 MSBuild 和 CMake。 創(chuàng)建一個(gè)基本的 CMake 文件并運(yùn)行一些測(cè)試。 測(cè)試中止 cv::getBuildInformation()
    發(fā)表于 08-15 07:48

    永久設(shè)置OpenVINO trade Windows reg10的工具套件環(huán)境變量

    您可以在 Windows? 10 中手動(dòng)設(shè)置OpenVINO?環(huán)境變量。在 Windows? 10 系統(tǒng)中,轉(zhuǎn)到 >系統(tǒng)和安全>系統(tǒng)>高級(jí)系統(tǒng)設(shè)置&
    發(fā)表于 08-15 07:18

    在執(zhí)行setupvars.bat腳本以初始化Windows10中OpenVINO環(huán)境時(shí),提示未安裝Python怎么解決?

    在執(zhí)行 setupvars.bat 腳本以初始化 Windows? 10 中OpenVINO?環(huán)境時(shí),遇到以下錯(cuò)誤消息: 未安裝 Python。
    發(fā)表于 08-15 06:52

    無法使用Microsoft Visual Studio 2017為Windows 10構(gòu)建開源OpenVINO怎么解決?

    無法使用 Microsoft Visual Studio 2017 為 Windows 10 構(gòu)建開源OpenVINO?。
    發(fā)表于 08-15 06:43

    PIC系列單片機(jī)WINDOWS版反編譯軟件

    PIC系列單片機(jī)WINDOWS版反編譯軟件
    發(fā)表于 04-14 15:06 ?0次下載

    如何在windows環(huán)境下用Sourcery CodeBench編譯基于am3359的u-boot概述

     我們知道在linux下編譯通過的c代碼,如果它使用了自己的API,那么在windows編譯是不能通過的。但是linux的API的功能windo
    發(fā)表于 04-24 09:36 ?8次下載
    如何在<b class='flag-5'>windows</b>環(huán)境下用Sourcery CodeBench<b class='flag-5'>編譯</b>基于am3359的u-boot概述

    c語言之條件編譯技巧與示例分析

    C語言的條件編譯#if, #elif, #else, #endif、#ifdef, #ifndef 有些程序在調(diào)試、兼容性、平臺(tái)移植等情況下可能想要通過簡(jiǎn)單地設(shè)置一些參數(shù)就生成一個(gè)不同的軟件,這當(dāng)然
    的頭像 發(fā)表于 08-26 15:06 ?2789次閱讀

    C語言條件編譯語句and單片機(jī)DMA的介紹

    C語言條件編譯語句and單片機(jī)DMA的介紹C語言條件編譯:這里面介紹的很詳細(xì),也有歷程。DMA的介紹:介紹了單片機(jī)中為什么要使用DMA,以及使用了DMA對(duì)于單片機(jī)有哪些優(yōu)點(diǎn)。
    發(fā)表于 11-29 10:36 ?3次下載
    C語言<b class='flag-5'>條件</b><b class='flag-5'>編譯</b>語句and單片機(jī)DMA的介紹

    C語言中條件編譯詳解

    —般情況下,C語言源程序中的每一行代碼.都要參加編譯。但有時(shí)候出于對(duì)程序代碼優(yōu)化的考慮,希望只對(duì)其中一部分內(nèi)容進(jìn)行編譯。此時(shí)就需要在程序中加上條件,讓編譯器只對(duì)滿足
    的頭像 發(fā)表于 04-14 13:12 ?3139次閱讀

    Windows搭建OpenHarmony編譯環(huán)境

    由于OpenHarmony的編譯工具鏈主要是建立在Linux操作系統(tǒng)下,如需要編譯OpenHarony內(nèi)核則需要搭建虛擬機(jī)等工序,相對(duì)比較繁瑣。那么,是否可以在Windows操作系統(tǒng)上實(shí)現(xiàn)
    的頭像 發(fā)表于 08-09 08:26 ?1687次閱讀
    <b class='flag-5'>Windows</b>搭建OpenHarmony<b class='flag-5'>編譯</b>環(huán)境

    NNCF壓縮與量化YOLOv8模型與OpenVINO部署測(cè)試

    OpenVINO2023版本衍生出了一個(gè)新支持工具包NNCF(Neural Network Compression Framework – 神經(jīng)網(wǎng)絡(luò)壓縮框架),通過對(duì)OpenVINO IR格式模型的
    的頭像 發(fā)表于 11-20 10:46 ?1653次閱讀
    NNCF<b class='flag-5'>壓縮</b>與量化YOLOv8模型與<b class='flag-5'>OpenVINO</b>部署測(cè)試

    如何在MacOS上編譯OpenVINO C++項(xiàng)目呢?

    英特爾公司發(fā)行的模型部署工具 OpenVINO 模型部署套件,可以實(shí)現(xiàn)在不同系統(tǒng)環(huán)境下運(yùn)行,且發(fā)布的 OpenVINO 2023 最新版目前已經(jīng)支持 MacOS 系統(tǒng)并同時(shí)支持在蘋果 M 系列芯片上部署模型。
    的頭像 發(fā)表于 01-11 18:07 ?950次閱讀
    如何在MacOS上<b class='flag-5'>編譯</b><b class='flag-5'>OpenVINO</b> C++項(xiàng)目呢?