云镜收藏

稍后阅读

清单保存在当前浏览器,方便下次回来继续阅读。

清单还是空的

在笔记卡片或正文页点击“加入稍后阅读”即可收藏。

卷2 · LLM 内功

2.4 预训练:数据、Scaling Law 与训练稳定性

约 6 分钟阅读
全书目录

展开本章目录与同卷章节1. 预训练在做什么:一个任务吃下全世界数据管线(现代 LLM 的真正护城河)2. Scaling Law:把”更大更好”变成预算表3. 训练稳定性:loss spike 的标准处置4. 算力经济学:6ND 那笔账(必会)5. 分布式一句话预告(7.3 详述)6. 开源可学的预训练项目(科研视角)7. 自测题8. 动手作业9. 延伸资源同卷章节2.1 语言模型前史:n-gram → RNN → 注意力(20 分钟走完 30 年)2.2 BPE tokenizer 原理与实现2.3 GPT 架构工程版:从 TinyGPT 到 nanoGPT2.4 预训练:数据、Scaling Law 与训练稳定性2.5 SFT 与指令微调实战2.6 参数高效微调:LoRA 与 QLoRA2.7 对齐技术:RLHF → DPO → GRPO2.8 推理优化与 vLLM:把模型变成服务2.9 架构前沿:MoE、长上下文与注意力变体2.10 小模型时代的科研机会:1B–7B 甜点区

本章目标:理解全量预训练在做什么、多少钱、为什么轮不到你做——以及你的机会在它上下游的哪里。学完标准:会算 6ND 的 FLOPs 账,能讲清 Chinchilla 定律和数据配比的逻辑,知道 loss spike 的标准处置。

1. 预训练在做什么:一个任务吃下全世界

训练目标极简:在数万亿 token 上做 next-token 预测(2.1)。工程量都在数据和稳定性上。

数据管线(现代 LLM 的真正护城河)

  1. 采集:Common Crawl 网页 + 代码(GitHub)+ 书籍 + 论文 + 多语种——代码数据占比高被证明能提升推理能力(即使纯中文对话任务也受益);
  2. 清洗:语言识别、广告/色情/毒性过滤、去重(精确去重 + MinHash 模糊去重——重复数据既浪费算力又造成记忆/过拟合)、质量打分(用小分类器学”维基百科 vs 随机网页”的差别);
  3. 配比:网页/代码/书/多语的混合比例是各家的核心 know-how,靠 scaling law 预测实验(在小模型上扫配比再外推);
  4. 课程:数据顺序有讲究(常把高质量数据放训练后期)。

认知:开源模型的差距,架构只占小头,数据和配比占大头——这正是卷5.2”数据为中心的 VLM”研究的产业背景。

2. Scaling Law:把”更大更好”变成预算表

  • Kaplan 等(2020):test loss 对参数量 N、数据量 D、算力 C 呈光滑幂律,跨多个数量级成立。大模型的行为在小模型上可预测;
  • Chinchilla(2022):修正配比——在固定训练算力下,参数和数据的等比缩放最优,经验值每参数约 20 token(GPT-3 时代模型普遍”欠喂”);
  • LLaMA 路线的”故意过训”:Chinchilla 优化的是”训练算力最优”,但部署后推理成本才是终身大头——所以开源模型故意用远超 20:1 的数据量喂小参数模型(如 7B 喂 15T token),把智能压进小模型里,推理便宜。训练最优 ≠ 总成本最优,这是理解 2023 年后开源小模型井喷的钥匙。

对你的方法论启示:任何实验先在 1/10 规模验证趋势存在,再放大;反过来,读论文时看它的结论是否只在某一规模成立。

3. 训练稳定性:loss spike 的标准处置

长训必遇 loss 突跳(spike)。工业界的处置手册:

  1. 查数据:spike 常与某个坏 batch 相关(脏数据、超长序列)——跳过该 batch 往往自愈;
  2. 回滚:从 spike 前的 checkpoint 恢复,跳过问题数据段;
  3. 学习率手术:降 lr 重启 + 重新 warmup(把 optimizer 状态当作”受伤的关节”);
  4. 预防:grad clip 1.0(0.4)、QK-Norm、z-loss(防 logits 无界)、bf16。

