查看: 44|回复: 0

万卡级大模型训练全景拆解:1.6 万张 H100 的 6 秒心跳与百万美元成本账

[复制链接]

1813

主题

5

回帖

5516

积分

超级版主

积分
5516
发表于 2026-10-12 08:55:02 | 显示全部楼层 |阅读模式
      Meta 训练 Llama 3 405B 大模型时,16384 张 H100 显卡每 6 秒完成一次全局同步 —— 这是整个万卡集群统一的 “心跳”。任何一张卡慢 0.1 秒,全程百万次迭代下来就要多花约 100 万美元;54 天的训练周期里,集群累计出现 419 次训练中断,平均每 3 小时就会发生一次硬件故障。
      按行业通用的每张 H100 每小时 2 美元的租金计算(DeepSeek 论文中采用的成本基准),这个 1.6 万卡的集群每小时租金就超过 3.2 万美元,一天的算力成本接近 77 万美元。当 AI 训练集群规模突破万卡甚至十万卡级(比如 xAI 在 2024 年用 122 天建成的 Colossus 集群,部署了 10 万张 H100),核心瓶颈早已不是单卡算力,而是上万张卡的协同效率。
      本文基于 Meta 公开的训练技术细节,拆解万卡级大模型训练的底层逻辑:计算与通信如何排班、延迟如何压缩到毫秒级、故障如何快速恢复,每一个细节都对应着百万级的成本差异。

一、为什么非拆不可?4050 亿参数的分布式拆分逻辑

很多人会好奇,为什么训练大模型需要上万张显卡?答案藏在参数规模与硬件瓶颈的矛盾里。
Llama 3 最大版本拥有 4050 亿参数,完整训练需要完成约 3.8×10²⁵次浮点运算,单张 H100 跑完需要近 3000 年。显存层面的限制更直接:训练时每个参数需要同时存储参数值、梯度、优化器状态与高精度备份,合计约 16 字节;4050 亿参数总计需要约 6.5TB 显存,而单张 H100 仅 80GB 显存,完全装不下完整模型。
因此,大模型训练必须采用分布式拆分技术,主流有三种拆分方式:
  • 数据并行:复制多份完整的模型副本,每份副本处理不同的训练数据,每步结束后汇总所有副本的梯度取平均值,再统一更新参数。
  • 流水线并行:模型是由多层网络堆叠而成的,按层将模型切分成多段,前一段计算完成后把结果传给下一段,像流水线一样依次流转。
  • 张量并行:当单层网络的参数矩阵过大时,将矩阵横向或纵向拆分成多块,由多张卡同时计算单层的不同部分,最后拼接结果。
Llama 3 的主训练阶段将三种并行方式嵌套使用:
  • 层内采用 8 路张量并行,对应单机内 8 张卡通过 NVLink 高速互联;
  • 模型整体按层拆成 16 段流水线并行;
  • 全局部署 128 份数据并行副本,各自处理不同数据。
三者相乘:8×16×128 = 16384 张卡,刚好构成完整的训练集群。
但拆分只是起点,每切一刀就多出一条依赖关系:张量并行的 8 张卡每算完一小步都要拼接结果;流水线的后一段要等前一段传数据;数据并行的 128 份副本要等所有人交完梯度才能更新参数。每一条依赖都意味着等待,集群的最终效率从来不取决于拆分方式,而取决于如何调度等待 —— 能不能让等待的时间被计算填满。
二、训练第一步:数据喂入的隐形挑战

很多人以为存储系统的瓶颈是数据读取带宽,实则恰恰相反。
训练用的文本数据在开训前就已经完成了去重、清洗、配比调整与 token 化处理,变成了一个个编号的 token 序列。Llama 3 后期单步训练读取 1600 万个 token,按每个 token 占 4 字节计算,总数据量仅 64MB。对于 Meta 配备的每秒 2TB 读写能力的存储系统来说,这点流量几乎可以忽略。
真正考验数据系统的,是三个隐形问题:
1. 数据分配的正确性

128 份数据并行副本必须读取完全不重叠的数据,不能重复也不能遗漏;而同一份副本内的 8 张张量并行卡,必须拿到完全一致的输入数据,否则拼接出的计算结果就会出错。
2. 故障重启的一致性

训练每隔几个小时就会保存一次全局检查点(Checkpoint),故障重启后每张卡必须精准接续到上次读取的数据位置。如果重启后从头开始读,模型就会把同一批数据反复训练多次,影响最终效果。因此,数据读取位置必须和模型参数一起写入检查点。
3. 计算与预取的重叠

