Meteor Lake在Windows 上调用低功耗 NPU 部署 AI 模型

2024年2月24日 1480点热度 1人点赞 4条评论

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

NPU驱动安装

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

图:NPU 在 Windows 任务管理器中显示驱动版本

查询当前最新的 NPU 驱动版本:

https://www.intel.com/content/www/us/en/download/794734/intel-npu-driver-windows.html

图:NPU 驱动下载页面

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

Python环境配置

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

C++环境配置

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

图:配置 OpenVINO™ runtime 头文件路径
图:配置 OpenVINO™ runtime 动态库路径
图:配置 OpenVINO™ runtime 及 frontednd 静态库路径
图:在 Windows 本地添加 OpenVINO™ 环境变量路径

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


#include <iostream>
#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<std::string> 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 调用

测试效果

当完成 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

予人玫瑰,手有余香。如果您觉得本文对您有帮助,请点赞或打赏。

文章评论

  • Tongchun Cui

    大佬请问:
    >>> import openvino as ov
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "C:\Program Files (x86)\Intel\openvino_2023.3\python\openvino\__init__.py", line 21, in <module>
    from openvino import runtime as runtime
    File "C:\Program Files (x86)\Intel\openvino_2023.3\python\openvino\runtime\__init__.py", line 8, in <module>
    from openvino._pyopenvino import get_version
    ModuleNotFoundError: No module named 'openvino._pyopenvino'
    咋解决 :cry: cry: cry:

    OpenVINO™ notebooks 示例部分也不懂怎么操作……求讲解
    (好奇心重的大学生一枚)

    2024年5月9日
  • hy

    这个错误没碰到过。你试试运行命令"source setupvars.sh"设置一下环境看看呢?(注意不要用"./setupvars.sh")。
    另外 requirements.txt 里的依赖都安装一下(pip install -r requirements.txt)

    OpenVINO项目github里有讨论类似问题的,但是不知道你碰到的问题是不是因为这个原因。
    https://github.com/openvinotoolkit/openvino/issues/19072

    2024年5月10日
  • 9527

    謝謝你的文章,對我幫助很大

    2024年5月30日
  • 您需要 登录 之后才可以评论