一、设备状态确认

  1. 这里默认已经安装了相关设备的驱动程序,其中renderD128以及accel0是使用英特尔的iGPUNPU进行模型推理比较重要的设备节点,需要被内核正确识别。

  2. 对于iGPU设备,通过如下指令确认内核能否识别设备节点,如果没有输出则说明驱动没有安装成功。

    ls /dev/dri/render*
    
  3. 对于NPU设备,通过如下指令确认内核能否识别设备节点,如果没有输出则说明驱动没有安装成功。

    ls /dev/accel/accel0
    

二、openvino 安装

  1. 这里推荐使用python的轻量级虚拟环境venv而不是conda,因为conda的强隔离性使其对于插件的支持没有venv好,需要进行额外的配置,这个会在之后介绍,这里以venv的相关安装为例。

  2. 根据openvino官网的提示,选择pip方式并创建虚拟环境。这里使用的是系统的python版本,如果想要用其他版本需要提起安装,这个会在之后介绍。

    python3 -m venv openvino_env
    
  3. 如果提示:The virtual environment was not created successfully because ensurepip is not available.,需要安装python3-venv,python版本自行更改,这里我的系统python版本是3.10。

    sudo apt update
    sudo apt install python3.10-venv
    
  4. 激活虚拟环境。

    source openvino_env/bin/activate
    
  5. 更新pip,当然也可以不更新。

    python -m pip install --upgrade pip
    
  6. 使用pip安装openvino,这里以2024版为例,按照官方的说法使用conda-forge,则不提供对 NPU 推理的支持,不过存疑!!

    pip install openvino==2024.6.0
    
  7. 安装后,使用如下指令查看可使用的设备有哪些,默认情况下仅有CPU设备能被发现,即使你的内核识别了上面说的设备节点。

    python -c "from openvino import Core; print(Core().available_devices)"
    
  8. 如果想要在conda的环境中使用openvino,推荐使用conda-forge而不要使用pip,我的测试是通过pip安装后,即使安装好了GPU和NPU的插件,依然会识别不到这两个设备。

  9. 使用conda的安装流程可以参考官方教程,这里不过多介绍。如果在跟着下述教程安装好各个插件之后,无法识别GPU,可以在conda的虚拟环境中使用如下指令设置环境变量。也可以考虑添加到bashrc中,这样就不用每次都手动添加。

    export OCL_ICD_VENDORS=/etc/OpenCL/vendors
    

    设备识别

接下来主要参考官方提供的附加硬件设置和故障排除指南进行安装,在这里可以找到关于GPU以及NPU的配置指南,可以自行浏览。

三、iGPU 插件安装

  1. 要使用 GPU 设备进行 OpenVINO 推理,必须安装 OpenCL 运行时包,这是关键,这里推荐使用官方提供的deb包进行离线安装。
    在这里插入图片描述

  2. 可以创建一个临时文件夹存放deb文件。

    mkdir neo && cd neo
    
  3. 如果你的系统是24.04,根据官方github中的说明,需要下载如下的deb包,可以自行浏览官方说明。

    wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.11.7/intel-igc-core-2_2.11.7+19146_amd64.deb
    wget https://github.com/intel/intel-graphics-compiler/releases/download/v2.11.7/intel-igc-opencl-2_2.11.7+19146_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/intel-ocloc-dbgsym_25.18.33578.6-0_amd64.ddeb
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/intel-ocloc_25.18.33578.6-0_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/intel-opencl-icd-dbgsym_25.18.33578.6-0_amd64.ddeb
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/intel-opencl-icd_25.18.33578.6-0_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/libigdgmm12_22.7.0_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/libze-intel-gpu1-dbgsym_25.18.33578.6-0_amd64.ddeb
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/libze-intel-gpu1_25.18.33578.6-0_amd64.deb
    
  4. 如果你的系统是22.04,根据官方github中的说明,需要下载如下的deb包,可以自行浏览官方说明。

    wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.20/intel-igc-core_1.0.17537.20_amd64.deb
    wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.20/intel-igc-opencl_1.0.17537.20_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu-dbgsym_1.3.30872.22_amd64.ddeb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu-legacy1-dbgsym_1.3.30872.22_amd64.ddeb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu-legacy1_1.3.30872.22_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu_1.3.30872.22_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd-dbgsym_24.35.30872.22_amd64.ddeb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd-legacy1-dbgsym_24.35.30872.22_amd64.ddeb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd-legacy1_24.35.30872.22_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd_24.35.30872.22_amd64.deb
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/libigdgmm12_22.5.0_amd64.deb
    
  5. 这里的ddeb应该是官方上传的时候的错误,在验证软件包的 sha256 校验和的时候不要修改,不然会验证不成功,使用如下指令进行。

    # ubuntu 24.04
    wget https://github.com/intel/compute-runtime/releases/download/25.18.33578.6/ww18.sum
    sha256sum -c ww18.sum
    ---
    # ubuntu 22.04
    wget https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/ww35.sum
    sha256sum -c ww35.sum  
    
  6. 验证之后,使用mv指令将后缀为ddeb的修改为deb并以root权限安装所有文件。

    sudo dpkg -i *.deb
    
  7. 直接安装可能会出现如下问题。

    Errors were encountered while processing:
     intel-opencl-icd-legacy1
     intel-opencl-icd
     intel-opencl-icd-dbgsym
     intel-opencl-icd-legacy1-dbgsym
    
  8. 如果安装出现问题,安装所需的依赖项之后再安装deb文件。

    apt install ocl-icd-libopencl1
    
  9. 再次使用如下指令GPU设备可以正常被识别。

    python -c "from openvino import Core; print(Core().available_devices)"
    

    在这里插入图片描述

