利用移动NPU实现高效的端侧扩散大语言模型推理
本文提出llada.cpp,首个针对移动NPU优化的扩散大语言模型推理框架。通过多块投机解码、双路径渐进修正和交换优化内存运行时三项技术,在保证生成质量的同时,将LLaDA-8B的生成延迟较CPU基线降低17-42倍。
扩散大语言模型(dLLM)通过并行去噪多个token来加速生成过程,特别适合对延迟敏感的移动端推理。然而,重复的去噪操作在智能手机上引入了大量的计算开销。移动神经处理单元(NPU)虽然提供了高吞吐量的密集矩阵计算能力,但高效利用它们仍面临三大挑战:首先,token的提交会导致每块有效负载的缩减,使得NPU的计算资源无法充分利用;其次,token的修订使得KV缓存的重用变得复杂,容易引入额外的延迟;最后,NPU可见的地址空间有限,导致频繁的重映射和数据传输,带来高昂的开销。
针对这些问题,本文提出了llada.cpp——首个面向NPU的扩散大语言模型移动端推理框架。该框架通过三种核心技术将块级dLLM推理与移动NPU的执行特性对齐:
- 多块投机解码:在当前块解码的后期阶段,利用推测的未来块token来填充萎缩的工作负载,从而提高NPU的利用率。这种方法类似于传统的投机解码,但针对NPU的并行特性进行了优化。
- 双路径渐进修正:允许已提交的token在稳定前保持可修订状态,并通过CPU侧路径刷新不稳定token,避免阻塞密集的NPU执行。该技术通过分离修订路径,实现了非阻塞的修正过程,显著提升了推理效率。
- 交换优化内存运行时:压缩NPU可见的地址布局,并将数据准备与NPU计算重叠,以减少重映射和传输开销。通过优化内存交换策略,该技术大幅降低了数据搬运的延迟。
llada.cpp被实现为端到端的推理框架,并在多种硬件平台(包括不同的移动SoC)和dLLM工作负载上进行了评估。实验结果表明,在保持生成质量的前提下,该框架将LLaDA-8B模型的生成延迟相比CPU基线(使用前缀KV缓存重用)降低了17至42倍。这一成果不仅验证了NPU在移动端加速dLLM推理的巨大潜力,也为未来移动设备上的高性能AI应用提供了重要的技术基础。