不能让显卡等数据。每台服务器的 CPU 会提前预加载下一步的训练数据,在显卡执行当前步计算时,就把下一批数据准备好,放到 “门口” 等待。
还有一个容易忽略的细节:训练会把长短不一的文档拼接成固定长度(8192 个 token)的长序列,同时用注意力掩码保证一篇文档不会看到旁边拼接的其他文档。但不同副本分到的长文档比例不同,计算量就会有差异,这也是集群步调不一致的微小诱因。
三、6 秒心跳:计算与通信的排班艺术

单步 6 秒的训练流程,本质是计算与通信的精密排班。完整的单步训练分为三个阶段:数据进入流水线后先完成前向传播(从第一层计算到最后一层),再完成反向传播(从最后一层回传梯度),最后所有数据并行副本汇总梯度、更新参数。
效率优化的核心有两个:填补流水线的空闲气泡,以及把通信尽量隐藏在计算背后。
1. 压缩流水线气泡

流水线并行天然存在 “气泡” 空闲:第一份数据刚进入流水线时,后面的 15 段都在等待;最后一份数据快结束时,前面的 15 段已经无事可做。单步内的数据批次越少,气泡占比越高。Llama 3 的优化方式是让每组卡负责多段不相邻的网络层,交替执行计算,大幅压缩气泡的空闲时间。
2. 计算与通信重叠

显卡可以同时开启多条工作队列,一条负责计算,一条负责通信。调度的核心诀窍,就是让传输尽量躲在计算的背后完成,不让显卡空等。
  • 数据并行的通信最容易隐藏:Llama 3 采用分布式参数存储,每张卡只长期保存自己负责的那一小份参数和优化器状态,需要时再从其他卡获取。计算第 5 层的时候,第 6 层要用的参数就已经在传输路上了;反向传播时,后面层的梯度一旦确定就可以提前开始汇总,不用等整个反向传播结束。单步内每张卡的参数取回、梯度汇总合计要收发将近 20GB 数据,按每张卡每秒 50GB 的网络带宽计算约需 0.4 秒。如果这 0.4 秒完全空等,全程下来会增加 120 多小时、约 400 万美元的成本;藏得好,这笔钱大部分都能省下来。
  • 张量并行的通信基本藏不住:它是层内计算的必要步骤,不对完结果下一步计算就无法启动,直接阻塞计算流程。因此张量并行被放在最内层,使用带宽最高的 NVLink 连接 —— 单机内 8 张卡之间,每个方向每秒能传大约 450GB,把通信耗时压缩到零点几秒。
这就是分布式训练的核心原则:藏不住、频率高的通信放在最内层,用最快的连接;能藏住、频率低的放在最外层,可以跨越多层网络。此前行业内的 NVL72 机柜、华为超节点等设计,本质都是在做同一件事:把高速通信的圈子做大。
当然,隐藏通信也不是免费的:数据传输本身也要占用芯片的计算单元,搬数据、做加法、管理收发都需要资源。DeepSeek 训练 V3 时,就专门为 MoE 专家间的通信优化了通信程序;在 H800 的 132 个计算单元里,只拿出 20 个负责通信,剩下的都用来计算。同时计算和传输还会争抢显存带宽,让计算速度略微下降,因此排班是一门极精细的手艺,每一份通信什么时候发、分几包发、占多少计算单元,都要经过精密测算。
四、一毫秒值一万美元:延迟到底从哪来

很多人以为通信时间只和带宽有关,其实一次通信的总时长由三部分组成:固定延迟开销、数据传输时长、长尾等待时间。按开头的成本账,每一步多等 1 毫秒,整个训练就要多花约一万美元;而一步里这样的通信要发生成百上千次。
1. 物理与硬件的基础延迟

光在光纤里每跑一米大约要 5 纳秒,机房里一根一百米的线就会带来 0.5 微秒的延迟。Meta 的集群采用三层网络架构:一个机柜 16 张卡连到同一台交换机,192 个机柜组成一个 3072 张卡的大区,8 个大区再连在一起。两张离得最远的卡之间,数据要经过 5 台交换机,每过一台都要增加数百纳秒的转发延迟。
2. 软件协议的开销大头

