本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

NPU 架构与 GPU+NPU 协同推理

NPU 架构与 GPU+NPU 协同推理

更新于 2026-04-15

简介

在 Intel Core Ultra 处理器中,除了 Xe2 集成显卡 (iGPU),还集成了专用的 AI 推理加速器 NPU (Neural Processing Unit,神经处理单元),商业名称为 AI Boost。NPU 与 iGPU 的设计目标不同:NPU 针对低功耗、固定拓扑的神经网络推理场景优化,而 iGPU 则提供更高的计算灵活性和更广泛的模型支持。

OpenVINO 提供了 AUTO、MULTI、HETERO 等设备插件 (Device Plugin),允许开发者在单个推理会话中同时利用 NPU 和 GPU 的优势。AUTO 模式会自动选择最优设备,MULTI 模式在多设备间并行分发推理请求,HETERO 模式则将计算图按算子支持情况切分到不同设备。这些机制让开发者能够在功耗、延迟、吞吐量之间灵活权衡。

本文将详细介绍 Intel NPU 的硬件架构,对比 NPU 与 iGPU 的适用场景,深入解析 OpenVINO 的多设备推理策略,并通过交互式可视化展示 GPU+NPU 协同推理的性能与功耗权衡。

Intel NPU 架构概览

Intel NPU 基于 NCE (Neural Compute Engine,神经计算引擎) 架构,由多个专用的推理计算单元构成。与通用的 GPU Execution Unit 不同,NCE 针对卷积、矩阵乘法、激活函数等神经网络常见算子进行了硬件级优化,省去了通用指令解码和调度的开销。

NCE 集群的架构层次

NCE 是 NPU 的核心计算集群,内部包含两类执行单元——DPU 和 SHAVE,以及负责数据搬运的 DMA 引擎。这一架构从 37xx(Meteor Lake)延续到 40xx(Lunar Lake)和 50xx(Panther Lake),SHAVE 并未被取代,而是与 DPU 协同工作:

NPU Tile (NCE Cluster)
├── DPU — 固定功能硬件(卷积、矩阵乘法)
│   ├── IDU (Input Data Unit) — 输入数据读取
│   ├── MPE (Matrix Processing Element) — 矩阵计算核心
│   ├── PPE (Post-Processing Engine) — 后处理(缩放、加偏置)
│   └── ODU (Output Data Unit) — 输出数据写入
├── SHAVE_NN — 可编程向量处理器(神经网络算子:softmax、RoPE、attention kernel)
├── SHAVE_ACT — 可编程向量处理器(激活函数:ReLU、GELU、SiLU)
└── DMA — 数据搬运引擎(DDR ↔ CMX)

DPU 是专才——执行固定操作(卷积、矩阵乘法),速度极快但不可编程。SHAVE 是通才——可编程的向量处理器,处理 DPU 无法完成的灵活计算(如 softmax、LayerNorm、RoPE 位置编码)。编译器逐层判断每个算子的执行目标:优先 DPU → DMA → SHAVE。

NCE (Neural Compute Engine) 集群架构NCE Cluster (NPU Tile)DPU固定功能硬件IDUMPEPPEODU卷积、矩阵乘法SHAVE可编程向量处理器SHAVE_NNSHAVE_ACTsoftmax, RoPE, GELUDMA数据搬运引擎DDR ↔ CMX编译时确定时序CMX片上高速 SRAMKB~MBDPU/SHAVE 数据必须在此编译器逐层判断:优先 DPU → DMA → SHAVE不可编程 ops

验证来源npu_compiler 源码中 Config_ExecutorKind 枚举定义了 DMA_NN、NCE、DPU、SHAVE_NN、SHAVE_ACT 五种执行器类型;NPU40XX/shave_kernel_info.cppNPUReg40XX/ops/act_shave_rt.cpp 在 40xx 代码路径中明确存在,证实 SHAVE 在 40xx 架构中仍然活跃。

DPU 内部四单元

DPU 内部是一条精简的流水线,四个单元各司其职:

  • IDU (Input Data Unit):从 CMX 读取输入 tensor,按 DPU 要求的格式(如 NHWC blocked layout)对齐数据
  • MPE (Matrix Processing Element):执行实际的 MAC(Multiply-Accumulate)计算,支持 INT8/FP16 精度
  • PPE (Post-Processing Engine):矩阵乘法后紧接做缩放(乘常数)和加偏置,不需要额外的独立任务
  • ODU (Output Data Unit):将计算结果写回 CMX,支持输出格式转换

