第6篇 · S2·上:预训练流程与数据工程(数据混合/质量/去重/稳定性)

一个基座模型是怎么"练"出来的?这一篇过一遍预训练五步全流程、数据混合配比、去重与质量打分、loss spike 与训练稳定性,最后算一笔"为什么单卡训不了"的显存账,为下一篇的分布式解法立靶。 S1(第 3-5 篇)讲了"模型是什么",从本篇起进入"怎么把它训练出来"。预训练是"几十上百卡跑几周"的重型工程,正是你大数据分布式经验的主场。 学完你能看懂预训练技术报告里的数据配比与稳定性章节,会算 16P 显存账,理解"数据质量 > 数据量"的工程共识。每节按 原理 -> 关键结论 -> 后端/大数据映射 走。Chinchilla 之后的共识是:数据清洗与混合策略是各家核心壁垒。


1. 预训练全流程

预训练 = 在海量文本上反复"预测下一个 token"训练模型参数。流程:

  1. 数据准备:爬取/清洗海量文本(网页/书籍/代码),去重、过滤低质、脱敏。数据质量决定模型上限,垃圾进垃圾出。规模通常 T(万亿)token 级。

  2. Tokenizer 训练:在语料上训 BPE 词表(token 详见本专栏第 4 篇)。

  3. 模型初始化:按架构(Decoder-only Transformer)随机初始化参数 P。

  4. 训练循环:每个 step 取一批 token -> 前向算 loss(预测下一个 token 的交叉熵)-> 反向算梯度 -> 优化器更新参数。重复几万到几十万 step。

  5. checkpoint:定期存权重,断点续训。

核心矛盾:模型大(参数多)-> 显存装不下 + 算得慢 -> 必须多卡分布式。怎么把一个模型拆到多卡上训,是第 7 篇的主角;本篇先把"为什么必须拆"的账算清。

后端/大数据映射

  • 预训练 = 离线全量批训练:重、慢、贵、可断点续跑,和 T+1 数仓全量重算、Spark 大批作业同性质。

  • 训练 step 循环 = 批处理循环:取批次 -> 算 -> 累加结果,和 Spark 的 map->reduce 循环同构。

  • checkpoint = 断点续跑/容错:你做批处理时的 task 重试、状态持久化,完全一样。

训练数据与稳定性前沿

上面讲了预训练流程。数据是大模型能力的另一半(Chinchilla 后共识:数据质量 > 数据量),训练稳定性也决定大模型能不能训成:

  • 数据混合(Data Mixture):预训练数据由多源混合(网页/书籍/代码/学术),各源比例决定模型能力分布。代码多则推理强但文风偏代码;学术多则专业但通用性降。配比是核心权衡,各家不公开但极关键。

  • 课程学习(Curriculum Learning) :按由易到难/由通用到专业的顺序安排数据。争议:多数研究认为纯顺序影响有限,但末尾阶段加高质量指令/对齐数据有效(对齐见本专栏第 8-9 篇)。

  • 数据质量:

    • 去重(MinHash/近邻去重):训练数据大量重复会让模型"背"而非"学",浪费算力还降泛化。去重是性价比最高的预处理。

    • 质量打分:用分类器/启发式给数据打分,保留高质量、过滤低质/有害。

    • 共识:高质量 5T > 低质量 50T。与其堆量,先把数据洗干净。

  • 训练稳定性(loss spike) :大模型训练偶发损失突刺 (loss 突然飙升),严重时发散前功尽弃。对策:bf16(比 fp16 数值范围大,更稳)、梯度裁剪、学习率调度、checkpoint 恢复(发现 spike 回滚到上一个好 checkpoint 重训,调超参)。

趋势:预训练从"堆数据堆参数"转向"数据质量 + 配比 + 稳定性"的精细工程。Chinchilla 之后,数据清洗/混合策略成为各家核心壁垒。

映射

  • 数据混合 = 特征工程的特征配比/采样权重:做样本时控制各来源占比影响模型偏向。

  • 数据质量(去重/打分) = 数据清洗/质检:做数仓时的去重、脏数据过滤、质量校验。MinHash 去重 = 数据去重。

  • 课程学习 = 训练数据分批/分阶段:先易后难,像你分阶段喂数据。

  • loss spike + checkpoint 恢复 = 作业失败 + 检查点恢复:跑大批作业时某步失败,回滚到 checkpoint 重跑,完全同构。


