815 字
4 分钟
When NPUs Are Not Always Faster: A Stage-Level Analysis of Mobile LLM Inference

论文在骁龙 8 Gen3 上对比 CPU 与 NPU,按推理阶段、算子和流水线分析开销。测试中,NPU 预填充更慢,解码的端到端加速有限,全量卸载使能耗增加 22%–51%。

论文信息#

  • 论文:When NPUs Are Not Always Faster: A Stage-Level Analysis of Mobile LLM Inference
  • 链接:https://arxiv.org/pdf/2605.27435
  • 解读来源:NeuralTalk 公众号

核心问题#

移动端 LLM 推理中 CPU-NPU 异构执行已成为主流部署方案,但现有研究没有从算子、流水线层面系统评估 NPU 的实际运行效能。盲目全量卸载到 NPU 是否真的更优?

方法:多级分析框架#

分析分为三个层次:

  1. 阶段级分析:区分预填充阶段(GEMM,计算密集)与解码阶段(GEMV,内存受限)
  2. 算子级剖析:对比纯运算耗时 (op-usec) 与总调用耗时 (call-usec),量化调度开销
  3. OPMASK 流水线拆解:通过掩码控制,拆分 NPU 执行流程中的通信、量化、计算三大环节

实验基于 llama.cpp,四款 Q4_0 量化模型(Llama-3.2-3B / 3.1-8B / Qwen3-4B / 8B),骁龙 8 Gen3 平台。

关键实验结论#

A. 阶段级性能反转#

阶段运算类型硬件适配性能差异
预填充 (Prefill)GEMM (计算密集)CPU 更优CPU 快 1.27~1.62×
解码 (Decode)GEMV (内存受限)NPU 算子更优算子快 1.551.67×,端到端仅 1.051.2×

预填充阶段 CPU 领先的原因:

  • Hexagon HVX 指令集优化不如 CPU 成熟
  • VTCM 仅 8MB,大矩阵分块效率低
  • FLASH_ATTN_EXT 等算子回退 CPU 引入额外开销

解码阶段 NPU 优势来源:

  • NPU 软件托管 VTCM + 专用 DMA 引擎 + 双缓冲,降低缓存缺失
  • CPU 的 12MB L3 缓存对权重纯流式访问不友好

B. 抵消 NPU 收益的两类开销#

  1. 轻量算子调度损耗:call-usec/op-usec 比达 8~22 倍,每 token 调用数百次
  2. 跨后端算子回退:不兼容算子回退 CPU,延迟比纯 CPU 高 ~1.5 倍(缓存同步 + 张量重排 + 内存拷贝)

C. 流水线通信开销#

阶段通信开销占比原因
预填充0.2%~3.2%大计算量掩盖通信延迟
解码9.9%~13.0%高频细粒度调度→通信拥塞

动态量化开销仅 0.4%~2.5%,不是瓶颈。

D. 全量卸载增加能耗#

全量 NPU 卸载 vs 纯 CPU 能耗增幅:

提示词长度能耗增加
~321 tokens+22%
~641 tokens+32%
~1281 tokens+51%

原因:调度开销 + 算子回退 + NPU 预填充性能更差 → 整体耗时更长。

设计指导原则#

  • G1:基于推理阶段差异化选择硬件后端 — Prefill 交 CPU,Decode 交 NPU
  • G2:将 NPU 调度下发延迟控制在 10μs 以内 — 批量下发 / 常驻指令队列 / 算子融合
  • G3:完善 NPU 算子兼容性覆盖 — 消除算子回退开销

核心洞察#

部署时应分别测量 Prefill 和 Decode,不能只看 NPU 峰值算力。在本文平台上,调度、算子回退和通信开销抵消了部分加速收益;分阶段选择后端更合适。

与相关工作的关系#

论文从以下维度与已有评测对比:

研究阶段感知算子剖析流水线拆解能耗分析CPU-NPU 对标
MLPerf Mobile✗✗✗✗✗
Zhang & Huang✗✗✗✗CPU-GPU
Chen et al.✗✗✗✗协同模式
本文✓✓✓✓✓
When NPUs Are Not Always Faster: A Stage-Level Analysis of Mobile LLM Inference
https://blog.lpkt.cn/posts/papers/npu-not-always-faster-mobile-llm/
作者
lollipopkit
发布于
2026-06-08
许可协议
CC BY-NC-SA 4.0