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 是否真的更优?
方法:多级分析框架
分析分为三个层次:
- 阶段级分析:区分预填充阶段(GEMM,计算密集)与解码阶段(GEMV,内存受限)
- 算子级剖析:对比纯运算耗时 (op-usec) 与总调用耗时 (call-usec),量化调度开销
- 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.55 |
预填充阶段 CPU 领先的原因:
- Hexagon HVX 指令集优化不如 CPU 成熟
- VTCM 仅 8MB,大矩阵分块效率低
- FLASH_ATTN_EXT 等算子回退 CPU 引入额外开销
解码阶段 NPU 优势来源:
- NPU 软件托管 VTCM + 专用 DMA 引擎 + 双缓冲,降低缓存缺失
- CPU 的 12MB L3 缓存对权重纯流式访问不友好
B. 抵消 NPU 收益的两类开销
- 轻量算子调度损耗:call-usec/op-usec 比达 8~22 倍,每 token 调用数百次
- 跨后端算子回退:不兼容算子回退 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/