Ubuntu 26.04 下 Intel Meteor Lake 核显 NPU 驱动配置与 PyTorch NPU 推理实测背景刚拿到一台Redmi Book Pro 16 2024,CPU 是Intel Core Ultra 7 155H(Meteor Lake),带Intel Arc 核显和一颗AI Boost NPU。系统装的是Ubuntu 26.04 LTS(Resolute Raccoon),内核 7.0.0-29。这篇文章记录我从「想装 GPU 驱动」到「NPU 上跑通 PyTorch 推理」的完整过程,包括踩过的坑、验证方法,以及最终可行的官方路径。希望能帮到同款硬件或同代 Intel Core Ultra 用户在 Linux 上配置 AI 环境。一、先搞清楚:这台机器有什么 GPU?很多人(包括我一开始)以为要装 NVIDIA 驱动。先检查再动手:lspci|grep-iEvga|3d|display输出关键行:00:02.0 VGA compatible controller: Intel Corporation Meteor Lake-P [Intel Arc Graphics] (rev 08) 00:0b.0 Processing accelerators: Intel Corporation Meteor Lake NPU (rev 04)结论:没有 NVIDIA/AMD 独立显卡,只有 Intel 核显 NPU。系统里如果有linux-firmware-nvidia-graphics这类包,只是 Ubuntu 预装的通用固件,不代表有 NVIDIA 硬件。装 NVIDIA 驱动反而会出错——先lspci看清楚硬件再动手,这是最重要的一步。二、Intel 核显驱动:Mesa 已够用,补上 VA-API现状诊断Ubuntu 26.04 的 Mesa(26.0.3)已经内置对 Meteor Lake Arc 的支持,i915内核驱动也已加载。检查方式:lsmod|grep-E^xe|^i915# 内核驱动模块ls/dev/dri/# renderD128 存在 渲染设备就绪vulkaninfo--summary# 应枚举到 Intel Arcglxinfo-B# OpenGL renderer 应为 Intel补装 VA-API 视频硬解Mesa 管 3D/通用计算,但视频硬解(VDPAU/VAAPI)是单独的驱动:sudoaptinstall-yintel-media-va-driver vainfo intel-gpu-tools验证:vainfo# 应看到 H.264/HEVC/VP9/AV1 全编解码支持我的机器输出里 AV1 硬解硬编都支持,看视频、剪片子省电流畅。三、NPU 驱动:这才是难点硬件就绪但用户态驱动缺失Meteor Lake 的 NPU 内核驱动intel_vpu内建在 Linux 6.x 内核里,重启后自动加载:ls/dev/accel/accel0# NPU 设备节点存在lsmod|grepintel_vpu但光有内核驱动还不够,要调用 NPU 还需要用户态驱动:libze_intel_npu.so(Level Zero 驱动)、libnpu_driver_compiler.so(编译器)、固件。Ubuntu 仓库里没有,得从 GitHub 下Ubuntu 26.04 仓库里没有 NPU 用户态驱动包。Intel 官方在 GitHub 维护:https://github.com/intel/linux-npu-driver/releases最新版本(v1.35.0)只提供Ubuntu 24.04的包。在 26.04 上装会有版本检查,但实测deb 依赖(libc/libstdc/libtbb12)在 26.04 都满足,可以装:# 下载 release 的 tar.gz(约 52MB)tarxzf linux-npu-driver-v1.35.0-ubuntu2404.tar.gz# 安装 3 个核心包(apt 会自动拉 libtbb12 依赖)sudoaptinstall-y\./intel-fw-npu_*.deb\./intel-level-zero-npu_*.deb\./intel-driver-compiler-npu_*.deb坑:GitHub 大文件下载容易断。建议用断点续传:curl -C - -o file https://...。我第一次直接下载卡在 33M/52M,续传后又遇到文件损坏,删除重下才成功。验证 NPU 被识别用 Python 调 Level Zero 枚举设备:importctypes zelctypes.CDLL(/usr/lib/x86_64-linux-gnu/libze_loader.so.1)zel.zeInit(0)# ...枚举 driver 和 device...识别结果:驱动0: Vendor:0x8086 Device:0x7d55 类型:1 ← Intel Arc 核显 驱动1: Vendor:0x8086 Device:0x7d1d 类型:5 ← NPU!0x7d1d正是 Meteor Lake NPU 的 PCI ID,和lspci完全对应。四、踩坑记:CS2 跑不动(顺带排查游戏)驱动配好后玩 CS2,发现帧率极低,一度以为驱动没生效。排查后发现:vulkaninfo确认 GPU 枚举正常看 CS2 进程(PID)实际加载的库:ls-la/proc/cs2_pid/map_files/|grepvulkan发现 CS2 加载的是libvulkan_intel.so(硬件驱动),不是libvulkan_lvp.so(软件渲染)——说明 GPU 确实在工作。真正的元凶在 CS2 设置文件cs2_video.txt:setting.defaultres 4096 ← 分辨率设成了 4096×2560! setting.defaultresheight 2560我的屏幕实际是3072×1920165Hz,CS2 却把分辨率设成了4096×2560——比屏幕还高 80% 的像素量,核显(共享内存、带宽有限)根本扛不住。这是设置问题,不是驱动问题。把它降到 2560×1600 后立刻流畅了。教训:游戏卡 ≠ 驱动坏。先确认进程确实在用硬件驱动,再看游戏设置是否超出硬件能力。核显尤其如此——高分辨率 全高特效 MSAA 是性能杀手。五、PyTorch 上 NPU:官方路径调研到了重头戏——在这台机器上跑 PyTorch,让 NPU 做推理。结论先行:别装 intel-npu-acceleration-library一开始我以为要装intel-npu-acceleration-library(Intel 的 PyTorch NPU 插件)。查证后发现:该项目已被 Intel 官方标记 EOL(生命周期结束),仓库顶部明确公告停止维护Linux 端没有预编译 wheel,只有源码源码编译时 CMake 检测到Ubuntu 26.04 unsupported,直接报错拒绝编译CMake Error at CMakeLists.txt:68 (message): Ubuntu version 26.04 is unsupportedPyPI 上也没有intel-npu-torch这个包。这条 PyTorch NPU 老路已经走不通。官方推荐的路径:OpenVINOIntel 官方明确建议:用 OpenVINO OpenVINO GenAI 来利用 NPU。这是当前唯一被积极维护的 Intel NPU 推理方案,对 Meteor Lake / Core Ultra 全系支持。# 用 uv 建 Python 3.11 环境(uv 管解释器,清爽)uv venv--python3.11.venv uv pipinstall--python.venv/bin/python openvino openvino-genai uv pipinstall--python.venv/bin/python torch onnx onnxscript装完先看 OpenVINO 是否识别 NPU:importopenvinoasov coreov.Core()fordincore.available_devices:print(d,|,core.get_property(d,FULL_DEVICE_NAME))成功输出:CPU | Intel(R) Core(TM) Ultra 7 155H GPU | Intel(R) Arc(TM) Graphics (iGPU) NPU | Intel(R) AI Boost ← NPU 就绪!六、PyTorch → NPU 推理 demo(完整可跑)PyTorch 模型跑 NPU 的标准姿势:PyTorch 定义模型 → 导出 ONNX → OpenVINO 在 NPU 编译推理。下面是完整可跑的脚本(也放在~/codes/npu-demo/npu_mlp_demo.py):importnumpyasnpimporttorchimporttorch.nnasnnimportopenvinoasovclassMLP(nn.Module):def__init__(self,in_dim8,hidden32,out_dim4):super().__init__()self.netnn.Sequential(nn.Linear(in_dim,hidden),nn.ReLU(),nn.Linear(hidden,out_dim),)defforward(self,x):returnself.net(x)modelMLP().eval()withtorch.no_grad():forminmodel.modules():ifisinstance(m,nn.Linear):nn.init.constant_(m.weight,0.5)nn.init.constant_(m.bias,0.1)sampletorch.randn(1,8)# 1. 导出 ONNXtorch.onnx.export(model,sample,/tmp/mlp.onnx,input_names[input],output_names[output],opset_version17)# 2. CPU 参考输出withtorch.no_grad():refmodel(sample).numpy()[0]# 3. NPU 推理coreov.Core()compiledcore.compile_model(/tmp/mlp.onnx,NPU)npu_outcompiled([sample.numpy()])[output][0]print(CPU:,np.round(ref,4))print(NPU:,np.round(npu_out,4))print(误差:,np.max(np.abs(ref-npu_out)))运行结果:✅ 已导出 ONNX: /tmp/npu_mlp_demo.onnx ✅ PyTorch(CPU) 输出: [0.1 0.1 0.1 0.1] ✅ OpenVINO(NPU) 输出: [0.1 0.1 0.1 0.1] 最大误差: 2.441555e-05 NPU 推理结果 ✅ 完全一致 NPU 推理 demo 运行成功!NPU 真的在算:输出[0.1, 0.1, 0.1, 0.1](全 0.5 权重 0.1 偏置经 ReLU 后的理论值),与 CPU 结果误差在 1e-5 量级,完全一致。七、为什么「PyTorch 上 NPU」这么绕?这个问题值得说道说道:Intel 在 Linux 上对 NPU 的定位是「推理专用」:NPU 是固定功能加速器,适合跑已编译好的模型,不适合像 GPU 那样做通用张量计算。所以官方把它收口到OpenVINO(推理框架)而不是暴露成torch.npu这样的通用后端。PyTorch 的官方 NPU 支持走了弯路:早期 Intel 做了intel-npu-acceleration-library试图填这个缝,但性能和生态都不足以支撑,最终被砍掉。现在 PyTorch 官方页面推荐的 Intel 路径是 OpenVINO 转换。现实中的工作流:训练用 GPU/CPU(PyTorch)→ 推理部署到 NPU(OpenVINO)。NPU 的卖点是低功耗 AI 推理,适合边缘设备、笔记本上的轻量 AI 应用,而不是训练。八、总结与资源这台机器的最终软件栈组件状态Intel Arc 核显(显示/3D)✅ Mesa 26.0.3 i915 驱动VA-API 视频硬解✅ intel-media-va-driver 26.1.2NPU 内核驱动✅ intel_vpu(内核内建)NPU 用户态驱动✅ v1.35.0(Level Zero 编译器 固件)OpenVINO / GenAI✅ 2026.3(识别 NPU)PyTorch → NPU 推理✅ 实测通过核心经验先lspci确认硬件,再谈装驱动。别惯性以为要装 NVIDIA。内核驱动 ≠ 用户态驱动:设备能枚举 ≠ 能调用。NPU 要 Level Zero 用户态库才算完整。Intel NPU 在 Linux 上的正路是 OpenVINO,PyTorch 走「导出 ONNX → OpenVINO NPU」。游戏卡先看设置是否超出硬件能力(分辨率/特效),别急着怪驱动。下载 GitHub 大文件用curl -C -断点续传。相关资源Intel Linux NPU 驱动:github.com/intel/linux-npu-driverIntel NPU 加速库(已 EOL):github.com/intel/intel-npu-acceleration-libraryOpenVINO:github.com/openvinotoolkit/openvinoPyTorch 附加平台页:pytorch.org/get-started/additional-platforms写于 2026-08-10,硬件 Redmi Book Pro 16 2024 (Core Ultra 7 155H),系统 Ubuntu 26.04 LTS。