第二章:硬件加速全景图——CPU、GPU、NPU、FPGA的架构对比与性能天花板

大家好,我是你们的老朋友。今天咱们聊聊硬件加速的“全家桶”。

说实话,做AI芯片架构这些年,我见过太多人一上来就问:“哪个硬件跑大模型最快?” 这个问题其实挺难回答的。就像问“哪个工具最好用”一样——你得看你要干什么活。

CPU、GPU、NPU、FPGA,这四兄弟各有各的脾气。我习惯把它们比作四种不同的交通工具:CPU是轿车,啥路都能跑但拉不了太多货;GPU是卡车,能拉货但油耗高;NPU是专线高铁,又快又省但只能跑固定线路;FPGA呢,有点像改装车,你想怎么改就怎么改,但得自己动手。

下面咱们一个一个拆开看。

2.1 CPU:通用计算的“老黄牛”

CPU的架构,说白了就是“少而精”。

你看CPU的核心数,一般就几个到几十个。但每个核心都配了很大的缓存(L1/L2/L3),还有复杂的控制单元和分支预测器。为什么这么设计?因为CPU要处理各种 unpredictable 的任务——你今天可能用它写文档,明天可能用它编译代码,后天可能用它打游戏。

但在大模型推理上,CPU有个致命短板:算力密度太低

我记得有一次,我在一个边缘设备上尝试用CPU跑一个7B参数的模型。结果呢?一个token要等好几秒。用户打字的速度都比它快。这哪行?

CPU的适用场景:
  • 模型预处理、后处理(比如tokenizer、解码)
  • 小模型推理(参数小于1B)
  • 控制流密集的任务(比如调度、分支逻辑)
  • 延迟不敏感的场景(比如离线批处理)

性能天花板?我个人的经验是:单芯片算力很难超过1 TOPS(INT8)。你想想看,大模型动辄几百TOPS的需求,CPU根本扛不住。

2.2 GPU:并行计算的“大力士”

GPU就不一样了。它的设计哲学是“多而糙”。

一个GPU有几千个核心,但每个核心的缓存很小,控制单元也很简单。它擅长的是“一个指令,操作多个数据”——也就是SIMT(单指令多线程)模式。

大模型推理里,矩阵乘法占了90%以上的计算量。而矩阵乘法,恰恰是GPU最拿手的。你想想看,一个矩阵乘法可以拆成无数个小的乘加操作,这些操作之间没有依赖关系,可以并行执行。GPU的几千个核心正好派上用场。

我曾在项目中用NVIDIA的A100跑LLaMA-70B。说实话,效果确实不错。但有个问题:功耗太高。一块A100的TDP是400W,你部署一个服务,至少得4块卡吧?那就是1.6kW。电费账单看得我肉疼。

避坑指南: 我曾经在部署时忽略了GPU的显存带宽瓶颈。大模型推理时,模型参数需要从显存搬到计算单元。如果带宽不够,计算单元就在那干等。这就是所谓的“内存墙”。所以选GPU时,别光看算力,显存带宽同样重要。

GPU的适用场景很明确:

  • 大模型云端推理(7B以上)
  • 训练和微调
  • 高吞吐量的批处理服务

性能天花板呢?目前最强的H100,INT8算力接近2000 TOPS。但功耗也到了700W。再往上堆核心,散热和供电就成了瓶颈。我个人觉得,单芯片算力天花板大概在3000 TOPS左右,再高就得靠多卡互联了。

2.3 NPU:专用加速的“特种兵”

NPU,全称是Neural Processing Unit。说白了,就是专门为神经网络设计的芯片。

它的架构和GPU完全不同。NPU内部通常是一个脉动阵列(Systolic Array)。你想象一下:一个二维的网格,每个格子都是一个乘加单元。数据像波浪一样在网格里流动,每个时钟周期都能完成一次矩阵乘法。

这种设计的好处是:极高的能效比

我测试过一款国产NPU,功耗只有15W,但INT8算力能做到32 TOPS。你算算,能效比是2.1 TOPS/W。而GPU呢?A100的能效比大概是5 TOPS/W(2000 TOPS / 400W)。看起来GPU更高?但别忘了,NPU是15W,A100是400W。在边缘设备上,15W和400W的差距是致命的。