2. 为什么单卡训不了大模型--显存账

要懂分布式,先懂"单卡显存被谁吃了"。训练时显存分三大块:

2.1 模型状态(权重+梯度+优化器状态)

以混合精度 + Adam训练参数量 P 的模型为例(这是最常见的配置):

  • 参数(FP16):2P 字节

  • 梯度(FP16):2P 字节

  • 优化器状态(Adam,FP32):12P 字节

    • FP32 主权重副本 4P + 动量(momentum) 4P + 方差(variance) 4P = 12P
  • 合计模型状态 = 16P 字节

算一下 :7B 模型 -> 16 × 7 = 112 GB。单卡 A100 80GB 根本放不下,连模型状态都不够,还没算激活。70B 模型 -> 16 × 70 = 1120 GB,要 14 张 A100 才装下模型状态。

结论:大模型训练的显存瓶颈首先是模型状态(16P),分布式训练的第一要务就是把这 16P 摊到多卡上,这正是第 7 篇数据并行/张量并行/流水并行/ZeRO 要解决的问题。

2.2 激活(前向中间结果)

反向传播要重算梯度,需保留前向各层激活。激活显存 ∝ 层数 × 隐藏维 × batch × 序列长度。用**激活重计算(activation checkpointing)**可省(只存部分,反向时重算,用算力换显存)。

2.3 临时缓冲/碎片

AllReduce 通信缓冲、显存碎片等,工程上也要留余量。

映射

显存账 = 内存/资源容量规划:你做大数据时算"数据量 × 副本 + shuffle 缓冲 + 中间结果"会不会撑爆内存,这里是"参数 × 精度系数 + 梯度 + 优化器 + 激活"会不会撑爆显存。同一套容量规划思维。

本篇小结

  • 预训练五步:数据准备 -> Tokenizer 训练 -> 模型初始化 -> 训练循环(前向 loss/反向梯度/更新)-> checkpoint 断点续训。

  • 数据是大模型能力的另一半:数据混合配比决定能力分布,去重(MinHash)是性价比最高的预处理,"高质量 5T > 低质量 50T"。

  • loss spike 是大模型训练的稳定性大敌,对策是 bf16 + 梯度裁剪 + 学习率调度 + checkpoint 回滚重训。

  • 显存账:混合精度 + Adam 下模型状态 = 16P 字节;7B 模型仅模型状态就 112GB,单卡 A100 80GB 放不下。

  • 显存三大块:模型状态(大头)、激活(可用激活重计算换)、临时缓冲/碎片。

  • 把 16P 摊到多卡,是第 7 篇分布式训练(DP/TP/PP/ZeRO)的全部出发点。


上一篇 :第5篇《S1·下:前沿架构:MoE、Reasoning 模型、长上下文、多模态、SSM/Mamba 与模型谱系》 | 下一篇:第7篇《S2·下:分布式训练:数据/张量/流水并行、ZeRO 三阶段推导、混合精度与 3D 并行》

相关推荐
布吉岛的石头4 分钟前
海外AI众包入门:英语要什么水平,钱怎么收回来
人工智能·副业·数据标注·众包·海外兼职
zhikouai9 分钟前
一边撤掉3千元入门款,一边在别处悄悄卖
人工智能
Rocky Ding*11 分钟前
Hi-DiT:一文读懂Hybrid Latent-Pixel Diffusion Transformer的本质与技术细节
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·hi-dit
程序员yu12 分钟前
会编网络:别被入门教程骗了,Python实用能力不在语法本身
开发语言·python·学习·算法
勤劳X码农15 分钟前
2026年学生配音软件怎么选?免费AI配音指南
人工智能
鬼手点金16 分钟前
opencode组件详解-安装方式
人工智能·python·优化器·分析器·nanogpt
Lintongzg16 分钟前
千卡训练的隐形账单:通信不是瓶颈
笔记·学习·性能优化·llm
dadaobusi17 分钟前
学习: SIOV
学习
武子康21 分钟前
Cosmos Curator 清洗视频时,哪些片段应该留下?
人工智能·llm·agent
AI浩21 分钟前
Migician:揭示多模态大语言模型中自由形式多图定位的魔力
人工智能·语言模型·自然语言处理