验证来源:40xx DPU 四单元结构见 npu_compilervpu_nce_hw_40xx.hexpand_dpu_config/ 目录。

CMX/DDR 两层内存架构

NPU 有两层内存层次,理解它们的差异对后续文章至关重要:

  • DDR(系统内存):容量大(GB 级),访问速度慢。模型权重、KV cache、输入/输出 tensor 的存放位置
  • CMX (Connection MatriX):NPU 片上高速 SRAM,每个 NPU tile 拥有独立的 CMX,容量小(KB~MB 级)但访问极快。DPU 和 SHAVE 计算时数据必须在 CMX 中
  • DMA 引擎负责 DDR ↔ CMX 之间的数据搬运,搬运计划在编译时确定——这是 NPU 静态执行模型的关键特征之一

这种两层结构意味着 NPU 不能像 GPU 那样直接访问大容量存储,每次计算前都需要 DMA 先把数据从 DDR 搬进 CMX。编译器在编译时就规划好了所有搬运的时序和顺序。

CMX/DDR 两层内存架构CMX片上 SRAM · KB~MB · 极快DPU/SHAVE 直接访问DPUSHAVEDMA EngineDDR系统内存 · GB 级 · 访问慢模型权重、KV cache、输入/输出 tensorDMA 搬运计划在编译时确定 — NPU 静态执行模型的关键

40xx 管理核

不同代际的 NPU 使用不同的管理核(management core),负责接收 host 命令、读取任务列表、调度 DMA/DPU/SHAVE 执行:

  • 37xx(Meteor Lake):使用 Leon/SPARC 管理核
  • 40xx(Lunar Lake):升级为 RISC-V 管理核

来源vpu_jsm_job_cmd_api.h 中提到 “RISC-V facilitates cache-bypass, memory access”。

管理核的核心职责是:运行时逐条读取任务描述符,检查 barrier 同步条件(producer/consumer 计数),满足条件后将任务派发给对应的执行单元(DMA、DPU 或 SHAVE)。

NPU 硬件全景图

将以上组件组合在一起,NPU 的完整硬件架构如下:

x86 CPU (host)

  │  DRM ioctl / Level Zero API

NPU 芯片 (40xx Lunar Lake)
  ├── RISC-V 管理核 — 接收 host 命令,读取任务列表,调度执行
  ├── DMA 引擎      — DDR ↔ CMX 数据搬运
  ├── NCE Cluster(s)
  │   ├── DPU       — 矩阵乘法、卷积(固定功能)
  │   └── SHAVE     — softmax、RoPE、激活函数(可编程)
  └── CMX           — 片上高速 SRAM

在 Intel Core Ultra (Lunar Lake) 中,NPU 的峰值算力约为 48 TOPS (INT8),但其核心优势在于能效比:执行同样的推理任务,NPU 的功耗通常仅为 iGPU 的 1/3 到 1/5。这使得 NPU 成为笔记本电脑、移动设备等续航敏感场景的首选。

NPU vs iGPU 适用场景

NPU 和 iGPU 在设计目标上存在根本差异,因此各自适用的推理场景也不同。下面的雷达图对比了两者在五个关键维度上的表现。

吞吐量 (Throughput)延迟 (Latency)功耗效率 (Power Efficiency)灵活性 (Flexibility)模型支持 (Model Support)NPU (AI Boost)iGPU (Xe2)NPU 优势:低功耗,固定模型高效iGPU 优势:灵活性强,模型支持广

NPU 的优势场景

  • 低功耗长时运行:例如实时语音识别 (Whisper)、持续的背景视觉任务 (人脸检测、OCR),要求设备在电池供电下长时间工作。
  • 固定拓扑小模型:模型结构稳定、算子支持度高、参数量较小 (例如 MobileNet、EfficientNet、小型 Transformer)。
  • 延迟敏感的单次推理:NPU 的片上 SRAM 和流水线设计使得单次推理的启动开销极低,适合需要快速响应的交互场景。

iGPU 的优势场景

  • 大模型、高吞吐:参数量在 7B 以上的 LLM,或需要大 Batch 并行推理的视觉任务,iGPU 的显存容量和并行度更有优势。
  • 动态图、自定义算子:模型包含 NPU 不支持的算子 (例如稀疏注意力、自定义 CUDA kernel),或推理过程中图结构动态变化。
  • 插电场景、性能优先:在台式机或接电源的笔记本上,功耗限制放宽,此时 iGPU 的绝对性能更高。

