一、NPU 基础认知:从“专用加速”说起

各位同学好,我是你们这门课的老朋友。

咱们直接开门见山。NPU 是什么?说白了,就是一颗专门为神经网络计算设计的芯片。你想想看,CPU 什么都能干,GPU 擅长并行浮点运算,但到了神经网络推理这个场景,它们都太“臃肿”了。

我早年做嵌入式 AI 项目时,用 CPU 跑一个 MobileNet,帧率惨不忍睹。后来换了 GPU,功耗又压不住。直到接触了 NPU,才真正体会到什么叫“专业的人干专业的事”。

1.1 NPU 与 CPU/GPU/FPGA 的本质区别

很多初学者会问:NPU 不就是个协处理器吗?跟 GPU 有什么区别?

嗯,这里我直接给一张对比表,你看完就明白了。

维度 CPU GPU FPGA NPU
核心设计哲学 通用计算,低延迟控制 大规模并行浮点运算 可编程硬件逻辑 专用神经网络加速
典型应用 操作系统、逻辑控制 图形渲染、科学计算 通信协议、信号处理 CNN/RNN/Transformer 推理
能效比 (TOPS/W) 0.1 ~ 0.5 0.5 ~ 2 1 ~ 5 5 ~ 20+
灵活性 极高 高 中(可重配置) 低(固定算子)
典型功耗 5~150W 75~450W 10~50W 0.5~15W

核心结论:NPU 牺牲了通用性,换来了极致的能效比。在端侧推理场景下,NPU 的 TOPS/W 通常是 GPU 的 5~10 倍。

我记得有一次,客户要求把一个人脸检测模型塞进智能门锁里。CPU 跑要 200ms,功耗 1.2W;换了 NPU 之后,直接降到 15ms,功耗只有 0.3W。这就是专用加速的魅力。

1.2 NPU 的典型架构:脉动阵列

聊完区别,咱们看看 NPU 内部到底长什么样。

最经典的架构,就是 脉动阵列(Systolic Array)。这个概念最早来自卡内基梅隆大学的 H.T. Kung 教授,后来被 Google 的 TPU 发扬光大。

脉动阵列的核心思想很简单:数据像血液一样在阵列中“脉动”流动,每个处理单元(PE)只做一件事——乘加运算(MAC)。

我画了一张图,帮你理解这个结构:

脉动阵列(Systolic Array)数据流示意图 输入特征 权重缓存 PE PE PE PE PE PE PE PE PE 累加器 + 激活 输出 特征图 数据流说明: 1. 输入特征图从左向右水平流动,每个PE接收一部分数据 2. 权重从下向上垂直广播,每个PE共享同一组权重 3. 每个PE完成一次 MAC 操作,部分和向下传递 4. 累加器收集所有部分和,加上偏置,通过激活函数输出 5. 整个过程流水线化,每个时钟周期每个PE都在工作

避坑指南:我曾经在部署一个 1x1 卷积时,发现 NPU 利用率只有 30%。后来排查发现,脉动阵列对 3x3 以上的大卷积核效率最高,1x1 卷积反而更适合用 CPU 或 DSP 处理。所以,不是所有算子都适合往 NPU 上塞。

1.3 数据流架构:权重固定 vs. 数据固定

脉动阵列只是硬件结构,真正决定性能的,是数据流(Dataflow)策略。业界主要有两种流派:

  1. 权重固定(Weight Stationary):权重加载到 PE 后不再移动,输入数据在阵列中流动。优点是权重复用率高,适合全连接层。
  2. 数据固定(Output Stationary):部分和在 PE 本地累加,输入和权重都在阵列中流动。优点是减少中间结果的写回,适合卷积层。

我个人的习惯是:看你的模型里卷积层多还是全连接层多。如果是 MobileNet 这种深度可分离卷积,数据固定更友好;如果是 Transformer 里的 QKV 投影,权重固定更高效。

注意:很多商用 NPU 其实是混合数据流架构。比如寒武纪的 DianNao 系列,在卷积层用数据固定,在全连接层自动切换为权重固定。你作为开发者,不需要手动配置,但理解这个机制有助于你分析性能瓶颈。

1.4 从架构到实战:为什么你要懂这些?

你可能会问:我只是个算法工程师,NPU 架构跟我有什么关系?

关系大了去了。我举两个真实案例:

  • 案例一:某团队把 PyTorch 模型直接转成 NPU 模型,发现推理速度比 CPU 还慢。一查,原来模型里用了大量 torch.cat 和 torch.split,这些操作在脉动阵列上无法流水线化,导致 PE 利用率不到 10%。
  • 案例二:另一个团队把卷积核从 3x3 改成 5x5,理论上计算量增加了 2.78 倍,但实际推理时间只增加了 1.5 倍。为什么?因为 5x5 卷积在脉动阵列上的数据复用率更高,访存瓶颈被缓解了。

所以,理解 NPU 架构,是你写出高性能推理代码的第一步。后面的章节,我会带你一步步深入:从算子映射、内存排布,到量化校准、汇编级优化。

嗯,今天就先聊到这儿。记住一句话:NPU 不是万能的,但在它擅长的领域,它是无敌的。