万卡 AI 集群:上万张显卡如何协同干活,读懂大模型训练背后硬核工程
导语提到大模型训练,大家往往只关注模型参数量、跑分效果,却很少了解背后的万卡、十万卡 GPU 集群工程现实。Meta 训练 Llama 3‑405B,动用16384 张 H100 显卡,训练周期 54 天,每一步训练迭代约 6 秒,业内称之为一次 “心跳”。
这套系统有一个反常识残酷现实:同步训练模式下,全部显卡必须完成计算并对齐结果,一张卡变慢,整批所有显卡都要等待它。每一步多等待 0.1 秒,累计下来整个训练项目就要多花约 100 万美元成本;54 天训练期间,一共发生 419 次意外中断,平均每 3 小时就会出现一次故障。
当集群规模走向 xAI Colossus 十万张 H100 级别,硬件故障已经不是意外,而是统计学上的必然事件arXiv。本文跟随 Llama 3 公开训练记录,拆解万卡集群一次 6 秒 “心跳” 内部发生了什么、并行拆分策略、通信延迟来源、慢节点长尾效应,以及大规模集群如何在高频故障下维持高有效训练时间。
一、为什么需要上万张显卡做训练
Llama3‑405B 拥有 4050 亿参数。训练阶段除模型权重,还需要保存梯度、优化器状态、高精度备份,整体需要约 6.5TB 存储空间,但单张 H100 仅 80GB 显存,单张显卡既装不下全部参数,更无法完成天文级运算量。如果只用一张 H100 完成完整训练,理论计算需要数千年。行业使用三类并行策略把任务切分,三者经常混合使用:
[*]数据并行(DP/ZeRO):多份完整模型副本,每份读取不同训练数据;迭代结束汇总全部副本梯度取平均值,统一更新参数。
[*]流水线并行(PP):把神经网络按网络层切成多段,像工厂流水线,上一段算完把中间结果传给下一段继续运算。
[*]张量并行(TP):把单层内部巨大矩阵计算切分,多张显卡同时分担同一层运算,算完再合并结果。
Meta 训练 Llama3‑405B 组合三套策略:张量并行把单层切 8 份,流水线并行将 126 层切 16 段,128 组构成数据并行副本,8×16×128=16384,刚好对应 16384 张 H100 集群规模。
关键点:每一次切分,都会新增大量跨卡通信依赖,拆分不等于自动变快;系统工程难点不是怎么切分任务,而是怎么处理等待、掩盖通信开销。
二、6 秒一次心跳:一次训练迭代完整流程
每一轮训练迭代,就是集群的一次心跳,整体耗时约 6 秒,每张卡会完成巨量运算,同时服务器之间收发接近 20GB 数据。
[*]数据准备阶段训练前数据集已经完成去重、token 化。每一步需要的只是 token 编号,数据读取流量并不大;真正压力来自检查点存档写入,上万张卡同时写存储,很容易打满存储网络带宽。数据并行要求不同副本拿到不同样本;同一组张量并行内部多张卡必须拿到完全一样输入,否则合并结果就会出错。故障恢复重启时,还必须记住上次读到数据集哪个位置,不能重复学习同一批样本。同时 CPU 提前预加载下一批数据,在 GPU 计算的时候就把数据准备就绪,避免显卡空闲等待数据。文档长短不一,长文本多的分片会计算更慢,这也是步调不一致的小来源。
[*]前向计算、反向计算(流水线运行)输入小批次样本送入流水线,逐层前向传播;完成预测之后再反向传播,计算每一个参数对应的梯度。流水线天然存在流水线气泡:流水线首尾阶段部分计算单元无事可做,造成算力浪费。工程上会让每组卡负责多组不相邻网络层交替运算,尽可能压缩气泡带来的空闲时间。
[*]计算与通信互相重叠(工程核心技巧)一张 GPU 存在多条工作队列,一部分负责计算,一部分负责收发数据。能被掩盖的通信,就放到计算的背后同步执行,不让 GPU 原地干等网络传输完成。
[*]数据并行的梯度汇总可以和反向计算重叠,某几层梯度计算完成,不等全部反向结束就启动梯度归约,可以省下巨额时间成本。
[*]张量并行通信很难掩盖:算完就要立刻合并结果,下一步计算马上要使用,通信必须阻塞等待完成。因此行业原则:把张量并行放在单机 NVLink 高速互连内部;跨服务器之间尽量用数据、流水线并行,避开低速以太网跑高频张量通信。
如果通信不能被计算掩盖,每一步多 0.1 秒,百万次迭代累加,就会出现文中所说百万美元级别的额外成本。
三、延迟从哪里来:不止带宽,还有无数微小开销
很多人以为网络快慢只看带宽(每秒能传多少 GB),大规模分布式训练中,单次通信的固定开销、长尾慢节点往往比带宽更致命。通信总耗时分为三部分:
[*]固定启动开销:每次发起通信,网卡、软件协议栈都要做初始化,哪怕只传很少字节,也要付出这部分时间;大量小数据包场景下,带宽再高也救不了延迟。
[*]数据传输耗时:数据大小 ÷ 链路带宽。
[*]等待最慢节点(长尾效应):全部 GPU 必须等最慢一张卡完成,汇总才算结束。
典型代表就是环形全归约(Ring‑Allreduce):把所有 GPU 排成环形互相传递梯度。集群规模巨大时,轮次数量暴涨;梯度被切分成大量极小数据包,大量时间消耗在一次次通信启动开销,而不是传数据本身。行业解决方案:分层归约。单机内部 NVLink 高速链路先合并,每台服务器选出代表跨服务器汇总,大幅降低通信轮次。交换机也可以内置计算能力,数据转发途中直接完成梯度加法。
另外物理世界也会带来延迟:光纤传播、交换机转发、网卡协议栈处理,每一处都叠加微小延迟,迭代次数上亿之后,微小延迟会被无限放大。
集群不是平均性能决定速度,最慢的那张卡、那条链路,决定整套集群的迭代速度。散热降频、线缆不稳定、后台进程 GC,哪怕没有直接报错,也会拖慢全体上万张 GPU,这就是 “慢节点(straggler)” 问题。
四、54 天 419 次故障:万卡集群,故障是常态
Meta 公开数据,Llama3‑405B 训练 54 天,发生419 次意外中断,平均约每 3 小时一次,其中 GPU、HBM 高带宽内存相关故障占绝大多数36氪。当集群规模来到 xAI Colossus 十万张 H100,统计学上故障会缩短到大约每 30 分钟就会出现一次arXiv。
故障来源多种多样:GPU 硬件损坏、HBM 内存报错、NVLink 链路异常、网卡交换机故障、静默数据损坏、固件异常。大规模训练工程重点不是追求硬件永不损坏,而是三件事:
[*]快速检测故障节点:识别是哪一张卡、哪一条链路异常;区分彻底故障和无声慢节点。很多慢节点不会抛出报错日志,只是单纯变慢,隐蔽性极强。
[*]检查点(Checkpoint)机制:每隔一段时间完整保存模型权重、优化器状态、数据集读取位置。一旦故障,可以从最近存档点恢复,而不是从头训练。
[*]自动化故障恢复流水线:替换故障节点,加载检查点,恢复数据集读取位置,尽量把中断损失的时间压到最低。
Meta 依靠这套自动化体系,尽管频繁故障,依然把有效训练时间维持在 90% 以上。如果没有自动化恢复,每次故障人工处理,上万张卡空转,每一分钟都在烧掉巨额算力成本36氪。
补充现实痛点:检查点存档本身代价巨大。上万张 GPU 同一时刻写存储系统,极易打垮并行文件系统;存档太频繁消耗大量算力 IO;存档间隔太长,故障之后会丢失更多已经完成的训练步数,行业需要在二者之间做权衡。
五、不止显卡,配套基础设施的连锁压力
上万张 H100 同时高负载运行,压力不只有 GPU、网络。
[*]供电:整套集群兆瓦级电力消耗,电网波动、配电故障也会成为风险;
[*]散热:大规模集群大量采用液冷,散热系统稳定性直接决定硬件故障率;
[*]存储:并行文件系统要同时承接海量读、写流量,训练、存档、校验全部依赖存储底座。
硬件、网络、存储、供电散热,整套基础设施合在一起,才是万卡训练完整底座,单看 GPU 参数是片面的。
六、大众 & 技术爱好者高频认知误区澄清
误区 1:GPU 越多训练就一定越快
纠正:并行会引入大量通信开销、慢节点开销。超过合理规模之后,增加显卡,算力利用率 MFU 反而会下降,不是线性加速。
误区 2:通信速度主要看带宽大小
纠正:大规模小数据包场景,通信启动固定开销、慢节点长尾效应,对整体耗时的影响往往大于带宽。
误区 3:硬件质量足够好,万卡集群就很少故障
纠正:统计学效应,规模放大故障概率同步放大。十万卡集群,故障不是意外,是常态;核心能力是故障快速检测与自动恢复,而不是硬件永远不坏。
误区 4:张量并行可以无限制跨服务器随便用
纠正:张量并行通信频率极高,适合单机 NVLink 高速互连;跨服务器以太网跑张量并行,通信开销会吞噬全部收益。
误区 5:检查点只要保存模型权重就足够
纠正:还要保存优化器状态、数据集读取位置、随机种子,否则重启之后数据集错乱,模型训练效果会被破坏。
全文总结
大模型万卡训练,远不是简单把一堆高端显卡插在一起。以 Meta Llama3‑405B 的 16384 张 H100 集群为例,6 秒一次心跳的背后,是数据并行、张量并行、流水线并行三者混合调度,同时要和海量跨 GPU 通信开销做斗争。
系统最大的敌人不只是单纯计算量,还有三件事:通信延迟与开销、无声拖后腿的慢节点、高频硬件故障。上万张卡同步训练,一张卡变慢,全部卡等待;规模越大故障越频繁,工程的核心在于把通信开销尽可能掩盖,并且构建自动化故障检测‑检查点‑恢复体系,保证高占比有效训练时间。
当行业迈向十万卡级别超算(例如 xAI Colossus),比拼的不只是 GPU 芯片,而是网络架构、存储系统、供电散热、分布式调度、故障容错整套 AI 基础设施综合实力。硬件芯片看得见,但真正决定训练效率的大量工程能力,往往藏在水面之下。
页:
[1]