1. 从"单卡跑分"到"整柜吞吐":算力评判的坐标系换了
如果你最近一年跟做AI基础设施的人聊过,会发现一个明显的变化:以前大家比的是"你这张卡多少TFLOPS""显存带宽多大""单卡跑ResNet-50多少张图每秒",现在越来越多的人开口就是"你这个集群的MFU(Model FLOPs Utilization)多少""一万卡训练一次断几次""每Token的边际成本是多少"。这个转变不是话术上的时髦,而是整个行业对"算力"这件事的理解发生了根本性位移。
英伟达作为这个领域最核心的玩家,它的产品叙事也在同步调整。从早期强调单颗GPU的浮点性能,到后来讲NVLink、讲NVSwitch、讲整机柜的互联带宽,再到现在讲"AI工厂"这个概念——它卖的已经不是一颗芯片,而是一整套从供电、散热、互联到软件栈的系统。标题里说的"不再迷信单颗芯片速度",本质上是说:当模型规模跨过某个临界点之后,单颗芯片的速度不再是决定训练效率的主导变量,系统级的协同能力才是。
这件事对普通从业者的影响其实很直接。你可能不训练千亿参数的大模型,但你一定遇到过这些场景:租了几张GPU跑微调,发现多卡并行效率远低于预期;部署推理服务时,单卡延迟很低但吞吐上不去;做算子优化时,发现瓶颈根本不在计算单元而在数据搬运。这些问题的根因,都指向同一个事实——算力的真实表现,取决于计算、存储、互联、调度四者中最短的那块板,而不是最长的那块。
这篇内容我想把这件事拆开讲清楚。不是复述英伟达的发布会PPT,而是从一线做训练和推理的视角,解释为什么评判逻辑会变、变了之后看哪些指标、这些指标背后对应什么硬件和软件机制、以及你在实际项目里该怎么用这套新逻辑去选型、调优、排障。适合正在做AI基础设施选型、模型训练加速、推理服务部署的工程师,也适合想理解"算力"这个词到底在说什么的开发者。
2. 单卡性能为什么不再是主导变量
2.1 一个反直觉的算术:算力增长快于互联增长
先看一组量级上的对比。过去几年单颗GPU的浮点算力大概每两年翻一倍多,但芯片之间的互联带宽增长要慢得多。以NVLink为例,从A100到H100,单卡算力提升了好几倍,但卡间互联带宽的提升幅度明显小于算力提升幅度。这就带来一个结构性矛盾:计算单元越来越快,但把数据喂给计算单元的通路没有同步变快。
在单卡场景下这个问题不明显,因为数据可以从显存直接取。但一旦模型大到需要多卡切分,每一层的计算都需要卡间通信来同步梯度或交换激活值。通信时间在总时间里的占比会随着卡数增加而上升。当这个占比超过某个阈值,你加再多的卡,有效算力也不会线性增长,甚至可能因为通信开销而下降。
这就是为什么现在评估一个集群,第一眼看的是互联拓扑和带宽,而不是单卡峰值算力。一个互联设计糟糕的集群,塞满最顶级的卡也跑不出应有的效率。
2.2 大模型训练的三种并行策略与通信代价
要理解互联为什么关键,得先知道大模型训练是怎么把计算分到多卡上的。主流有三种并行方式,每种对通信的依赖程度不同:
- 数据并行(Data Parallelism):每张卡持有完整模型副本,喂不同的数据批次,反向传播后同步梯度。通信量正比于模型参数量,每步都要做一次全局归约(AllReduce)。模型越大,这一步越贵。
- 张量并行(Tensor Parallelism):把单层的矩阵运算切到多卡上,比如一个大的矩阵乘拆成几块。通信发生在层内,频率极高,对带宽和延迟都极其敏感,通常限制在单机内做。
- 流水线并行(Pipeline Parallelism):把不同的层放到不同卡上,数据像流水线一样流过。通信量相对小,但会引入"气泡"(bubble),即某些卡在等待上游数据时空转。
实际训练通常是这三种的混合,比如"张量并行+流水线并行+数据并行"的三维并行。每增加一个维度,就多一层通信协调。并行策略的选择本质上是在计算效率和通信开销之间做权衡,而这个权衡的边界,由互联能力决定。
2.3 从"算得快"到"算得满":MFU才是真实指标
单卡跑分测的是理论峰值,但真实训练中你永远达不到峰值。衡量真实效率的指标是MFU,即实际完成的浮点运算量占理论峰值的比例。一个设计良好的大规模训练任务,MFU能到40%到50%已经相当不错,很多情况下只有30%甚至更低。
MFU低的原因通常不是计算单元不够快,而是它在等数据。等数据可能来自三个地方:等显存里的数据搬运(内存墙)、等其他卡传过来的梯度(通信墙)、等调度系统分配资源(调度墙)。这三堵墙里,只有第一堵跟单卡设计强相关,后两堵都是系统级问题。
所以当有人说"我这套集群单卡算力是多少多少",内行会追问一句"那实际MFU呢"。这两个数字之间的差距,就是系统能力的体现。
3. 互联、显存、调度:决定真实算力的三堵墙
3.1 内存墙:算力再高,喂不饱也是白搭
GPU的计算单元和显存之间有一条带宽通道。每次做矩阵乘,都要从显存读数据、算完写回去。如果计算单元处理数据的速度快于显存供给数据的速度,计算单元就会空转。这个现象叫"内存墙"。
大模型推理尤其明显。生成式模型每生成一个Token,都要把整个模型权重过一遍(或者至少过一遍当前层),这个过程中显存带宽是硬约束。这就是为什么推理优化里有一大类技术专门做"减少显存访问":算子融合(把多个小算子合成一个大算子,减少中间结果的读写)、量化(用更低精度存储权重,减少搬运量)、KV Cache优化(避免重复计算注意力中的键值对)。
一个实操经验:做推理性能分析时,先算一下"理论最小显存访问量",再对比实际测量值。如果实际值远大于理论值,说明有大量冗余的显存读写,优化空间在算子融合和内存复用上,而不是换更快的卡。
3.2 通信墙:卡越多,协调成本越高
前面说的三种并行策略,每一种都对应特定的通信模式。数据并行做AllReduce,张量并行做AllGather和ReduceScatter,流水线并行做点对点传输。这些通信操作如果走PCIe,带宽和延迟都远不如走NVLink。所以现在高端训练集群普遍采用NVLink+NVSwitch的互联方案,把单机内的卡用高带宽连起来,机间再用高速网络(比如InfiniBand或RoCE)连接。
这里有个容易踩的坑:很多人以为只要卡之间有高速互联就行,忽略了拓扑结构。同样是NVLink,全连接拓扑和环形拓扑的通信效率差很多。全连接意味着任意两张卡之间都能直接通信,环形则需要多跳转发。在小规模下差别不大,规模上去之后,多跳带来的延迟累积会显著拖慢同步操作。
另一个坑是通信与计算的重叠。理想情况下,一张卡在算当前层的时候,应该同时在接收下一层需要的数据。但实际能不能重叠,取决于软件栈是否支持、通信库是否配置正确、以及计算和通信的依赖关系是否允许。如果没做好重叠,通信时间就是纯开销,直接吃掉算力。
3.3 调度墙:集群利用率是被忽视的算力
大规模集群里,卡不是永远在干活的。任务排队、故障恢复、检查点保存、资源碎片,这些都会让卡处于空闲状态。一个一万卡的集群,如果平均利用率只有60%,那实际可用算力就打了六折。
调度墙的典型表现是"大任务饿死,小任务占着茅坑"。大训练任务需要连续占用大量卡很长时间,但集群里可能零散地跑着很多小任务,导致大任务排不进去。或者反过来,大任务占着卡但中间因为故障频繁重启,实际有效训练时间很短。
解决调度问题的手段包括:拓扑感知调度(把通信密集的任务放到互联更好的物理位置上)、抢占与优先级(让高优先级任务能抢占低优先级资源)、弹性训练(任务能在卡数变化时继续跑而不是重启)。这些都属于系统软件层面的能力,跟单卡性能无关,但直接决定集群的实际产出。
4. "AI工厂"这个说法到底在指什么
4.1 从卖芯片到卖产能:商业逻辑的转变
英伟达提"AI工厂",字面意思是把数据中心当成生产AI能力的工厂。这个比喻背后是商业模式的转变:以前卖GPU,客户买回去自己搭;现在卖的是整机柜、整集群、甚至带软件栈和运维支持的完整方案。
为什么会有这个转变?因为当算力规模大到一定程度,客户自己搭的难度和风险都太高了。供电怎么设计、散热怎么搞、网络怎么布线、故障怎么快速定位、软件栈怎么调优——这些问题的复杂度随着规模非线性上升。英伟达把这些打包成标准化产品,客户拿到就能跑,省去了大量集成工作。
从评判逻辑的角度看,这意味着算力的单位从"每颗芯片"变成了"每机柜"或"每集群"。你买的不是一堆卡,而是一个能稳定产出训练吞吐的系统。系统的木桶效应更明显:供电不稳、散热不够、网络抖动,任何一个环节出问题,整柜的算力都发挥不出来。
4.2 供电与散热:被低估的算力约束
很多人讨论算力时只看芯片规格,忽略了电和热。但实际部署中,这两样经常是硬约束。
高端GPU单卡功耗动辄几百瓦,一个机柜塞几十张卡,功耗轻松上几十千瓦。传统数据中心的机柜供电能力通常只有几千瓦到十几千瓦,根本带不动。所以要上高密度算力,得先改造供电系统,把每机柜的供电能力提上去。
散热同理。风冷在高密度下效率不够,现在越来越多采用液冷方案。液冷又分冷板式和浸没式,各有优劣。冷板式改造成本相对低,但散热能力有上限;浸没式散热效率高,但维护复杂、对机房改造要求大。
一个实际项目里的教训:曾经有个团队买了最新款的GPU服务器,上架后发现跑满负载就降频。排查了半天以为是驱动问题,最后发现是机柜供电不足,GPU在功耗墙和温度墙之间反复横跳。算力规划必须从机房基础设施开始算,不能只看芯片参数。
4.3 软件栈:让硬件产能真正释放的最后一公里
硬件堆上去之后,能不能跑出效率,取决于软件栈。这包括驱动、通信库、训练框架、算子库、调度系统等。英伟达的CUDA生态之所以难被替代,很大程度上是因为这套软件栈的成熟度。
举个具体例子:同样是做AllReduce,用不同的通信库实现、不同的算法(Ring vs Tree vs CollNet)、不同的参数配置,性能可能差好几倍。这些细节不会写在硬件规格书里,但直接决定实际吞吐。再比如算子融合,框架能不能自动识别可融合的算子、融合后的算子能不能高效执行,都依赖软件栈的优化程度。
所以现在评估一个算力方案,软件栈的成熟度和可调优空间,权重越来越高。硬件决定上限,软件决定你能逼近上限多少。
5. 这套新逻辑下,选型和调优该怎么做
5.1 选型时该问的问题清单
如果你要选一套算力方案,不管是自建还是租用,下面这些问题比"单卡多少TFLOPS"重要得多:
| 维度 | 该问的问题 | 为什么重要 |
|---|---|---|
| 互联 | 卡间用什么互联?带宽多少?拓扑是全连接还是环形? | 决定多卡并行效率的上限 |
| 显存 | 单卡显存多大?显存带宽多少?支持什么精度? | 决定能跑多大的模型、推理吞吐上限 |
| 供电散热 | 单机柜供电能力?散热方案是风冷还是液冷? | 决定能否跑满负载不降频 |
| 软件栈 | 支持哪些框架?通信库版本?调度系统能力? | 决定实际能跑出多少效率 |
| 运维 | 故障定位工具?检查点机制?弹性能力? | 决定长期运行的可用性 |
这张表里的每一项,都比单卡峰值算力更能预测你的实际体验。选型时如果对方只跟你聊单卡跑分,基本可以判断他没做过大规模实际部署。
5.2 调优的优先级:先找瓶颈,再动手
调优最忌讳的是"凭感觉优化"。正确的做法是先测量,找到瓶颈在哪堵墙,再针对性处理。下面是一个实用的排查顺序:
- 先看MFU:如果MFU已经很高(比如超过50%),说明系统效率不错,优化空间有限。如果很低(低于30%),说明有明确的瓶颈。
- 区分计算瓶颈和通信瓶颈:用profiler工具看时间花在哪。如果计算单元利用率高但吞吐低,可能是内存墙;如果计算单元大量空转,可能是通信墙或调度问题。
- 通信瓶颈再细分:看是带宽不够还是延迟太高。带宽不够就优化通信量(比如用梯度压缩、增大batch size摊薄通信),延迟太高就优化拓扑或减少同步次数。
- 内存墙优化:算子融合、量化、KV Cache优化、内存复用,这些手段按投入产出比排序。
- 调度优化:检查是否有资源碎片、是否有任务频繁重启、检查点是否过于频繁。
一个经验:大部分"算力不够"的问题,其实不是算力不够,而是算力没被用满。在加卡之前,先确认现有卡的利用率是不是已经到瓶颈了。
5.3 小团队的现实策略
不是所有人都在搞万卡集群。对于资源有限的小团队,这套新逻辑同样适用,只是尺度不同。
如果你只有几张卡,重点不在互联(因为卡少,通信开销占比低),而在单卡效率和显存管理。把算子融合做好、把量化用上、把batch size调到最优,这些能显著提升吞吐。
如果你租用云上的多卡实例,重点在并行策略选择和通信配置。搞清楚你的任务适合数据并行还是张量并行,通信库参数有没有调对,这些比换更贵的卡更有效。
如果你在做推理服务,重点在延迟与吞吐的平衡。单卡延迟低不代表服务吞吐高,要考虑批处理策略、请求调度、KV Cache管理。很多时候优化调度策略比升级硬件收益更大。
6. 几个容易踩的认知坑
6.1 "算力等于卡的数量乘以单卡性能"
这是最常见的误解。实际算力是卡数、单卡性能、互联效率、调度效率、软件效率的乘积,后面几项都是小于1的系数。卡数越多,这些系数的衰减越明显。所以"一万卡"不等于"一万倍的单卡算力",可能只有几千倍甚至更低。
6.2 "最新的卡一定比旧卡划算"
新卡单卡性能强,但价格也高,而且对供电散热要求更高。如果你的任务规模不大、互联需求不强,用上一代卡可能性价比更高。选型要看"每单位有效算力的成本",而不是"每颗卡的价格"。
6.3 "软件优化是次要的"
硬件决定上限,软件决定实际。同样的硬件,软件栈调优前后性能可能差一倍以上。在硬件投入之前,先把软件层面的优化空间榨干,往往投入产出比更高。
6.4 "通信开销可以忽略"
在小规模下可以忽略,在大规模下它是主导因素。做大规模训练规划时,通信开销必须作为一等公民来考虑,而不是事后优化。
7. 我在实际项目中的几点体会
做了几年训练和推理的基础设施工作,最大的体会是:算力这件事,越往上走,越像系统工程而不是硬件采购。早期大家比谁的卡好,后来比谁的集群大,现在比谁的系统效率高。这个演进方向对所有从业者都是好事——它意味着单纯堆硬件的门槛在降低,而系统设计、调优、运维的能力变得更值钱。
另一个体会是,测量永远比猜测重要。我见过太多团队凭直觉优化,结果改了半天没效果,因为瓶颈根本不在他们以为的地方。profiler工具、基准测试、瓶颈分析,这些基本功比追新硬件重要得多。
最后一个建议:如果你在做算力相关的规划,把"有效算力"而不是"峰值算力"作为核心指标。有效算力等于峰值乘以一系列效率系数,你的工作就是让这些系数尽可能接近1。这个思路会让你在选型、调优、扩容时都做出更理性的决策。
这套评判逻辑的变化,说到底是从"买最快的芯片"转向"建最高效的系统"。芯片只是系统的一个组件,真正决定产出的是整个系统协同工作的能力。理解这一点,比记住任何具体参数都重要。