本节摘要:预训练一个千亿模型是一场持续数月的系统工程:数据与模型就绪后,要在千卡集群上把训练循环跑上万亿 token,全程不掉链子。本节讲完整流程、三种分布式并行(数据/张量/管道)的分工与组合、稳定性技巧(warmup、梯度裁剪、混合精度)、故障恢复,最后算一笔成本账,说明为什么多数开发者的主战场在微调而非预训练。
阅读完本节,你应当能够:
预训练项目的生命周期可以拆成六段,每段有明确的产出与验收:
1. 数据准备(5.1) 产出:token 流(分词后的二进制大文件) 2. 模型初始化 产出:随机初始化的参数(标准差按宽度缩放) 3. 训练循环(2.3 的骨架) 喂 token 流:前向 → CLM 损失 → 反向 → 更新 4. 全程监控 盯损失曲线、梯度范数、硬件状态 5. 检查点管理 定期保存,崩溃可回滚续训 6. 收尾评估 小规模基准 + 采样生成检查,确认基座健康
两个容易外行看不出门道的细节。第一,token 流的工程形态:清洗好的语料会预分词成二进制 token 文件(数万亿 token 约合数十至上百 GB),训练时按需顺序读取——训练框架绝不在训练中临时分词。第二,初始化不是小事:权重随机初始化的标准差要与层宽度匹配,且嵌入层、输出层有专门的缩放策略;初始化错了,训练第一步就发散——这是新手复现训练时最常见的翻车点之一。
千亿模型一张卡放不下(权重加优化器状态要几 TB 显存),一次训练一张卡也跑不完,必须把"模型"和"数据"都切开分到上千张卡。三种并行各管一个层次:
数据并行(DP):每张卡(或每组卡)装一份完整模型,各自处理不同的数据批次,各自算梯度,然后全组同步梯度(AllReduce 通信)统一更新。简单成熟,但单卡装不下整个模型时不可用。
张量并行(TP):把单层的权重矩阵按维度切开分到多卡——一次大矩阵乘法变成多卡各算一小块再拼接。解决"一层太大单卡放不下",代价是卡间通信极频繁,通常只用在一台机器内部的高速互联(NVLink)之内。
管道并行(PP):把不同的层放到不同卡上——第 1–8 层在卡组 A,第 9–16 层在卡组 B,数据像流水线一样流过。通信量小(只传层间激活),但有个"气泡"问题:流水线启动和排空阶段有的卡在等,通过把一个批次切成多个微批次错峰填充来缓解。
实际的大模型训练是三者的三维混合:几百张卡先按管道切成 N 段,每段内部做张量并行,段外再复制多份做数据并行。主流框架(Megatron-LM、DeepSpeed 等)把这些组合做成了配置项。工程师的日常不是发明并行算法,而是根据集群的互联拓扑(卡间带宽、机间带宽)找最优切法——同一笔算力,切法好坏可差出两三成吞吐。