更大的延迟来自软件:发起一次通信程序,要经过准备、通知网卡、握手确认等流程,一来一回就是几微秒,甚至几十微秒。几微秒听起来很短,但乘以成千上万次的通信次数,总量就会非常可观。举个经典的例子:全局梯度汇总最常用的环形全归约算法,所有卡排成一个圈,每张卡只跟左右邻居传数据,好处是带宽利用率最高,坏处是 N 张卡就要传 2N-1 轮。1.6 万张卡就要三万多轮,就算每轮只付 5 微秒的固定开销,一次汇总也要 0.16 秒 —— 这还一个字节都没传。更隐蔽的问题是:环形算法会把数据切成 N 份,梯度通常打成 25MB 左右的包来传,切成 1.6 万份后每份只有一千多个字节。这么小的数据包,带宽再高也没用,时间全花在了固定开销上。
因此工业界的主流方案是分层归约:先在服务器内部用 NVLink 把 8 张卡的结果合成一份,再让每台服务器派一个代表在服务器之间汇总,最后再把结果发回服务器内部;或者采用树形(蝴蝶)归约算法,1.6 万张卡只需要二十几轮就能完成。英伟达在两万四千多张卡的超级计算机上测试过,换成树形算法后,延迟最多能降到原来的一百八十分之一。更进阶的技术是让交换机自己在路上做加法(英伟达 SHARP 技术),数据经过交换机时就被加好了,不用再传到端点处理,进一步压缩延迟。
3. 长尾延迟:最慢的那条链路

一次全局汇总,要等所有卡都收到结果才算完成。1.6 万张卡、几万条链路,只要有一条路慢,整次汇总就会变慢。对训练来说,平均延迟意义不大,真正决定速度的是最慢的那一条。普通数据中心里是成千上万股小流量,交换机把它们随机分到不同路径上,负载大体均匀。但 AI 训练不一样,是少数几股非常粗的数据流,随机分配时只要两股粗流撞到了同一条路上,那条路就堵了,其他路却空着。Meta 的解决方案是:两张卡之间不再只开一条数据流,而是拆成十六条细流,让每股流量更小、分配更均匀;同时让交换机分配路径时多看几个字段,减少拥塞概率,压低长尾延迟。
五、54 天 419 次故障:万卡集群的容错体系

万卡规模下,硬件故障是常态而非意外。Meta 公开的训练记录显示,54 天里训练意外中断了 419 次,平均大约每三个小时就出一次事。容错能力直接决定了训练的实际交付效率。
1. 分钟级故障定位

集群配备全方位的硬件与训练监控体系,实时监测每张卡的算力输出、温度、显存错误、网络丢包、梯度正确性等指标。一旦出现训练精度异常或者全局同步超时,系统会通过心跳检测、梯度校验快速定位故障卡,定位时间控制在分钟级,避免长时间排查中断训练。
2. 检查点快速恢复

训练会定期保存全局检查点到存储系统,包含完整的模型参数、优化器状态、数据读取进度等全部训练状态。故障排除后,集群可以从最近的检查点重启,接续之前的进度继续训练,避免从头开始。但万卡规模下,检查点写入本身就是巨大挑战:上万张卡在同一时刻往里写数据,短时间内就会把存储网络挤满。这也是 Meta 存储系统真正的压力来源 —— 读数据只用了带宽的一点零头,存档写入才是真正的考验。Meta 通过分层写入、错峰调度等方式优化,先把检查点写到本地高速存储,再后台同步到全局存储,避免冲击训练主网络。
3. 动态旁路与冗余设计

为了进一步降低停机时间,部分关键路径会做硬件冗余配置;部分故障场景下,系统还可以动态调整并行策略,临时旁路掉故障卡,让剩余的卡继续承担计算任务,不用等待硬件维修完成,最大限度压缩中断时长。
六、不止是计算:连电网都要适配训练节奏

万卡级集群的运行,早已超出了计算机本身的范畴,连供电和散热都要跟着训练的节奏走。单张 H100 满负载功耗约 700W,1.6 万张卡仅显卡功耗就超过 11MW,加上服务器、交换机、制冷系统,整体功耗接近 20MW,相当于一个小型城镇的用电负荷。训练的负载并非完全平稳:计算密集阶段功耗高,通信密集阶段功耗相对低;不同训练阶段的算力需求也有波动。这对电网的供电稳定性提出了极高要求,部分大型 AI 集群需要和电网侧联动,动态调整负载节奏,避免冲击电网。同时,液冷、风冷等散热系统也必须和计算负载精准匹配,确保硬件稳定运行在最优状态。
结语:万卡集群是一台统一的超级计算机

从单卡算力到万卡协同,大模型训练的竞争已经从芯片性能延伸到了系统工程能力。拆分策略、通信调度、延迟优化、容错体系、甚至供电散热,每一个环节的微小优化,累加起来就是百万美元级的成本差异和数周的训练时间差。
当训练集群规模突破十万张卡,系统工程的挑战还会指数级上升。本质上,万卡集群不是一堆显卡的堆砌,而是一台统一的超级计算机 —— 所有部件都要按照同一个 6 秒心跳精准运转,差一毫秒都不行。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|天翼网

相关侵权、举报、投诉及建议等,请发 E-mail:2026@typc.net

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|晋ICP备2026008270号-1|晋公网安备14010602111293号

QQ客服返回顶部