分布式训练:撑住大模型的那堆没人愿意提的脏活累活

上周跟一个在南京本地做AI infra的兄弟喝精酿,他掏手机翻了翻最近一周的报警记录,皱着眉说这周已经因为NCCL通信超时重启了17次训练任务,说出来没人信,有一次就是因为机柜里一根网线松了,导致整个万卡集群重启,光恢复状态就花了6个小时,算下来烧掉的GPU算力够普通家庭用十年。

外面的舆论场还在吹哪家的模型参数又破了多少万亿,哪家的跑分又拿了第一——没人提这群天天跟服务器、网线、调度脚本打交道的人,才是真的在给整个大模型行业托底。

单卡的死局,才是分布式训练的真正起点

很多人对分布式训练的认知还停留在“人多力量大”的层面,觉得不就是把一堆卡凑在一起跑模型嘛,有什么难的。

真的难。

举个最实在的数:现在大家常用的H100单卡,80G显存,看着不小对吧?但一个70B参数的大模型,光是存半精度的权重就要占140G显存,还没算训练过程中要存的梯度、优化器状态、每一层的激活值——算下来整个训练流程跑通,单卡要占快600G的显存,是单卡容量的7倍多。

你把模型硬塞进去,系统直接给你报显存溢出。

大模型训练显存占用构成拆分图
大模型训练显存占用构成拆分图


这还只是模型本身的问题,更别说训练的时候要处理的海量数据集、动态变化的batch size、时不时冒出来的节点故障。显存墙是所有大模型团队绕不开的第一堵墙。

三种切分姿势,藏着行业最容易被忽略的隐性成本

现在行业里用的分布式训练方案,说穿了就是三种切分逻辑的组合,也就是大家常说的3D并行策略。

最基础的是数据并行。就是每张卡都存一份完整的模型权重,喂不同的训练数据,算完各自的梯度之后,大家凑在一起把梯度平均了,再更新权重。这个方案逻辑最简单,也是最早被用起来的,但问题也最明显:卡和卡之间要传的梯度量太大了,万卡规模下,只要有一张卡的网络延迟高个几毫秒,整个集群的同步就要等它,严重的时候直接超时,整个训练任务全部重启。

然后是张量并行。就是把模型每一层的矩阵运算拆成小块,分给同个服务器里的不同卡算,因为同个服务器里的卡是通过NVLink连的,带宽够高,传数据的延迟能压到最低。但这个方案跨服务器就不好使了,毕竟服务器之间的网线带宽比NVLink低一个数量级,跨节点传数据的成本高到离谱。

最后是流水线并行。就是把整个模型从第一层到最后一层,按顺序拆到不同的服务器上,数据像工厂流水线一样,过一层算一层。这个方案的问题是有“气泡”——就是前面的卡算完了,后面的卡还在等数据,这段时间卡是完全空闲的,早期的实现方案里,气泡占的时间能到总训练时间的30%以上,相当于你买了10张卡,有3张在全程摸鱼,一晚上烧几十万的算力空转,谁看着不心疼。

3D并行不同切分策略的通信带宽要求对比图
3D并行不同切分策略的通信带宽要求对比图


之前接触过一个创业团队,最开始没搞清楚这几个并行方案的适用边界,跨服务器用了张量并行,结果跑了一周的实验,有效算力利用率连20%都不到——花出去的钱,五分之四都花在了卡等数据、等同步上。换谁遇到这种事都得骂街。

现在的行业真相:卡越多,越考验“不浪费”的本事

很多人判断一个大模型团队的实力,就看他买了多少张GPU,多少张H100,好像卡多就一定能跑出好模型。

太天真了。

现在行业里的平均水平,万卡规模的集群,有效算力利用率大概在30%-40%之间,能摸到50%的团队,已经是第一梯队了。剩下的60%-70%的算力,全浪费在通信延迟、节点故障、调度不合理、并行策略不匹配这些细碎的问题上。

举个例子,之前某头部大模型团队的infra负责人在内部分享,说他们花了整整半年时间,把集群的利用率从22%拉到了58%,算下来一年省下来的GPU成本快两个亿。你看,这钱省下来的,比多买几千张卡有用多了。

现在整个产业链的逻辑也变了。最早的时候,大家觉得分布式训练就是个纯技术问题,是模型团队自己要搞定的事。现在发现根本不是——万卡集群里,光GPU的采购成本可能就几个亿,但配套的高速InfiniBand网络、高性能并行存储、集群调度系统,加起来的成本能占到GPU成本的30%以上。之前很多做企业级网络的厂商,以前根本看不上AI这块的单子,现在都在拼命抢集群交换机的订单,毕竟这部分的毛利可比普通的企业网设备高多了。

还有云厂商现在推的分布式训练平台,本质上就是把这套调优的能力打包成标准化服务。小团队自己养一个十几人的infra团队,一年的人力成本就大几百万,还不一定能调出高利用率的集群,不如直接买云厂商的服务,按使用量付费,省心多了。

这里面的问题也很明显。

首先是门槛抬得太高了。现在搭一套能稳定跑万卡训练的集群,光前期的硬件投入就快十个亿,再加上一年几个亿的运维成本,普通的创业团队根本扛不住。最后大模型的创新就会慢慢变成少数大厂的游戏,小团队根本拿不到足够的算力去试错。

然后是安全问题。分布式训练过程中,梯度要在不同的节点之间来回传,之前已经有学术团队验证过,只要能截获传输过程中的梯度数据,就能反推出部分原始的训练内容,万一训练集里有用户的隐私数据,这就成了很大的泄露风险。

还有现在的生态割裂问题。不同的分布式训练框架,不同的集群硬件,对应的优化策略都不一样,你在英伟达的集群上调好的训练流程,换一套国产GPU的集群,可能要重新花几个月时间调,整个迁移成本高得吓人。

站在现在往后面看,有几个趋势是大概率确定的。

第一,分布式训练的优化方向会从“拼规模”往“拼效率”走。现在大家都在卷谁的集群卡多,未来3年,更有竞争力的是那些能用更少的卡、花更少的钱,跑出同样效果模型的团队。毕竟现在GPU的采购成本越来越高,能省下来的真金白银,比堆规模实在多了。

第二,会出现专门为分布式训练优化的专用硬件。现在的GPU是通用计算芯片,设计的时候主要考虑单卡的计算能力,对多卡通信的优化还有很大的空间。未来肯定会有专门的芯片,把计算和通信模块做在同一颗芯片上,把跨卡传输的延迟再压一个数量级。

第三,分布式训练的门槛会慢慢降下来。现在你要跑一个大模型,得自己懂并行策略,懂网络拓扑,懂故障处理,未来这些事都会被框架自动搞定。你只要写好模型的结构,剩下的切分、调度、容错,框架自动给你匹配最优的方案,普通的小团队哪怕只有几十张卡,也能跑出之前万卡集群才能跑的模型效果。

上周跟那个喝酒的兄弟聊到最后,他说现在最烦的就是外面把大模型的技术说得神乎其神,好像都是一帮天才在天上搞什么黑科技。实际上呢?大部分时间大家都在调脚本,等节点,处理各种各样的细碎问题——分布式训练就是这么个事,没有那么多高大上的概念,全是脏活累活,全是要一点点抠出来的细节。

但就是这些没人愿意提的脏活累活,撑着整个大模型行业往前走。

作者|大讲堂

排版|大讲堂

审核|安然

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:分布式训练:撑住大模型的那堆没人愿意提的脏活累活
文章链接:https://lfdjt.com/info_23_30466.html