大模型训练的稳定性问题集中表现为 loss 尖峰与发散(loss 突然飙升或变 NaN),防线的顺序大致是:
即便四道防线齐备,数月训练中遇到 loss 尖峰仍是常态。处置流程也标准化了:暂停 → 回滚到最近健康检查点 → 跳过引发尖峰的数据批次 → 降低学习率或加长 warmup → 恢复。为此检查点策略要做取舍:存太频繁占存储(单个检查点数 TB),太稀疏则回滚损失大。常见折中是近期检查点密、远期稀疏保留。
⚠️ 一个真实的工程事实:公开报告显示,超大规模训练中百分之几的步骤会因硬件或数据问题重启,千卡集群平均几天内必有卡故障。所以"训练能跑完"本身是个可靠性工程问题——冗余存储、备用节点、自动检测换卡,与损失曲线同样重要。
粗略量级(随硬件价格变化):千亿 token 级训练消耗的 GPU 时数以千万计,千卡集群跑数月,加上电费、人力、数据工程,从头预训练一个旗舰模型的成本在千万美元量级;训一个"能用"的几十亿参数小模型,也需数十万美元级。这份账单决定了行业格局:
所以理解本节的正确姿势:大概率你不会亲手跑这些,但你需要知道预训练的能力来源与边界——基座的知识截止于训练数据、领域盲区要靠继续预训练或 RAG 补、loss 发散类事故解释了为什么有些模型版本"训坏过"。这些判断力在架构选型与问题诊断时每天都在用。
没有单一信号。看损失是否进入平台期、验证集困惑度、小基准曲线、以及采样生成的质量(早期输出乱码、中期通顺但啰嗦、后期连贯有信息量)。实际项目按预设 token 预算停(规模定律决定了预算与效果的对应关系),不等到"收敛"。
可以且常见——课程式训练(5.1 节)就是这么做的,后期提高高质量或目标领域数据浓度。注意换配比时学习率调度的衔接,突变太大易引发不稳定。
从零训一个千万到亿级参数的小模型(如复现一个迷你 GPT),单卡数天可完成,学习价值极高。重点体会数据准备、初始化、学习率调度的手感,而不是追求效果。
即使永远不做预训练,亲自从零训一次小模型(第 10.3 节的动手路线也推荐了)会给你四条纸面学不来的直觉,这里先剧透,供你验证:
直觉一:损失曲线会"说话"。 起步损失约等于均匀猜(对数词表大小),随后快速下降、进入长尾缓降。每一段的斜率变化都有含义——早期不降是学习率或数据出了问题,中期突跳是坏数据或不稳定,尾部平台是正常收敛。训过一次之后,你看到曲线三秒就有判断。
直觉二:发散前有征兆。 损失尖峰前,梯度范数通常先异常增大、验证损失先于训练损失回升。监控这两个领先指标,多数发散可以在变成不可挽回之前处置——这也是正文强调"监控不只是看损失"的原因。
直觉三:数据顺序影响初期走向。 同样的数据换个顺序,前几千步的曲线可以明显不同(梯度噪声的方向不同),但收敛终点的差距远小于过程差异。理解这一点,就不会被"跑了两种配置曲线不一样"迷惑——判断配置好坏要看终段趋势,不看早期抖动。
直觉四:检查点比直觉可靠。 "感觉这次会更好"在训练领域是最贵的错觉。固定评测、按步数对比检查点,让数字说话——这条纪律从最小的实验就要开始养,因为它在最大 的项目里同样适用。
一个常见困惑:开源社区能看到模型权重,却很少看到完整的训练配方(数据配比、超参曲线、故障记录)。原因有三:数据配比是核心竞争力(5.1 节),超参来自昂贵试错(本节),故障处置日志涉及基础设施细节。技术报告披露的通常是"能讲的八成",复现时剩下的两成要靠自己实验补齐——这也是为什么"完全复现某模型"比想象中难,读论文时对未披露的部分保持敏感,是一种必要的职业素养。
按出现频率排序:坏数据(超长重复、乱码,一个批次就能把训练带偏)居首;学习率在高损失区域偏大次之;混合精度的数值边界问题第三(现代 bf16 已大幅缓解);硬件位翻转这类随机故障最少见但最难排查。处置顺序与频率排序一致:先跳批重试,无效则回滚降学习率,仍无效才怀疑深层问题。这套顺序本身就是各大团队踩坑经验的结晶。
可以续跑但要处理三个衔接:优化器状态要随权重一起恢复(Adam 的动量与方差丢了会导致更新方向突变);数据流要从断点位置继续(重复喂已见数据等于变相多训一轮);学习率调度要接续原曲线(重走 warmup 反而打断节奏)。这正是检查点必须存"权重加优化器加步数"三件套的原因——只存权重的检查点,恢复的代价接近重训。
基座出炉只是半成品——它只会续写不会对话。第 6 章讲怎么把基座调教成好用的助手:SFT、RLHF 与参数高效微调。