通用超参配方(经验值速查):AdamW(0.9, 0.95)、wd 0.1 只 decay 2D 参数、grad clip 1.0、warmup 1~2%、cosine 到峰值 lr 的 10%。lr 峰值随模型变大而下调(0.1B→3e-4,1B→3e-4 级别,10B→1e-4 级别,量级感即可)。

4. 算力经济学:6ND 那笔账(必会)

训练 FLOPs ≈ 6ND(N 参数量,D token 数):前向每参数每 token 约 2 FLOPs,反向约 4。

算例:7B 模型喂 1T token:

6×7×109×1012=4.2×1022 FLOPs6 \times 7\times10^9 \times 10^{12} = 4.2\times10^{22}\ \text{FLOPs}

一张 H100(bf16 有效算力按 40% 利用率 ≈ 4×10144\times10^{14} FLOPs/s)需要约 10810^8 秒 ≈ 3.3 年。换成 512 张 H100:约 2.3 个月——这就是”预训练是巨头游戏”的定量含义(还没算租金:512 卡 × 2 个月 × 每卡时 1.5 美元 ≈ 55 万美元量级)。

你的位置在哪:预训练被垄断后,产业链的价值密度转移到了——后训练(SFT/RLHF,便宜 3 个数量级)、数据引擎、评测、领域微调、推理优化。2.10 章会把”学生的算力地图”画全;你现在只需要建立”任何实验先算 6ND”的条件反射。

5. 分布式一句话预告(7.3 详述)

单卡装不下时三招:数据并行(各卡完整模型、分数据)、张量并行(单层矩阵切开)、流水线并行(层切开接力),合称 3D 并行;配合 ZeRO/FSDP 把优化器状态/梯度/参数分片到各卡。概念先挂墙上,等你的实验真 OOM 了再回来(7.3)。

6. 开源可学的预训练项目(科研视角)

  • nanoGPT:教学终点(2.3);
  • TinyLlama / MobileLLM 系:小模型过训路线的公开实践;
  • OLMo(AI2):数据、代码、中间 checkpoint、训练日志全开放——研究训练动态的最佳标本;
  • Pythia:公开 154 个按序 checkpoint,研究”能力何时涌现”的常用资源。

7. 自测题

  1. 预训练数据管线的四步?哪一步最影响最终质量且最难复现?(采集/清洗/去重+过滤/配比;配比)
  2. Chinchilla 说了什么?LLaMA 为什么故意违反它?(每参数 20 token 等比;推理成本是终身大头,用数据换推理便宜)
  3. 6ND 里 6 是怎么来的?(前向 2 + 反向 4 FLOPs/参数/token)
  4. 13B 模型喂 100B token 大约多少 FLOPs?单张 4090(约 1e14 FLOPs/s 有效)要跑多久?(约 7.8e21;≈2.5 年——量级正确即可)
  5. spike 处置顺序?(查数据→跳过/回滚→lr 手术;预防靠 clip/norm/精度)
  6. weight decay 为什么跳过 1 维参数?(norm/bias 无方向性衰减意义,行规;也是读代码时的识别点)

8. 动手作业

  1. 写一个 estimate_training.py:输入参数量/token 数/GPU 型号,输出 FLOPs、单卡天数、N 卡月数和租金估算——以后每次立项先跑它;
  2. 读 OLMo 的训练日志样例(repo 里有 wandb 记录),找到一次 loss spike,写 200 字分析;
  3. 用 datasets 库下载一个小型中文语料(如 wikitext 或开源新闻集),实现 MinHash 去重原型,统计重复率——数据工程第一课。

9. 延伸资源

  • Chinchilla 论文(Training Compute-Optimal LLMs)——必读,图表比公式多
  • Kaplan scaling laws 论文——选读前半
  • OLMo 博客与 repo——开放科学的样板