在实际部署中,开发者往往需要根据具体的模型、硬件环境和应用场景,在 NPU 和 iGPU 之间做出权衡。OpenVINO 提供的多设备推理机制让这一过程更加灵活。

OpenVINO Device Plugin 体系

OpenVINO 的 Device Plugin 是推理运行时 (Inference Runtime) 与具体硬件之间的抽象层。每个 Plugin 负责将编译后的计算图 (Compiled Model) 映射到目标设备 (GPU、NPU、CPU) 的执行引擎。

除了单设备插件 (如 GPUNPUCPU),OpenVINO 还提供了三种多设备协同模式:

AUTO / MULTI / HETERO 三种模式OpenVINO 多设备推理模式AUTO自动选最优设备GPUNPU机制:查询能力 → 基准测试 → 选一个适合:延迟优先 / 开箱即用MULTI多设备并行分发GPUNPU机制:Round-robin 分发推理请求适合:吞吐优先 / 批处理HETERO异构子图切分NPUGPU机制:按算子支持度切分计算图适合:混合算子 / 最大兼容选择取决于模型特点、硬件环境和功耗 / 性能需求
  • AUTO 模式:自动设备选择。首次推理时,OpenVINO 会查询所有可用设备的能力 (Capability Query),运行轻量级基准测试 (Benchmark),然后选择延迟最低或吞吐最高的设备。
  • MULTI 模式:多设备并行推理。将推理请求以 round-robin 方式分发到多个设备 (例如 GPU 和 NPU),每个设备独立执行完整的计算图,结果汇总后返回。适合吞吐量敏感的批处理场景。
  • HETERO 模式:异构子图切分。将计算图按算子支持情况拆分为多个子图,分别在不同设备上执行。例如将 NPU 支持的卷积、矩阵乘法放在 NPU,不支持的自定义算子放在 GPU,中间通过跨设备内存拷贝连接。

下面的交互式流程图展示了这三种模式的工作原理。

设备发现
可用设备扫描GPUXe2 Cores128 EUNPUAI Boost48 TOPSCPULion Cove16 CoresOpenVINO 运行时自动枚举所有支持的硬件设备

AUTO Plugin 详解

AUTO 插件的设计目标是”开箱即用”的最优性能。当开发者指定 device="AUTO" 时,OpenVINO 会执行以下步骤:

  1. 设备枚举:扫描当前系统中所有可用的推理设备 (GPU、NPU、CPU),查询各自的硬件规格和驱动版本。
  2. 能力查询:向每个设备的 Plugin 发送 Capability Query,获取支持的算子列表、精度支持 (FP32/FP16/INT8)、内存限制等信息。
  3. 基准测试:如果配置文件中没有缓存的性能数据,AUTO 会在每个设备上运行一次或多次推理,测量延迟 (Latency) 和吞吐量 (Throughput)。
  4. 设备选择:根据 ov::hint::PerformanceMode 配置 (延迟优先或吞吐优先),选择最优设备。例如,LATENCY 模式会选延迟最低的设备 (通常是 NPU),THROUGHPUT 模式会选吞吐最高的设备 (通常是 GPU)。
  5. 回退机制:如果首选设备不可用 (例如驱动未安装、显存不足),AUTO 会自动回退到次优设备。

AUTO 模式的优势在于简化了设备选择的复杂度,开发者无需显式指定设备即可获得合理的性能。但它的局限性在于只能选择一个设备,无法同时利用多个设备的算力。

GPU+NPU 混合推理 Pipeline

在某些场景下,单一设备无法满足所有需求:例如模型中包含 NPU 不支持的算子,或者 NPU 的显存不足以容纳整个模型。此时,HETERO 插件可以将计算图切分为多个子图,分别在不同设备上执行。

HETERO 的核心逻辑是 子图划分 (Subgraph Partitioning)

  1. 算子支持度查询:遍历计算图中的每个算子 (Operation),查询 NPU Plugin 是否支持。例如 ConvolutionMatMulReLU 通常支持,而 NonMaxSuppressionTopK 等可能不支持。
  2. 子图切分:将支持的算子连续区域 (Subgraph) 分配给 NPU,不支持的区域分配给 GPU 或 CPU。切分点 (Partition Point) 即为跨设备的边界。
  3. 跨设备数据传输:在切分点插入内存拷贝算子 (MemCopy),将中间激活值 (Activation Tensor) 从一个设备的内存搬运到另一个设备。这一步会引入额外的延迟和功耗开销。
  4. 调度执行:各子图在对应设备上并行或串行执行,OpenVINO 的 Scheduler 负责管理依赖关系和同步。