四、NPU 插件安装

  1. 这里参考官方github提供的驱动安装内容进行安装。包括版本及架构对应信息请自行浏览。目前NPU推理的要求最低为Ubuntu 22.04,内核版本6.6

  2. 删除旧包,之后同样是创建临时文件夹,这里不过多介绍。

    dpkg --purge --force-remove-reinstreq intel-driver-compiler-npu intel-fw-npu intel-level-zero-npu
    
  3. 如果你的系统是24.04,根据官方github中的说明,需要下载如下的deb包,可以自行浏览官方说明。

    wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-driver-compiler-npu_1.17.0.20250508-14912879441_ubuntu24.04_amd64.deb
    wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-fw-npu_1.17.0.20250508-14912879441_ubuntu24.04_amd64.deb
    wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-level-zero-npu_1.17.0.20250508-14912879441_ubuntu24.04_amd64.deb
    
  4. 如果你的系统是22.04,根据官方github中的说明,需要下载如下的deb包,可以自行浏览官方说明。

    wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-driver-compiler-npu_1.17.0.20250508-14912879441_ubuntu22.04_amd64.deb
    wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-fw-npu_1.17.0.20250508-14912879441_ubuntu22.04_amd64.deb
    wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-level-zero-npu_1.17.0.20250508-14912879441_ubuntu22.04_amd64.deb
    
  5. 安装 libtbb12,它是 intel-driver-compiler-npu 的依赖项。

    sudo apt install libtbb12
    
  6. 安装libtbb12的时候可能会有如下错误提示。

    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    You might want to run 'apt --fix-broken install' to correct these.
    The following packages have unmet dependencies:
     libtbb12 : Depends: libtbbmalloc2 (= 2021.5.0-7ubuntu2) but it is not going to be installed
    E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
    
  7. 按照提示,执行指令apt --fix-broken install之后,再执行sudo apt install libtbb12验证libtbb12安装是否成功。

  8. 使用同样的方式安装所有的deb包。

    sudo dpkg -i *.deb
    
  9. 检查系统中有没有Level Zero

    dpkg -l level-zero
    
  10. 如果没有使用如下方式安装,注意系统版本。

    # ubuntu 24.04
    wget https://github.com/oneapi-src/level-zero/releases/download/v1.21.9/level-zero_1.21.9+u24.04_amd64.deb
    sudo dpkg -i level-zero*.deb
    ---
    # ubuntu 22.04
    wget https://github.com/oneapi-src/level-zero/releases/download/v1.21.9/level-zero_1.21.9+u22.04_amd64.deb
    sudo dpkg -i level-zero*.deb
    
  11. 系统中如果有Level Zero,则有如下输出。

    期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
    | 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T)
    |/ 错误?=()/须重装(R) (状态,错误:大写=故障)
    ||/ 名称           版本              体系结构     描述
    +++-==============-=================-============-========================================================
    ii  level-zero     1.16.15-881~22.04 amd64        Intel(R) Graphics Compute Runtime for oneAPI Level Zero.
    
  12. 再次使用如下指令NPU设备可以正常被识别。

    python -c "from openvino import Core; print(Core().available_devices)"
    
  13. 设备被正确识别之后会有如下输出。

    ['CPU', 'GPU', 'NPU']
    

五、在docker中映射

  1. 如果在docker中想要使用上述的设备进行推理,需要在创建容器的时候将宿主机中的设备节点映射到容器内,使用如下指令实现。

    docker run .."其他参数"..
    --device /dev/dri:/dev/dri \\
    --device /dev/accel/accel0:/dev/accel/accel0 \\
    
  2. 第一步这样映射只是内核能够识别,要在容器内使用同样需要在容器内按照上述过程安装相关设备的插件,这里就不过多介绍参考上述章节的内容。

官方提供的OpenVINO™ 安装和配置故障排除指南可自行浏览

小结

上述内容均是参考官方提供的实现,这里需要提示关于accel0renderD128可能存在权限的问题会导致无法被识别,这个时候就需要将当前用户加入render的组中,相关的内容上述的一些官方链接中是有涉及的,可以自行浏览,我会在驱动安装篇进行完整的介绍。如果其他问题欢迎在评论区讨论!!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