简单三步在Windows上调用低功耗NPU部署AI模型

描述

相信很多小伙伴都已经知道,在最新一代的英特尔 酷睿 Ultra 移动端处理中已经集成了被称为 NPU 的神经网络加速处理器,以提供低功耗的 AI 算力,特别适合于 PC 端需要长时间稳定运行的 AI 辅助功能,例如会议聊天软件中的自动抠像,或是画面超分辨率等应用。而 OpenVINO 工具套件也在第一时间对 NPU 进行了适配,接下来就让我们一起看一下如何在英特尔 酷睿 Ultra 处理器上搭建基础环境,并调用 NPU 进行模型推理任务。

NPU 驱动安装

首先我们需要确保是否安装了最新版的 NPU 驱动,可以通过 Windows 任务管理调出当前 NPU 驱动版本信息。

NPU

图: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 压缩包的方式进行安装。

NPU

图:OpenVINO 下载页面

整个安装过程非常简单,只需将压缩包解压到在本地路径下即可。具体方法可以参考上图标红处的安装说明。

NPU

图:将压缩包解压至本地路径

Python 环境配置

通过执行压缩包中的 setupvars.bat 环境配置脚本,我们便可以直接在 Python 环境下加载 OpenVINO runtime 和 NPU Plugin 环境。同时利用 OpenVINO 的 Python API 指令,我们可以快速验证 NPU 是否可以被正常调用。

NPU

图:Python 环境中验证 NPU 调用

C++ 环境配置

不同于 Python,Windows 上的 C++ 应用需要依赖于 CMake 或者是 Visual Studio 的环境下调试,因此这里我们需要简单配置下 OpenVINO 库的路径。下面以 Visual Studio 中新建项目的属性配置页面为例。

NPU

图:配置 OpenVINO runtime 头文件路径

NPU

图:配置 OpenVINO runtime 动态库路径

NPU

图:配置 OpenVINO runtime 及 frontednd 静态库路径

NPU

图:在 Windows 本地添加 OpenVINO 环境变量路径

当完成 Visual Studio 项目属性配置后,我们可以通过调试以下示例代码,测试 NPU 是否可以被检测及调用。

 

#include 
#include 


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;
    }
}

 

NPU

图:VS 环境中验证 NPU 调用

测试效果

当完成 NPU 安装后,我们可以通过 OpenVINO notebooks 中提供的示例,简单测试下 NPU 的性能。这个示例会通过以下 Python 代码来将模型部署在 NPU 上。

 

compiled_model = core.compile_model("model.xml", "NPU")

 

NPU

图:实时人体关键点演示效果

可以看到 NPU 在运行实时人体关键点检测模型时的效果和速度还是非常不错的,达到了 90FPS 的吞吐量,同时推理任务几乎也没有占用 CPU 额外的资源,真正做到了在提供高算力的同时,减轻 CPU 和 GPU 的任务负载。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分