750 字
4 分钟
NPU-CPU 异构 LLM 推理

在本文引用的移动端实验中,CPU 的预填充(GEMM)更快,NPU 的解码算子(GEMV)更快。但调度和回退开销会抵消部分收益,全量卸载还可能增加能耗。

定义#

NPU-CPU 异构 LLM 推理(NPU-CPU Heterogeneous LLM Inference)是指在移动端片上系统(SoC)上,将大语言模型推理任务分配至 CPU 和 NPU 两个不同硬件后端执行的部署模式。后端调度器根据硬件对算子的兼容能力拆分计算图:NPU 兼容的算子下发至 NPU,不兼容的回退至 CPU。

为什么重要#

  • 大语言模型逐步落地移动端,CPU-NPU 异构执行已成为主流部署方案
  • 全量卸载到 NPU 未必更快,调度开销还可能增加能耗
  • 部署时应分别测量两个阶段的表现,再选择硬件后端

LLM 推理两阶段与硬件适配#

预填充阶段(Prefill)#

  • 运算类型:批量矩阵乘法(GEMM),计算密集型
  • CPU 优势:成熟优化库 + 大容量缓存利于权重复用
  • NPU 劣势:VTCM 容量有限(8MB),大矩阵分块效率低;HVX 指令集优化不足
  • 结论:CPU 比 NPU 快 1.27~1.62 倍

解码阶段(Decode)#

  • 运算类型:矩阵向量乘法(GEMV),内存受限型
  • NPU 优势:软件托管 VTCM + 专用 DMA 引擎 + 双缓冲,降低缓存缺失,提升 DRAM 有效带宽利用率
  • CPU 劣势:12MB L3 缓存远不够放权重,纯流式访问模式对缓存体系不友好
  • 结论:NPU 算子快 1.551.67 倍,但端到端仅 1.051.2 倍

异构执行的三类开销#

1. 调度损耗#

轻量算子(RMS_NORM、ADD 等)的纯计算耗时仅微秒级,但每次调用需承担完整 CPU-NPU 往返通信成本:

  • call-usec / op-usec 比达 8~22 倍
  • 每 token 调用数百次,累积形成严重性能瓶颈

2. 算子回退损耗#

不兼容算子(如 FLASH_ATTN_EXT)回退至 CPU 执行:

  • 触发跨硬件缓存一致性同步、张量重排、内存拷贝
  • 延迟比纯 CPU 原生运行高 ~1.5 倍

3. 通信拥塞#

解码阶段高频细粒度运算调度导致硬件接口拥塞:

  • 预填充:通信占 0.2%~3.2%
  • 解码:通信占 9.9%~13.0%

基于上述实验的设计建议#

  1. 分阶段差异化执行:Prefill → CPU,Decode → NPU
  2. 降低调度延迟:批量下发、常驻指令队列、算子融合,目标 <10μs
  3. 完善算子覆盖:消除回退,NPU 原生支持所有 LLM 推理算子

与相关概念的对比#

概念关注点与本文区别
模型量化(Quantization)降低精度减少计算/内存开销本文关注硬件调度,量化是前提条件
算子融合(Operator Fusion)合并算子减少调度次数本文量化了融合的收益上限(8~22×调度损耗)
内存带宽优化提升 DRAM 利用率NPU 的 DMA+双缓冲是内存带宽优化的一种实现
NPU-CPU 异构 LLM 推理
https://blog.lpkt.cn/posts/concepts/npu-cpu-heterogeneous-llm-inference/
作者
lollipopkit
发布于
2026-06-08
许可协议
CC BY-NC-SA 4.0