下面的交互式组件展示了一个简化的 Transformer 模型在 NPU 和 GPU 之间的切分。你可以拖动滑块调整切分点,观察 NPU/GPU 负载、通信开销和延迟的变化。

异构计算图切分点配置Transformer 模型层EmbeddingAttention-1FFN-1Attention-2FFN-2Attention-3FFN-3Attention-4FFN-4Attention-5FFN-5Output切分点NPUGPU运行指标NPU 负载50%GPU 负载50%通信开销5.0%预估延迟105 ms💡 切分点越少,设备间数据传输开销越低;负载均衡时整体延迟最优
全部 GPU均衡全部 NPU

关键洞察

  • 切分点越少越好:每增加一个切分点,就需要在设备间传输中间结果,引入延迟和功耗开销。理想情况下,应将计算图划分为尽量少的连续子图。
  • 负载均衡:如果某个设备负载过重 (例如 NPU 分到 80% 的计算),会成为瓶颈;负载均衡时整体延迟最优。
  • 模型设计考量:在模型训练阶段,可以通过算子选择 (例如用标准卷积代替 Deformable Convolution) 来提高 NPU 的算子支持度,减少切分点数量。

功耗与性能权衡

在真实部署中,开发者需要在功耗、延迟、吞吐量之间做出权衡。下图展示了不同设备配置 (纯 NPU、纯 GPU、GPU+NPU 混合) 在不同模型规模下的功耗-性能曲线。

功耗-性能权衡曲线吞吐量 (infer/s)0255075100功耗 (Watts)0102030405060纯 NPU28 infer/sGPU+NPU 混合55 infer/s纯 GPU75 infer/s💡 续航优先场景 → 纯 NPU;插电高性能场景 → GPU 或混合混合方案在多数场景下提供最佳能效比 (吞吐/瓦特)

关键发现

  • 纯 NPU:功耗最低 (5-12W),但吞吐量受限于 NPU 的并行度和显存容量。适合小模型、续航敏感的场景。
  • 纯 GPU:吞吐量最高 (70-80 infer/s),但功耗也最高 (18-50W)。在模型规模增大时,GPU 的性能优势更加明显。
  • GPU+NPU 混合:在多数场景下提供最佳的能效比 (吞吐/瓦特)。将功耗敏感的前端算子 (例如 Token Embedding、浅层 Attention) 放在 NPU,计算密集的后端算子 (例如深层 FFN) 放在 GPU,可以在功耗和性能之间取得平衡。

部署建议

  • 续航优先 (笔记本电池供电、移动设备):优先使用纯 NPU 或 AUTO 模式 (Latency 优化)。
  • 性能优先 (台式机、插电笔记本):优先使用纯 GPU 或 MULTI 模式 (Throughput 优化)。
  • 灵活部署 (云端、边缘混合):使用 HETERO 模式,根据运行时的功耗和性能监控动态调整切分点。

总结

Intel Core Ultra 的 NPU 和 iGPU 为开发者提供了功耗和性能的多重选择。NPU 的低功耗、低延迟特性使其成为移动和嵌入式场景的理想选择,而 iGPU 的高吞吐和灵活性则适合大模型和插电场景。

OpenVINO 的 AUTO、MULTI、HETERO 插件机制进一步增强了灵活性。AUTO 模式让开发者无需显式选择设备即可获得合理性能,MULTI 模式通过并行分发提升吞吐量,HETERO 模式则通过子图切分实现跨设备协同。在实际部署中,开发者应根据模型特点、硬件环境和应用需求,选择合适的设备配置和推理策略。

随着 NPU 硬件能力的不断提升 (例如支持 FP16、动态形状、稀疏化) 和 OpenVINO 软件栈的持续优化,GPU+NPU 协同推理将成为 AI 应用部署的重要趋势。掌握多设备推理的原理和最佳实践,是构建高效、低功耗 AI 系统的关键能力。

延伸阅读

  • OpenVINO 官方文档中的 MULTI 设备文档 详细介绍了多设备并行推理的配置方法和性能调优策略。
  • Intel 的 NPU 设备文档 列出了 NPU 支持的算子列表、精度配置和编译选项。
  • HETERO 异构执行文档 提供了子图切分的示例代码和调试方法。
  • 研究 Intel 的 AI PC 白皮书和 Core Ultra 技术规格,了解 NPU 在实际产品中的部署案例和性能数据。