如何客製化企業 RAG 知識庫?— 從資料庫到知識整合的實戰技術
|

如何在Windows平台呼叫NPU部署深度學習模型

   

作者:楊亦誠

相信很多開發者夥伴都已經知道,在最新一代的Intel Core Ultra行動終端處理器中已經整合了簡稱為NPU的神經網路加速處理器,以提供低功耗的AI算力,特別適合於PC端需要長時間穩定運作的AI協助工具,例如會議聊天軟體中的自動去背,或是畫面超解析度等應用。而OpenVINO工具套件也在第一時間對NPU進行了配接。接下來就讓我們一起看看如何在Intel Core Ultra處理器上搭建基礎環境,並呼叫NPU進行模型推論任務。

NPU 驅動程式安裝

首先我們需要確保是否安裝了最新版的NPU驅動程式,可以透過Windows任務管理調出當前NPU驅動版本資訊。

NPU在Windows工作管理員中顯示驅動程式版本。

NPU在Windows工作管理員中顯示驅動程式版本。

透過以下連結可查詢當前最新的NPU驅動程式版本:https://www.intel.com/content/www/us/en/download/794734/intel-npu-driver-windows.html

NPU驅動程式下載頁面。

NPU驅動程式下載頁面。

如果想更新或是重裝NPU驅動程式,可以參考以下連結的指引來下載並安裝驅動程式:https://docs.openvino.ai/2023.3/openvino_docs_install_guides_configurations_for_intel_npu.html

OpenVINO下載和安裝

由於目前NPU Plugin還沒有被整合在OpenVINO的PyPI安裝套件中,因此我們需要透過下載OpenVINO Runtime壓縮檔案的方式進行安裝。

OpenVINO下載頁面。

OpenVINO下載頁面。

整個安裝過程非常簡單,只需將壓縮檔案解壓縮至在本地路徑下既可。具體方法可以參考上圖紅框的安裝說明。

將壓縮檔案解壓縮至本地路徑。

將壓縮檔案解壓縮至本地路徑。

Python環境配置

透過執行壓縮檔案中的setupvars.bat環境配置腳本,我們就可以直接在Python環境下載入OpenVINO Runtime和NPU Plugin環境。同時利用OpenVINO的Python API指令,我們可以快速驗證NPU是否可以被正常呼叫。

Python環境中驗證NPU呼叫。

Python環境中驗證NPU呼叫。

C++ 環境配置

不同於Python,Windows上的C++應用需要依賴於CMake或者是Visual Studio的環境進行除錯,因此這裡我們需要簡單配置OpenVINO程式庫的路徑。下面是以Visual Studio中新建專案的屬性配置頁面為例。

配置OpenVINO Runtime標頭檔路徑。

配置OpenVINO Runtime標頭檔路徑。

 

配置OpenVINO Runtime動態庫路徑。

配置OpenVINO Runtime動態程式庫路徑。

 

配置OpenVINO Runtime及frontednd靜態程式庫路徑。

配置OpenVINO Runtime及frontednd靜態程式庫路徑。

 

在Windows本地添加OpenVINO環境變數路徑。

在Windows本地添加OpenVINO環境變數路徑。

完成Visual Studio專案屬性配置後,我們可以透過以下範例程式碼測試NPU是否可以被檢測及呼叫。


#include
 
#include <openvino/openvino.hpp>
 
 
 
int main(int argc, char* argv[]) {
 
 
 
    // -------- Get OpenVINO runtime version --------
 
    std::cout << ov::get_openvino_version() << std::endl;
 
 
 
    // -------- Step 1. Initialize OpenVINO Runtime Core --------
 
    ov::Core core;
 
 
 
    // -------- Step 2. Get list of available devices --------
 
    std::vector availableDevices = core.get_available_devices();
 
 
 
    // -------- Step 3. Query and print supported metrics and config keys --------
 
    std::cout << "available devices: " << std::endl;
 
    for (auto&& device : availableDevices) {
 
        std::cout << device << std::endl;
 
    }
 
}
VS環境中驗證NPU呼叫。

VS環境中驗證NPU呼叫。

 

測試效果

當完成NPU安裝後,我們可以透過 OpenVINO Notebooks 中提供的範例簡單測試NPU的性能。這個範例會透過以下Python程式碼來將模型部署在NPU上。


compiled_model = core.compile_model("model.xml", "NPU")
即時人體關鍵點示範效果。

即時人體關鍵點示範效果。

可以看到 NPU 在運作即時人體關鍵點檢測模型時的效果和速度是非常不錯的,達到了90FPS的輸送量,同時推論任務幾乎也沒有佔用CPU額外的資源,真正做到了在提供高算力的同時,減輕CPU和GPU的任務負載。

參考資料:

  1.  OpenVINO下載與安裝方式:https://docs.openvino.ai/2023.3/openvino_docs_install_guides_overview.html?VERSION=v_2023_3_0&OP_SYSTEM=WINDOWS&DISTRIBUTION=ARCHIVE
  2. NPU 環境配置:https://docs.openvino.ai/2023.3/openvino_docs_install_guides_configurations_for_intel_npu.html
  3. OpenVINO Notebooks範例:https://github.com/openvinotoolkit/openvino_notebooks

 

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: 楊亦誠

現任英特爾 AI 軟體工程師

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *