#三、预训练、数据工程、Scaling Law 与模型结构扩展
#1. CLM 与 MLM:预训练目标到底在优化什么
CLM 是 Causal Language Modeling,也就是自回归语言建模。给定前面的 token,模型预测下一个 token:p(x_t | x_1, ..., x_{t-1})。训练时通常对整段文本做 next-token prediction,loss 是每个位置的交叉熵。它天然适合生成式模型,因为推理时也按同样方式从左到右续写:先生成第一个 token,再把它拼回上下文继续生成下一个。
MLM 是 Masked Language Modeling,典型代表是 BERT。训练时随机遮住句子中的一部分 token,让模型根据左右两侧上下文恢复被遮住的内容。它不是从左到右生成,而是做双向语义理解,所以更适合分类、匹配、抽取等理解任务。面试里要说清楚:CLM 和 MLM 的差别不只是“一个单向一个双向”,而是训练目标、attention 可见性、推理形态和下游任务偏好都不同。
今天的大语言模型主流采用 CLM,是因为聊天、代码、工具调用、长文本生成都可以统一成“给定上下文继续生成”。这并不说明 MLM 没价值,而是说明生成式统一接口更符合 LLM 的产品形态。
#2. 预训练数据 pipeline:不是把网页越堆越多越好
预训练数据工程通常包括六步。第一是采集,来源可能有网页、书籍、论文、代码、问答、论坛、百科和授权数据。第二是清洗,去掉模板页、导航栏、广告、乱码、低编码质量文本、重复 boilerplate 和明显机器生成垃圾。第三是去重,既要做精确去重,也要做近似去重,否则模型会在重复样本上过拟合,评测时还可能因为见过相似答案而虚高。
第四是质量过滤,常见方法包括规则过滤、语言识别、困惑度过滤、分类器打分、黑白名单、毒性和隐私检测。第五是数据混合,也就是决定不同来源的采样比例。代码、数学、百科、对话、长文档、领域语料的配比会显著影响模型能力;不是哪个数据集最大就应该占比最高。第六是contamination 控制,也就是避免 benchmark、标准答案、公开测试集、线上评测题混入训练集。污染一旦发生,模型可能不是“能力强”,只是“背过题”。
这里最容易被低估的是质量和配比。对于大模型,低质量 token 不只是无效,还会消耗训练预算、污染行为模式、放大偏见、制造幻觉。一个常见判断是:在同等算力下,高质量、覆盖面合理、去重充分的数据,往往比单纯扩大题量更重要。尤其在领域模型里,几百万条粗糙问答不一定比几十万条来源可靠、结构稳定、覆盖关键场景的数据更有价值。
#3. Scaling Law:经验规律,不是无限承诺
Scaling Law 描述的是模型性能随参数量、训练 token 数和计算量增长而改善的经验规律。直觉上,只要模型、数据、算力按合适比例扩大,loss 会以相对平滑的趋势下降,因此团队可以用小规模实验外推大规模训练的预算收益。它的价值不是一句“越大越好”,而是帮助回答:给定预算,是该加参数、加 token、延长训练,还是先修数据。
但 Scaling Law 有明确边界。第一,它通常观察的是预训练 loss,不等于所有下游能力都会同步提升。第二,它假设数据分布和训练设置相对稳定;如果数据质量突然变差,外推会失效。第三,能力可能出现阶段性跃迁,也可能被评测噪声遮住。第四,部署成本、延迟、显存、吞吐和可靠性不会因为曲线好看就自动解决。实际项目里,Scaling Law 是预算工具,不是产品保证书。
#4. Continue Pretraining 与 SFT:知识注入和行为塑形不要混淆
Continue pretraining 是在已有基座模型上继续做语言建模训练,目标仍然接近 CLM:让模型更熟悉某个领域或某种语料分布。它适合补充法律、医疗、金融、代码库、企业文档等领域知识,尤其当模型缺少领域术语、表达风格和背景常识时。风险是成本较高,且如果领域数据窄、质量差或训练过头,可能造成通用能力退化。
SFT 是 Supervised Fine-Tuning,用指令、问题、答案、对话轨迹训练模型“如何回答”。它更像行为和格式对齐:学会遵循指令、输出结构化结果、使用特定语气、完成具体任务。SFT 不适合承担大规模知识注入,因为少量问答很容易只教会表面格式,不能稳定改变模型内部知识分布。领域项目中更稳的判断是:缺知识先考虑继续预训练或 RAG,缺回答方式再做 SFT;如果知识高频、稳定、可授权,continue pretraining 更合理;如果知识更新快、需要溯源,RAG 更合适。
#5. MoE:用稀疏激活扩大参数容量
MoE 是 Mixture-of-Experts。它把模型中的部分前馈网络替换成多个 expert,并用 router 为每个 token 选择少数几个 expert,例如 top-1 或 top-2。这样总参数量可以很大,但每个 token 实际只经过一小部分参数,所以推理 FLOPs 不会像 dense 模型那样随总参数线性增长。
MoE 的核心组件有三个:router 决定 token 分给哪些 expert;expert 执行实际变换,通常是 FFN 子网络;负载均衡损失 防止 router 总把 token 分给少数 expert。没有负载均衡,热门 expert 会过载,冷门 expert 学不到东西,训练吞吐也会被最慢设备拖住。工程上还要处理容量因子、token dispatch、all-to-all 通信、expert parallelism 和溢出 token。
MoE 的优势是参数容量大、计算相对省、不同 expert 可能学到不同模式;代价是训练复杂度、通信开销、路由不稳定、负载不均和部署难度更高。推理时虽然每个 token 的计算少,但 router、跨卡通信、batch 形状变化、expert 并行调度都会影响延迟。因此回答 MoE 不能只说“便宜地变大”,还要补一句:它省的是激活计算,不一定省系统复杂度。
#6. 常见误区
- 误区一:数据越多越好。更准确的说法是:在预算固定时,有效 token、覆盖面、去重、质量和配比共同决定收益。
- 误区二:SFT 可以注入所有领域知识。SFT 更擅长教回答方式,知识密集场景还要考虑继续预训练、RAG 或工具系统。
- 误区三:Scaling Law 证明只要堆算力就会出现能力。它主要是统计外推,不能替代数据审计、评测设计和部署约束分析。
- 误区四:MoE 一定更快更便宜。MoE 减少每个 token 激活的参数,但会引入 router、通信、负载均衡和服务调度成本。
- 误区五:榜单提升就说明模型更强。如果测试集污染、训练集重复或 prompt 泄漏存在,评测结论可能完全不可信。
#7. 面试追问链路
- 先问目标:CLM 和 MLM 的训练目标分别是什么?为什么 GPT 类模型更常用 CLM?
- 再问数据:如果网页数据很大,你会如何清洗、去重、过滤低质内容,并避免 benchmark contamination?
- 追问配比:代码、数学、百科、对话、领域文档如何混合?为什么高质量小数据可能比低质量大数据更有价值?
- 转到预算:Scaling Law 如何指导参数量、token 数和算力分配?它在哪些情况下会失效?
- 问训练选择:金融领域模型是 continue pretraining、SFT 还是 RAG?判断依据是知识是否缺失、是否稳定、是否需要溯源、预算是否允许。
- 最后问结构:MoE 如何通过 router 选择 expert?为什么需要负载均衡?它训练和推理分别贵在哪里?
#作答抓手
回答这一章的问题,建议固定成一条主线:训练目标决定学习信号 -> 数据 pipeline 决定信号质量 -> Scaling Law 决定预算外推 -> continue pretraining / SFT 决定知识与行为分工 -> MoE 决定参数容量和系统代价的折中。这样答题不会散,也能体现你真正理解大模型训练不是单点技术,而是目标、数据、规模、结构和工程约束共同作用的系统。