起点:预训练到底在学什么
预训练的目标用一句话说:让模型学会「给定前文,预测下一个 token」的分布。这个看似简单的目标之所以能产出智能,是因为要做好预测,模型必须隐式地学会语法、事实知识、推理模式甚至世界常识——「预测下一个词」是一个伪装简单的巨量任务。预训练的产物叫基座模型(base model):它只会「续写」,不会对话(你问它问题,它可能继续「写」更多问题),后续的 SFT 与对齐(本库另有专篇)才把它变成助手。
理解「基座 vs 对话模型」的区别是理解预训练的第一步:预训练塑造能力,后训练塑造行为——能力是预训练给的,后训练只能引导不能创造。这也是为什么各家模型报告都把预训练配方当作核心机密:数据的配比、训练的预算、超参的选择,直接决定这个模型的能力上限。
阶段一:数据收集与清洗——预训练最重的活
预训练数据管线的比重常被低估:在总工程量里,数据工作通常占一半以上。流程从「能找到的一切文本」开始:网页爬取、书籍、代码仓库、学术论文、百科、问答社区——然后逐级过滤。去重是第一大工序:互联网文本大量重复(转载、模板页),不去重会让模型对高频内容「过背」、对长尾内容欠学;精确去重(哈希)与模糊去重(MinHash/SimHash)配合使用。质量过滤是第二大工序:用分类器或启发式规则给文档打分(语言流畅度、信息密度、毒性、广告比例),低质量文档被丢弃——「 quality is all you need」的现实版本是「大部分爬来的网页都不配进训练集」。
配比是第三大工序也是最大的黑箱:网页文本、代码、数学、书籍、多语言数据各占多少比例——代码与数学数据虽占比小,但对推理能力的贡献远超其比例(多次训练实验的公开结论);多语言数据保证非英语能力;上采样(高质量数据重复多次)与下采样(低质量语言减量)的配比表是各家技术报告里最值钱的一页。数据管线的细节本库另有专篇展开,本篇记住结论:预训练的上限由数据决定,训练技巧只能逼近这个上限。
阶段二:分词与模型初始化
分词(tokenizer)把文本切成模型的最小单位——主流是 BPE 类子词算法(本库已有专篇):高频词保留为整词、低频词拆成子词,词表大小通常 10 万~25 万。分词器的两个工程决策常被忽视:词表在预训练前冻结(训练后换分词器等于模型报废重练——embedding 是按词表 sized 的),分词器的质量影响一切下游(数字被切碎导致算术差、代码被切碎导致缩进乱——近期模型专门为数字与代码优化分词)。中文用户还要关心一点:词表里的中文覆盖率决定中文的 token 效率(同样一句话用更多还是更少 token)——这是国产模型在词表上做文章的原因。
模型初始化:架构选型(几乎都是 Transformer 变体)、层数/维度/头数的配比(按 Scaling Law 的算力最优配置)、参数的初始分布(初始化不当会导致训练初期就发散——残差层的缩放初始化是稳定性细节)。超参的家族相似性:不同规模的模型用「缩放规则」从已验证的小模型超参外推(学习率随规模递减、batch size 递增)——先在小模型上把配方调通,再放大到目标规模,是所有团队的标准打法(大模型的试错成本 prohibitive,小模型是风洞)。
阶段三:训练循环——几个 G 的权重如何吃下几个 T 的文本
预训练的主体是一个巨型的循环,每个迭代做四件事:取一批数据(batch,几百万 token 一批)→ 前向计算(预测下一个 token 的分布)→ 算损失(交叉熵,本库损失函数篇)→ 反向传播与更新(优化器步进,本库优化器篇)。工程上的关键词是并行(数据并行、张量并行、流水线并行——本库分布式篇展开)、显存管理(混合精度、梯度检查点——本库显存账单篇)、稳定性(loss spike 的监测与恢复——训练几周后突然 loss 飙升是常态,要有自动回滚到 checkpoint 的机制)。
预训练的「 Recipe 里最反直觉的一条」:训练是单调改进的假象。loss 曲线总体下降,但能力的涌现不均匀——某些能力(如多步推理)在训练后期才出现,中途的 checkpoint 看起来「还行」的模型未必在最终能力上可用。评估驱动训练是现代做法:训练过程中持续跑一组评测(语言、代码、数学、知识),用评测曲线而非 loss 曲线判断训练健康度。
阶段四:评估与收尾
预训练的收尾不是「训练到没数据」而是「训练到预算」:算力预算(以 FLOPs 计)是预先锁定的,按 Scaling Law 选「数据量与参数量的最优配比」(Chinchilla 原则:两者应大致同步增长;后续实践偏向「过训练」小模型——用更多数据把小模型练到超预期,为推理成本优化)。最后的收尾动作:学习率退火(训练末期把学习率降下来让模型「落定」在更好的极小值)、长上下文扩展(退火阶段混入长文档数据扩展上下文能力)、中间 checkpoint 的评估选择(最后一个 checkpoint 不一定最好——各能力峰值分布在不同 checkpoint,有些团队会做 checkpoint 平均)。
产出的基座模型再交给后训练团队。读懂了这条流水线,再去看各家模型的技术报告(数据配比表、训练 FLOPs、评测曲线),每一页都能对上本篇的某个阶段——预训练没有任何魔法,只有数据、算力与工程纪律的复利。
预训练的经济学:算力预算、缩放定律与「过训练」的抉择
预训练的每一步都受「算力预算」约束,理解预算的分配逻辑是理解各家模型差异的钥匙。预算的量纲:预训练的算力以 FLOPs 计——参数量 × token 数 × 一个常数(约 6,前向与反向的运算系数),7B 模型 × 1T token ≈ 4×10²² FLOPs——这个数字直接换算成 GPU 时与美元。缩放定律的指导:给定预算,参数量与数据量的最优配比由缩放定律给出(Chinchilla 的结论:两者应等比增长——70B 参数「配」约 1.4T token 是「算力最优」)。「过训练」的偏离:现代实践普遍偏离 Chinchilla——用远超配比的数据训练「相对小」的模型(如用 15T token 训 8B 模型),原因在推理经济学:预训练是一次性成本,推理是持续成本——小模型「过训练」到接近大模型的质量,部署成本省下的钱远超多花的训练算力。这个「训练贵一次 vs 推理贵 forever」的权衡,是当代模型规格设计的核心决策(也是为什么开源阵营偏爱 7B/14B/32B 这些「过训练甜点档」)。预算的执行纪律:算力预算锁定后,训练中途「发现 loss 还在降就继续训」的冲动要被制度约束——预算外的延长训练挤占的是下一版模型的资源,且未评估的延长未必带来等值能力。读懂预训练经济学,再看模型发布的「用了 X 万张卡、Y 天」的表述,就能反推它的训练预算档位与规格决策的逻辑。
预训练的常见翻车与诊断:训练出问题时看哪里
预训练的实战翻车有典型的形态,对照诊断能省大量排障时间。翻车一:开局 loss 不降或 NaN。排查顺序:学习率 × warmup(开局最常见元凶)→ 初始化(残差层缩放)→ 数据(脏样本或异常长样本在首批触发)→ 混合精度的损失缩放(FP16 特有)。翻车二:中途 loss spike(尖峰)。大规模训练的常态(本库断点篇)——尖峰后通常能自愈;不能自愈的,回滚到尖峰前 checkpoint、跳过嫌疑数据段、或小幅降学习率再继续。翻车三:验证 loss 与训练 loss 脱节。训练 loss 降、验证 loss 涨 = 过拟合(预训练罕见,微调常见);两者同时停滞 = 数据或学习率到瓶颈。翻车四:某类能力突然退化。配比调整或数据段的副作用(换了数据批次后代码能力掉——新批次代码数据质量或配比变了)——配比的变更要做「能力回归」的评估。诊断的通用流程:先看曲线(loss 与评估曲线的哪个时刻出问题)→ 再对时间轴查变更(那个时刻数据/超参/基础设施有什么变化)→ 最后二分验证(回滚单个变量确认因果)。预训练排障的本质是把「黑箱训练」变成「有仪表、有变更日志、有因果验证的工程过程」——这三样基建(曲线、日志、回滚)是预训练团队的第一笔工程投资。
小结
预训练五阶段:数据(收集-去重-过滤-配比,占一半以上工程量,决定上限)、分词(BPE、词表冻结、中文覆盖)、初始化(架构与超参按缩放规则外推,小模型当风洞)、训练循环(并行、显存管理、稳定性、评估驱动)、评估收尾(预算锁定、退火、长上下文扩展、checkpoint 选择)。基座模型只会续写不会对话——能力靠预训练、行为靠后训练。读懂这条流水线,任何模型技术报告的预训练章节都能对号入座。下一篇看流水线的下一站:SFT 怎么把「只会续写」的基座变成「会对话」的助手。
读者留言
COMMENTS 暂无还没有留言,来说第一句?