2、AI芯片基础:GPU、TPU、NPU的架构差异,以及它们如何适配大模型推理
聊到AI芯片,很多人第一反应就是“显卡”。嗯,这没错,但也不全对。我这些年接触过的芯片方案,从数据中心到边缘设备,其实各有各的脾气。今天咱们就掰扯掰扯GPU、TPU、NPU这三兄弟,看看它们到底差在哪,又是怎么伺候大模型推理这个“大爷”的。
2.1 从“通用计算”到“专用加速”的演变
先说说背景。大模型推理,说白了就是一堆矩阵乘法加激活函数。这个计算模式非常固定,但数据量巨大。通用CPU干这个事,就像让一个米其林大厨去切两吨土豆——不是不能干,是效率太低,成本太高。
所以行业里开始走专用路线。GPU最早被拉来“救场”,因为它天生就是做并行计算的。后来Google觉得GPU还不够爽,自己搞了TPU。再后来,各家开始做NPU,专门为神经网络定制。
我个人习惯把这三类芯片放在一个坐标系里看:通用性和效率往往是跷跷板的两头。GPU偏通用,NPU偏专用,TPU在中间找了个平衡点。
核心观点:没有最好的芯片,只有最合适的场景。大模型推理的落地,考验的是芯片架构与算法特性的匹配度。
2.2 GPU:并行计算的“老兵”,但有点“费电”
GPU的架构核心是“大量小核心”。一个GPU里有几千个CUDA核心,每个核心都能独立执行简单的算术指令。这种设计天然适合矩阵乘法——因为矩阵乘法可以拆成无数个独立的小任务。
我在项目中遇到过一个问题:用GPU跑大模型推理,显存带宽经常是瓶颈。模型参数动辄几十GB,推理时要把这些参数从显存搬到计算单元,这个过程非常吃带宽。NVIDIA的H100用了HBM3显存,带宽高达3TB/s,但即便如此,对于1750亿参数的GPT-3,一次推理也要搬动几百GB的数据。
GPU的优势是生态成熟。CUDA、cuDNN、TensorRT,一套组合拳下来,部署起来确实方便。但缺点也很明显:功耗高。一块H100的TDP是700W,数据中心里几百块卡一起跑,电费账单看着都心疼。
避坑指南:我曾经在部署Llama 2 70B时,发现GPU利用率只有30%左右。后来排查发现是显存带宽打满了,计算单元在“等数据”。这时候加更多GPU没用,得优化数据搬运策略,比如用张量并行和流水线并行。
2.3 TPU:Google的“矩阵乘法怪兽”
TPU是Google为自家深度学习框架量身定做的。它的核心是一个巨大的脉动阵列(Systolic Array)。这个阵列由很多乘累加单元(MAC)组成,数据像流水一样在阵列里“流动”,每个时钟周期能完成海量矩阵运算。
我记得第一次看TPU的白皮书时,印象最深的是它去掉了传统GPU里那些“花里胡哨”的东西——比如复杂的缓存层级、线程调度器。TPU的指令集非常精简,主要就是矩阵乘法和激活函数。说白了,它就是为了跑神经网络而生的。
TPU的另一个特点是高带宽内存。TPU v4用了HBM2,带宽虽然不如H100的HBM3,但它的脉动阵列效率极高,数据复用做得好。同样是跑Transformer,TPU的能效比往往比GPU高出一截。
但TPU有个硬伤:你只能在Google Cloud上用。而且它的软件栈是封闭的,TensorFlow和JAX支持得好,PyTorch就差一些。如果你不是Google生态的深度用户,用TPU会有点“水土不服”。
注意:TPU的脉动阵列对矩阵尺寸有要求。如果矩阵不是64的倍数,会有填充浪费。我在调优时发现,把batch size设成128或256,TPU的利用率能提升15%以上。
2.4 NPU:为“端侧推理”而生的轻骑兵
NPU是最近几年火起来的。它的架构更灵活,不像TPU那么“死磕”矩阵乘法。NPU里通常包含多个计算单元:向量单元、矩阵单元、标量单元,甚至还有专门处理稀疏计算的单元。
你想想看,大模型推理不只是矩阵乘法,还有LayerNorm、Softmax、GELU这些操作。NPU的设计思路是“全栈加速”——每个算子都有对应的硬件加速器。这样就不用像GPU那样,把非矩阵运算也映射到CUDA核心上,效率自然更高。
我建议做端侧部署的朋友重点关注NPU。比如高通骁龙的Hexagon NPU,或者苹果的Neural Engine。它们功耗低,延迟小,适合在手机、IoT设备上跑小模型。但跑大模型(比如Llama 2 70B)就力不从心了——内存和算力都跟不上。
一句话总结:GPU是“万金油”,TPU是“偏科生”,NPU是“特种兵”。大模型推理场景下,数据中心首选GPU或TPU,端侧首选NPU。
2.5 架构差异对比:一张表看懂
| 维度 | GPU | TPU | NPU |
|---|---|---|---|
| 核心架构 | 大量小核心(CUDA核心) | 脉动阵列(Systolic Array) | 异构计算单元(向量+矩阵+标量) |
| 计算模式 | SIMT(单指令多线程) | SIMD(单指令多数据) | 数据流驱动 |
| 内存带宽 | 极高(HBM3,3TB/s) | 高(HBM2,1.2TB/s) | 中等(LPDDR5,100GB/s) |
| 能效比 | 中等(约1-2 TFLOPS/W) | 高(约3-5 TFLOPS/W) | 极高(约10+ TFLOPS/W) |
| 生态 | 成熟(CUDA生态) | 封闭(Google Cloud) | 碎片化(各家SDK不同) |
| 典型场景 | 数据中心训练+推理 | 数据中心推理 | 端侧推理 |
2.6 它们如何适配大模型推理?
大模型推理有几个关键瓶颈:显存容量、显存带宽、计算延迟。不同芯片的应对策略完全不同。
- GPU:靠“堆料”。大显存(H100有80GB HBM3)、高带宽、多卡互联(NVLink)。推理时用张量并行把模型切到多张卡上,每张卡算一部分,最后汇总。我见过一个部署方案,用8张H100跑Llama 2 70B,延迟控制在100ms以内。
- TPU:靠“效率”。脉动阵列的数据复用率极高,同样带宽下能算更多矩阵乘法。Google内部用TPU跑PaLM,推理成本比GPU低30%以上。但TPU对非矩阵运算支持不好,需要把LayerNorm等操作“融合”到矩阵乘法里。
- NPU:靠“裁剪”。端侧跑大模型必须量化,从FP16降到INT8甚至INT4。NPU的稀疏计算单元能跳过零值参数,进一步减少计算量。我在手机上跑过Llama 3 8B的量化版,延迟大概2秒,虽然比不上数据中心,但已经能用了。
个人经验:选芯片时别只看算力。我见过一个项目,选了算力最高的GPU,结果显存带宽不够,推理速度反而不如算力低但带宽高的TPU。一定要用Roofline模型分析一下,看看你的瓶颈在计算还是访存。
2.7 一张图看懂:AI芯片架构与推理适配
下面这张SVG图,展示了GPU、TPU、NPU的架构差异,以及它们在大模型推理中的适配路径。
2.8 我的建议
如果你正在做Llama生态的推理部署,我的建议是:
- 数据中心场景:优先考虑GPU。生态成熟,工具链完善,社区支持好。如果预算充足且用Google Cloud,TPU也是不错的选择。
- 端侧场景:选NPU。但要注意量化精度损失,我建议先用INT8量化,如果精度不够再考虑混合精度。
- 边缘场景:可以考虑GPU+NPU的异构方案。GPU负责大模型推理,NPU负责预处理和后处理,各司其职。
最后提醒一句:别盲目追求算力。我见过太多项目,买了最贵的GPU,结果推理延迟还不如用NPU的竞品。一定要先做Profiling,找到瓶颈,再选芯片。