“大脑 20 瓦,GPT-3 用 400 瓦。”这句话在过去一年从朋友圈转到知乎,又从知乎转到各种科技媒体的标题里,看得多了,我觉得它值得一次彻底的技术澄清。作为一个常年干模型部署、整天跟能效数据打交道的工程师,我在笔记本上跑过 BP 网络做手写数字识别,也在机房训练过 Transformer,最近几年更是天天和推理功耗计、算力集群以及各种号称低功耗的 AI 芯片纠缠。神经网络省不省电,这件事从来不是一句口号能说清的。这篇文章想把功率与能量、训练与推理、生物与人工这两套系统放在同一张桌上,看看那 20 瓦和 400 瓦到底谁在偷换概念,更重要的是聊聊从算法到硬件我们有哪些真正能落地的省电招数。无论你是算法工程师、部署工程师,还是单纯好奇 AI 为什么会成为“电老虎”,都值得往下看。
1. 先搞懂功率与能耗,别被“400 瓦”带偏
1.1 20 瓦是持续功率,400 瓦更像“瞬时功耗”
瓦特描述的是“单位时间里消耗的能量”,相当于水龙头的流速;度的单位千瓦时则是“一段时间流出的总水量”,两者有关联,但绝不能直接比较。人脑的 20 瓦,指的是成年大脑在清醒、睡眠、发呆、解题等各种状态下,平均维持的大致功率。这个数值非常稳定,稳定到哪怕你在做微积分,额外功耗也只增加很小一部分。按 20 瓦算,大脑一天耗电约 0.48 度,一年下来大概 175 度,放在家里算是个不折不扣的省电大户。
而 GPT-3 的“400 瓦”,如果认真抠一下就会发现不太对劲:这个数字更接近一块高性能 GPU 的典型满载功耗,例如一块 A100 的 TDP(热设计功耗)就在 400 瓦上下。就算这块卡真的满载,它也只是训练或推理时的一个部件,模型本身的能耗不能这么算。更严格地说,GPT-3 训练一次到底花了多少电?不同机构给出的公开估算在 1287 兆瓦时到 3640 兆瓦时之间,换算成度就是 128.7 万度到 364 万度。你看,一旦开始算总能耗,和“400 瓦”就差了不止一个数量级。如果要找点体感,哪怕按较低的 1287 兆瓦时算,也差不多是让一个普通大脑连续运转 7300 多年的总耗电。
我常跟团队用一句话概括这种对比:拿“水龙头开到最大流率”和“全天 24 小时滴水”比谁更费水,账是没法算的。你得先说清楚比的是瞬时功率还是累计能耗,比的是训练还是推理,比的是单卡还是整机。把这些维度理顺后,“大脑 20 瓦”和“GPT-3 用 400 瓦”这组数字的很多戏剧性会消散,但真正悬殊的数量级差距反而更清楚。
1.2 数据中心里还有一堆看不见的“隐形功耗”
如果只看 GPU 上的功率,都还算太客气。在真实数据中心里,GPU 周围还有 CPU、内存、网卡、磁盘,以及给机器散热的空调和风扇。业界用 PUE(电源使用效率)这个指标刻画这层“隐形开销”,PUE 等于数据中心总耗电除以 IT 设备耗电,常见值在 1.1 到 2.0 之间。PUE 如果是 1.5,意味着 IT 设备每消耗 1 度电,数据中心实际要从电网取 1.5 度电,多出来的部分基本都变成了制冷和供电损耗。
拿前面说的 1287 兆瓦时来算,如果实际 PUE 是 1.5,训练一次 GPT-3 的总耗电大约是 1930 兆瓦时,约 193 万度电。按商业电价 0.6 元一度折算,单是电费就超过一百万元,还没算集群折旧、机房租金和人力成本。所以网上说“训练一个大模型相当于几个家庭几百年的用电”,本质上是非常粗略的类比,但数量级摆在那儿,并不算离谱。
做模型部署的人往往还要看另一个指标:每瓦性能,也就是常说的 FLOPS/W 或者“帧/焦耳”。MLPerf 这类基准测试已经把能耗作为可选附测指标,目的就是逼大家把“跑得快”和“耗得省”放在一起评价。只看精度和延迟的旧习惯,这几年正在被能效指标慢慢纠正。
1.3 自己动手算一笔能耗账
给没有实操经验的读者一个模板。假设你手里有一块 400 瓦的 GPU,跑一个任务时满载工作 100 小时,那么耗电量就是 400 瓦乘以 100 小时,等于 40 千瓦时,也就是 40 度电。按 0.6 元一度的商业电价算,大概 24 元。如果你跑的是训练任务,把每次迭代时间、总迭代次数、平均功耗测出来,同样可以算出总能耗。公式极简:E=P×T。难的不是算,而是把 P 和 T 取准。
取 P 的坑在于 GPU 功耗不是恒定的。nvidia-smi显示的当前功耗会随负载剧烈波动,空闲可能只有 40 瓦,满载可能冲到 400 瓦。我通常的做法是,先让模型预热 5 到 10 分钟,再采一分钟以上的功耗均值,而不是只看某一个瞬间的读数。取 T 的坑则在于要区分“算的时间”和“挂机的时间”,如果程序在等待数据或锁等待,GPU 功耗低但耗时在涨,这种情况要单独标注,否则算出的能效会很难看。结论就是:再看到“GPT-3 用 400 瓦”这种说法,先问三个问题——这是功率还是能量?是训练还是推理?是单卡还是整机?问完,大部分争议会自动消失。
2. 人脑凭什么只用 20 瓦?生物计算的底牌
2.1 事件驱动与稀疏放电:不干活就不耗电
人脑最让我佩服的一点,是它的“待机功耗”和“工作功耗”差距很小。生物神经元不会像神经网络模型那样,在每一层都持续输出一堆浮点数;它平时保持静息电位,只有输入整合超过阈值时才发出一个短暂的动作电位,也就是脉冲。放电之后,神经元有短暂的不应期,相当于硬件层面自带背压调度。更关键的是,大脑局部回路通常只有一小部分神经元处于活跃状态,大量神经元在给定瞬间其实是安静的。
这跟人工神经网络形成鲜明对比。在 GPU 上跑一个前馈神经网络做数字识别,哪怕输入图像里只有小猫两三只,卷积层也得把整张图中所有像素的乘加运算都做一遍,每个神经元对应的权重都要参与计算。生物视觉则不一样,视网膜细胞先对对比度、运动等信息做预处理,只有发生变化的区域才会触发更高级皮层的活动。这种“事件驱动”的计算里,空白的地方不产生运算,自然也不费电。
脉冲神经网络(SNN)就是想复刻这个机制:输入到达时产生稀疏的脉冲,没有输入或输入不足时,神经元几乎不消耗能量。问题是当前主流深度学习框架都是为稠密矩阵乘法那套数学准备的,把网络强行改成脉冲形式之后,训练算法不成熟,时间步展开又会带来额外计算,远看很美好,近看工程量很大。这也是为什么类脑算法的落地速度慢于硬件本身。
2.2 学习不需要“存下整个中间过程”
训练深度网络为什么贵?拆开看,核心是反向传播。前向传播时,我们要把输入从输入层一路算到输出层,而这中间每一层的激活值都得缓存下来,因为反向传播时需要用到它们来计算梯度。以 Transformer 为例,一个批次只保存中间激活就可能占掉按 GB 计的显存。反向传播过程本身又是从头到尾反着算一遍,每一层根据上层回传的残差(误差信号)计算本层梯度,再用梯度更新权重。这个“正着一遍、反着一遍”的过程,让训练的计算量和存储量都数倍于一次单纯的前向推理。
人脑的学习规则完全不同。赫布规则大致是说,两个神经元如果总是同时被激活,它们之间的突触连接就会被加强。这种调节发生在局部:一个神经元只需要关心自己和相邻神经元的活动,不需要知道全局误差,更不需要把“中间过程”全部缓存下来供以后复盘。突触小结既是记忆的存储位,也是计算的参与方,权重更新就发生在本地,不产生大范围数据搬运。我常跟人开玩笑说,反向传播的坏习惯是“把菜谱和材料清单背下来,才能倒推调料用量”;大脑则是边做菜边调味道,不用刻意记录每一步。
当然,事情也没有这么简单。人脑有睡眠重放和记忆巩固机制,相当于离线回放当天的经历,这部分同样耗能。只不过它的方向跟反向传播完全不同,更强调稀疏、慢速、局部化,因此单次调整的能耗远低于深度学习中每周都要跑几万个 batch 的迭代。
2.3 存算一体:大脑直接绕开“内存墙”
计算机的经典体系结构里,CPU 和 GPU 负责计算,DRAM 负责存储,数据要来回搬运。计算很快,搬运却很贵。业界有个著名观点:一次浮点运算只消耗皮焦量级的能量,但从内存里取一次数据可能要消耗几个数量级更高的能量。所以你会看到很多模型在 GPU 上跑,功耗高不一定是因为乘加单元在疯狂燃烧,而是权重和中间激活被不停搬到计算单元旁边。这个现象有个通俗的名字,叫“内存墙”。
大脑没有这个问题。突触既是存储权重的地方,也是整合信号的位置;膜电位累加、阈值判断、脉冲发放都发生在同一个物理结构附近,不需要把整个权重矩阵搬到远处某个处理器。整个神经组织是一个三维的、带布线成本约束的设备,它用局部连接换取低通信开销。人工神经网络想省电,最优雅的一条路就是学习这种设计:把存储塞进计算单元,或者让计算发生在靠近数据的地方。这也是近存计算和存内计算近几年在 AI 芯片里越来越热的原因。
如果你在硬件待过,就会明白一个很反直觉的现象:模型很小但功耗不一定低,很多时候开销全花在“拿到数据”而不是“计算数据”上。回头看大脑,一个只有 20 瓦预算的系统,要支撑 860 亿个神经元和上百万亿个突触,如果它走“到处搬数据”的路线,早就把自己耗死了。
3. 人工神经网络的电,到底烧在了哪里
3.1 从 BP 网络到 Transformer:结构决定能耗基因
我最早接触神经网络是在 MATLAB 里做手写数字识别,那时用 BP 网络配一个普通 CPU 就能跑,甚至不需要 GPU。后来我把同样的网络切到 GPU 训练,速度确实上来了,功耗也跟着上来,我第一次有了“原来算得快和耗电多是同一个东西的两面”这个意识。现在回头看,这种切换其实就是结构、精度和并行策略共同决定的能耗变化。
不同网络结构有完全不同的能耗“基因”。卷积神经网络(CNN)通过局部连接和权值共享减少了一部分参数和计算量,所以做图像任务时单位任务的能效通常优于同规模全连接网络。循环神经网络(RNN)和 LSTM 天生按时间步顺序计算,设计上适合序列建模,但对硬件调度极不友好,因为每个时间步都在等上一个时间步的结果,等于把并行性拱手让给了低效状态。Transformer 在很大程度上强化了深度学习的“矩阵乘法信仰”,它几乎所有计算都可以写成大矩阵乘,从而能被 GPU 高效调度,但注意力的复杂度随序列长度平方增长,输入一长,矩阵乘法和 KV Cache 的搬运成本都会爆炸。图神经网络(GNN)还要在此基础上按图结构做聚合,邻居规模一大,数据访问模式就变得不规则,能耗和延迟都难控制。
我在和硬件团队做能耗分析时,常会画一张表,不是比精度,而是比“这个结构到底在芯片上跑得顺不顺”。CNN 的卷积核可以切分得比较平;Transformer 的矩阵乘很大,但 KV Cache 访问有随机性;RNN 几乎没法有效利用多核。最终结果是,模型参数量相同,实际功耗可能差出好几倍。
3.2 精度冗余是巨大的能源浪费
另一个大头是精度位数。训练阶段,我们普遍用 FP32、FP16 或 BF16。就算用 FP16,每个数字也占 16 位,而现代神经网络的权重其实对噪声有很强的容忍度。生物突触的信号本质上是一种低精度、模拟量,而且很噪。深度学习却为了梯度稳定和训练收敛,坚持用更高精度表示数字,等于用更粗的笔干同样的活,但笔本身更费墨。
推理阶段能好一些,可以做量化,把 FP16 模型压到 INT8。我自己的实践是,在边缘设备上用 INT8 跑语音合成(TTS)模型,单板整体功耗经常只有十几瓦到几十瓦,延迟还稳定,而同等精度任务放到 GPU 上可能要消耗几百瓦。代价是精度略有下降,但只要用一小段真实语音做校准,听感几乎不受影响。不过量化并不等于在所有芯片上都能省电,关键要看硬件有没有对应的 INT8 乘加单元。很多老 GPU 没有专门的 INT8 算力,落到编译器里照样转成 FP16 加模拟,电没省成还引入了额外开销。所以动手量化之前,先查清楚目标硬件的指令集,比一上来就量化更稳妥。
很多人觉得“模型越小越省电”,这其实是个陷阱。模型小了,如果精度格式没变、访存模式没优化,功耗不一定下降。真正吃功耗的往往不是算力,而是权重搬运和中间缓存。小模型在低并发、低 batch 下可能频繁进入“加载权重、计算、等待”的循环,每个循环都要搬运参数,功耗依然居高不下。省电的真招是把模型做小和把访存做规范同时进行。
3.3 训练与推理:你要为哪张账单买单
把能耗按阶段拆开看,训练是一次性成本,推理是持续成本。GPT-3 这种级别的大模型,训练一次耗电以百万度计,一次性投入确实惊人;但长期运营一个 AI 服务,推理成本往往会反超训练。一个每天处理几百万次请求的在线系统,日积月累下来的推理耗电完全可能盖过当初训练那一次投入。
所以在实际产品选型里,我更关心“部署后的单位请求成本”。要算这笔账,除了模型结构,还要考虑并发、批大小、数据加载方式。比如一个服务 batch size 设得太小,显卡利用率低,单位请求的能耗反而高;如果一次性塞太大 batch,延迟又可能超标。这些权衡只能基于实测数据判断,别想当然。
还有一个学术方向值得提一下:Neural ODE 尝试把网络参数化为常微分方程,用数值求解器完成前向传播,理论上不需要逐层保存中间激活,还能换取连续深度的特性。但在我有限的观察里,数值求解器本身的迭代开销不小,能否在能耗上占优完全取决于问题规模。这类研究说明行业正在形成共识:能耗问题的解法不是单纯的硬件升级,算法结构、数值方法和硬件调度被牢牢绑在了一起。
4. 省电路线图:从硬件、算法到调度
4.1 现役 AI 芯片的能效分层:GPU、NPU 与类脑芯片
先承认一个事实:现在的 GPU 为通用计算做了太多妥协,很多晶体管在跑 AI 时是闲置的。为了高并行度和灵活度,它把通用 ALU、缓存、调度器都塞进同一块芯片,功耗自然不可能便宜。相比之下,专为神经网络设计的 NPU 通常配有一块乘加阵列,能以很高吞吐连续做矩阵乘法,权重搬运路径也被精心设计,能耗因此可以比通用 GPU 低一个数量级。AMD 的 Versal ACAP 这类可配置异构平台,还可以把 AI Engine 排成接近数据流的形态,让数据在阵列里流动而不是反复回主存取权重,适合功耗受限的确定性负载,在智能摄像头、工业质检等场景确实很香。
类脑芯片则是另一个极端。英特尔的 Loihi、IBM 的 TrueNorth 以及国内一些团队做过的神经拟态原型,都试图用异步脉冲、存算一体和极度稀疏的事件驱动来逼近大脑能效。说句公道话,它们在特定任务上的能效数据非常亮眼,但生态几乎还是沙漠:深度学习框架的算子根本落不上去,要把模型重构为脉冲版本,精度和工具链都跟不上。我做过几次类脑算法调研,最终结论都是:硬件可能不是最大的瓶颈,软件生态和算法形式才是。
作为工程师,我不会盲目追新芯片。选硬件先看三件事:目标模型的精度要求、数据流的访存模式、部署环境的功耗上限。GPU 适合大型训练和不固定 shape 的推理;NPU 适合固定 shape、高并发的推理;FPGA 和类脑平台适合工程量小、任务很明确的低功耗场景。选错硬件,再好的算法也白搭。
4.2 现有模型上最实用的三招:量化、剪枝、蒸馏
不想换硬件的团队,也有三招立刻能用的优化。第一招是量化。把 FP16 压到 INT8,模型存储和带宽需求直接减半,实测下来整卡功耗能降不少。训练后量化最简单,但需要用小批量真实数据校准激活值的 min/max,否则一点异常值就会让量化步长失衡。第二招是剪枝。把接近零的权重剪掉,但如果目标硬件不支持稀疏计算,只是把存储省了,算力功耗基本没动。很多 GPU 只对 2:4 结构化稀疏有加速,非结构剪枝收益很小。第三招是蒸馏。用大模型当教师,教一个小模型,让小模型在推理时也能接近大模型的精度。蒸馏的效果依赖任务和数据量,但通常比单纯压缩更稳,也是这几年小参数模型受欢迎的原因之一。
我通常按“先量化、再结构化剪枝、最后考虑蒸馏”的顺序做,每走一步都用能耗、延迟、精度三位一体的指标重新测一遍。团队里经常出现“量化后精度没崩但延迟变高”的情况,原因往往是低精度计算单元利用率不足,或者数据格式转换占了额外时间。所以不要只看模型文件变小就庆祝,还要看实际芯片上的每瓦吞吐。另外,优化前一定要先记录基线能耗,否则后面所有“优化效果”都说不清。
4.3 通用神经网络处理器下的多核调度问题
现在很多 NPU 号称有几十上百个核心,但跑起来却往往不是线性加速,问题大多出在多核调度上。把一个算子拆到多个核心,最理想的情况是每个核心负载均衡,大家一起算完;现实里,访存冲突、计算粒度不匹配、同步开销都会让某一个核心成为短板,其他核心只能空转等待。空转的核心如果不自动降频,照样耗电却不产生有效输出,于是功耗高、吞吐低,能效比很难看。
不同网络结构在多核调度上的表现差异很大。CNN 由于卷积核天然按通道和空间切分,分配给多个核心相对容易,调好了能得到接近线性的加速。Transformer 的矩阵乘很规则,但 KV Cache 的随机访问会让多核访存打架;通常需要把头分成多组,每组独立做注意力,再同步结果。RNN/LSTM 这类时间步串行模型最头疼,强行多核并行等于每步都要做跨核通信,通信开销比计算省下的还多,反而不如单核跑到低功耗状态更划算。LSTM、GRU、Elman 这类变体再怎么改,也没能从根本上改变时序串行的本质。
给你一个可动手的检查方法:如果整芯片功耗居高不下,但算力利用率不高,先看 IPC(每时钟周期指令数)。IPC 偏低而功耗高,大概率是访存等待或锁竞争,不是计算能力不足。固定 shape 的推理任务,可以用静态调度把算子预先绑到固定核心,省掉动态调度器每次都要做的任务分发开销;动态 shape 则适合用事件队列,宁可偶尔排队,也别频繁唤醒闲置核心。这套方法论放在 NPU、GPU 和 CPU 上都有用,差别只是调度粒度不同。
5. 流传的能耗数字与实测中的坑
5.1 六条常见说法逐条辨析
网上关于“人脑 20 瓦”和“GPT-3 400 瓦”的说法五花八门,我挑了六条最常见的,用一张表理一遍:
| 常见说法 | 靠谱程度 | 详细解析 |
|---|---|---|
| 大脑平均功率 20 瓦,全天耗电约 0.48 度 | 基本靠谱 | 这是成年大脑日常基础代谢功率,和思考量关系不大,属于稳定指标 |
| GPT-3 单次训练耗电约 1287 兆瓦时 | 大致靠谱 | 这是第三方基于集群的估算,不同硬件与优化下结果差别很大,常被引用 |
| “400 瓦”就等于 GPT-3 的能耗 | 偷换概念 | 更接近一块 A100 的满载功耗,属于瞬时功率或单部件功耗,不是模型总能耗 |
| 人脑只用 20 瓦就能碾压 AI,说明 AI 方向错了 | 过于笼统 | 两套系统生命周期完全不同,结构、任务、硬件口径都不一致,不能直接比胜负 |
| 量化到 INT8 一定省一半电 | 片面 | 只有硬件有对应算术单元和优化调度时才省电,否则可能只是文件变小 |
| 模型越小越省电 | 不一定 | 访存模式、并发、数据搬运往往比参数数量更决定功耗 |
这张表不是想“打脸”,而是呼吁大家在传播数字前先做单位换算和口径标注。做技术的人最怕把估算值当实测值、把瞬时值当累计值,这两种误读在 AI 能耗话题里出现频率极高。
5.2 实测功耗的几个真实教训
我在帮客户做推理功耗评估时踩过不少坑。第一个坑是只看瞬时读数。有一次我盯着nvidia-smi看到一块卡在 240 瓦和 390 瓦之间反复跳,如果只取某一次看,会得出完全不同的结论。后来我固定做法:先让任务跑 10 分钟以上,再取 600 秒功耗采样均值,同时记录吞吐量,最终用“每瓦每秒处理请求数”来汇报。
第二个坑是忘了把整机功耗和板卡功耗分开。GPU 显示 400 瓦,不代表服务器只耗 400 瓦,CPU、内存、网卡、风扇加起来轻松再加几百瓦。如果目标是对比“跑一个模型要花多少电”,应该以整机功耗差来算:先记录空闲整机功耗,再记录满载整机功耗,两者之差才是模型带来的增量功耗。这个差值比任何单部件读数都接近真相。
第三个坑是批大小和并发对功耗影响极大。同一模型,batch size 从 1 调到 16,可能吞吐翻好几倍,整机功耗只上升一点,单位任务能耗自然大幅下降。反过来,如果两次请求之间空闲时间太长,芯片频繁进入又退出低功耗状态,频繁唤醒的开销反而让平均功耗升高。所以做 benchmark 前先想好业务场景,不要出现“测完了结果没法用”的尴尬。
第四个坑是“对比大脑 20 瓦”时不自觉忽略背景功耗。大脑是一台 24 小时常开的设备,基础能耗始终存在,哪怕你什么都没干。把它算进去后,人脑做单次视觉识别的“边际能耗”其实很低,更像固定开销而不是按次计费。人工系统则相反,很多时候可以被关掉、休眠,所以更该看整个生命周期里的总成本,而不是盯着某一秒的功耗。
5.3 怎么比才更有意义:任务等价 + 生命周期
我觉得最有意义的对比方式是“任务等价”和“生命周期”两个维度叠加。任务等价是指都做同一件事,比如把一张图分类成猫或狗,人脑识别一次花的能量,和 CNN 推理一次花的能量比一比。生命周期是指大脑是经过千百万年进化、十几年成长才得到的系统,训练这套系统的“成本”是演化加教育,无法简单折算成电费;AI 系统的生命周期则是“一次训练加持续推理”,模型从训练到上线、退役,才形成一个完整账本。
只看任务等价的瞬间,AI 推理往往不落下风。以 A100 这类 GPU 为例,单次图片分类前向推理在几毫秒量级,按 300 瓦平均功耗估算,大概在 0.5 到 1 焦耳之间;人脑看一眼猫可能要几百毫秒,按 20 瓦算就是好几焦耳。但这里有个隐蔽变量:为了得到那个“不到一焦耳”的推理能力,前期训练已经花了几百万度电。人脑这边,虽然“开发成本”无法用电费衡量,但也不该假装为零。所以结论不是“谁赢谁输”,而是这两套系统的成本结构完全不同。真正该做的不是比较口号,而是学习各自的长处,把 AI 做成按需计算、稀疏触发、朴素部署的系统。
最后分享一个实用习惯:在你的模型评测表格里,永远留一列“每瓦吞吐”或“每瓦精度”,哪怕只是粗略估算,也足够让团队重新审视很多决策。我最近在部署一个小型大模型时,从 FP16 切到 INT8,再配合结构化稀疏和更合理的 batch 策略,最终整机功耗降了 60% 以上,吞吐还提高了。整个过程没有换一块硬件,用的就是量化、剪枝、调度和持续测量这几招。这比单纯讨论“大脑 20 瓦”还是“GPT-3 400 瓦”更有意义,也更接近 AI 工程里真正该被关注的事情。