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 驱动。先检查再动手:
bash
lspci | grep -iE "vga|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 内核驱动也已加载。检查方式:
bash
lsmod | grep -E "^xe|^i915" # 内核驱动模块
ls /dev/dri/ # renderD128 存在 = 渲染设备就绪
vulkaninfo --summary # 应枚举到 Intel Arc
glxinfo -B # OpenGL renderer 应为 Intel
补装 VA-API 视频硬解
Mesa 管 3D/通用计算,但视频硬解(VDPAU/VAAPI)是单独的驱动:
bash
sudo apt install -y intel-media-va-driver vainfo intel-gpu-tools
验证:
bash
vainfo # 应看到 H.264/HEVC/VP9/AV1 全编解码支持
我的机器输出里 AV1 硬解硬编都支持,看视频、剪片子省电流畅。
三、NPU 驱动:这才是难点
硬件就绪但用户态驱动缺失
Meteor Lake 的 NPU 内核驱动 intel_vpu 内建在 Linux 6.x 内核里,重启后自动加载:
bash
ls /dev/accel/accel0 # NPU 设备节点存在
lsmod | grep intel_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 都满足,可以装:
bash
# 下载 release 的 tar.gz(约 52MB)
tar xzf linux-npu-driver-v1.35.0-ubuntu2404.tar.gz
# 安装 3 个核心包(apt 会自动拉 libtbb12 依赖)
sudo apt install -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 枚举设备:
python
import ctypes
zel = ctypes.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)实际加载的库:
bash
ls -la /proc/<cs2_pid>/map_files/ | grep vulkan
发现 CS2 加载的是 libvulkan_intel.so(硬件驱动),不是 libvulkan_lvp.so(软件渲染)------说明 GPU 确实在工作。
-
真正的元凶在 CS2 设置文件
cs2_video.txt:"setting.defaultres" "4096" ← 分辨率设成了 4096×2560!
"setting.defaultresheight" "2560"
我的屏幕实际是 3072×1920@165Hz ,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 unsupported
PyPI 上也没有 intel-npu-torch 这个包。这条 PyTorch NPU 老路已经走不通。
官方推荐的路径:OpenVINO
Intel 官方明确建议:用 OpenVINO + OpenVINO GenAI 来利用 NPU。这是当前唯一被积极维护的 Intel NPU 推理方案,对 Meteor Lake / Core Ultra 全系支持。
bash
# 用 uv 建 Python 3.11 环境(uv 管解释器,清爽)
uv venv --python 3.11 .venv
uv pip install --python .venv/bin/python openvino openvino-genai
uv pip install --python .venv/bin/python torch onnx onnxscript
装完先看 OpenVINO 是否识别 NPU:
python
import openvino as ov
core = ov.Core()
for d in core.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):
python
import numpy as np
import torch
import torch.nn as nn
import openvino as ov
class MLP(nn.Module):
def __init__(self, in_dim=8, hidden=32, out_dim=4):
super().__init__()
self.net = nn.Sequential(
nn.Linear(in_dim, hidden), nn.ReLU(),
nn.Linear(hidden, out_dim),
)
def forward(self, x):
return self.net(x)
model = MLP().eval()
with torch.no_grad():
for m in model.modules():
if isinstance(m, nn.Linear):
nn.init.constant_(m.weight, 0.5)
nn.init.constant_(m.bias, 0.1)
sample = torch.randn(1, 8)
# 1. 导出 ONNX
torch.onnx.export(model, sample, '/tmp/mlp.onnx',
input_names=['input'], output_names=['output'],
opset_version=17)
# 2. CPU 参考输出
with torch.no_grad():
ref = model(sample).numpy()[0]
# 3. NPU 推理
core = ov.Core()
compiled = core.compile_model('/tmp/mlp.onnx', 'NPU')
npu_out = compiled([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.2 |
| NPU 内核驱动 | ✅ 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-driver
- Intel NPU 加速库(已 EOL):github.com/intel/intel-npu-acceleration-library
- OpenVINO:github.com/openvinotoolkit/openvino
- PyTorch 附加平台页:pytorch.org/get-started/additional-platforms
写于 2026-08-10,硬件 Redmi Book Pro 16 2024 (Core Ultra 7 155H),系统 Ubuntu 26.04 LTS。