注意: NPU的灵活性很差。它只能跑神经网络,不能跑通用计算。而且,不同厂商的NPU指令集不兼容。你为华为昇腾写的代码,没法直接跑到寒武纪的NPU上。这就是所谓的“生态锁定”。

NPU的适用场景:

  • 端侧推理(手机、IoT设备)
  • 低功耗场景(智能摄像头、可穿戴设备)
  • 固定模型、固定精度的推理任务

性能天花板?我觉得NPU的瓶颈不在算力,而在内存带宽和灵活性。目前最强的NPU,算力能做到几百TOPS,但一旦模型结构变了(比如引入了新的算子),NPU可能就跑不动了。所以,NPU的天花板是算法演进的速度

2.4 FPGA:可定制的“变形金刚”

FPGA是个有意思的东西。它不像CPU、GPU那样有固定的指令集,也不像NPU那样有固定的数据流。FPGA的逻辑单元是可以重新配置的。

你可以把FPGA想象成一堆积木。今天你想搭一个矩阵乘法器,就把积木搭成那个样子。明天你想搭一个卷积加速器,就把积木拆了重新搭。这种灵活性,是其他硬件不具备的。

但灵活性是有代价的:开发难度极高

我记得刚入行时,用Verilog写一个简单的矩阵乘法,花了两周时间。调试又花了一周。而同样的功能,用CUDA写可能一天就搞定了。所以,FPGA更适合那些算法还没定型的场景。

FPGA的适用场景:
  • 算法原型验证
  • 低延迟、确定性延迟的场景(比如自动驾驶的感知模块)
  • 非标准精度计算(比如自定义的INT4、FP8)
  • 需要频繁更新算法的场景

性能天花板?FPGA的算力受限于逻辑单元数量和布线资源。目前最强的FPGA(比如Xilinx的VU13P),INT8算力大概能做到几十TOPS。和GPU、NPU比,差了一个数量级。但它的优势是延迟极低——可以做到微秒级。而GPU的延迟通常在毫秒级。

2.5 一张图看懂全景

说了这么多,咱们用一张SVG图来总结一下。这张图展示了四种硬件的核心架构差异和性能定位。

硬件加速全景图:架构对比与性能定位 CPU 少而精的核心 大缓存 + 复杂控制 算力:<1 TOPS 功耗:几十W 适用:控制/预处理 GPU 多而糙的核心 SIMT并行模式 算力:~2000 TOPS 功耗:400-700W 适用:云端大模型 NPU 脉动阵列 专用数据流 算力:~100 TOPS 功耗:5-50W 适用:端侧推理 FPGA 可重构逻辑 自定义数据流 算力:~50 TOPS 功耗:10-100W 适用:原型/低延迟 性能天花板对比(INT8 TOPS) 0 500 1000 1500 2000 CPU GPU NPU FPGA 1 2000 100 50 注:数值为典型INT8算力,实际因型号和制程而异

2.6 如何选择?我的经验法则

说了这么多,到底怎么选?我总结了一个简单的决策树:

  1. 看功耗预算:如果功耗预算小于50W,别想了,直接上NPU。FPGA也可以,但开发成本高。
  2. 看模型大小:模型参数超过7B,GPU是唯一选择。NPU和FPGA的显存根本装不下。
  3. 看延迟要求:如果延迟要求小于1ms,FPGA是首选。GPU的延迟通常在10ms以上。
  4. 看算法稳定性:如果算法还在频繁迭代,用GPU或FPGA。NPU一旦流片,算法就固定了。
  5. 看开发周期:如果时间紧,用GPU(CUDA生态成熟)。如果时间充裕,可以考虑NPU或FPGA。
我的个人习惯: 在项目初期,我通常先用GPU做原型验证。等算法稳定了,再考虑迁移到NPU或FPGA上做量产。这样既能快速迭代,又能控制成本。

好了,这一章的内容就到这里。硬件加速的世界很大,咱们后面还会深入每个硬件的具体优化技巧。记住一句话:没有最好的硬件,只有最合适的硬件

专注资料整理