训练数据到模型能力形成的一生底层图谱
从原始语料、数据集、DataLoader、batch、forward、loss、backward、optimizer update、checkpoint、eval 到模型发布,理解能力到底怎样被写进权重
Raw Data
原始语料 / 反馈
→
Dataset
清洗 / 去重 / 标记
→
Batch
packing / shuffle
→
Forward
logits / activations
→
Loss
错误信号
→
Backward
gradient
→
Update
weights 改变
→
Eval / Release
能力确认
| 阶段 | 它在做什么 | 能力影响 | 相邻专题 |
| Raw Data | 采集网页、书籍、代码、对话、标注、偏好、线上反馈和合成样本 | 决定模型可能接触的语言、领域、风格、知识和风险边界 | 预训练数据 |
| Dataset | 清洗、去重、过滤、分桶、打元数据、版本化 | 决定有效训练信号密度和可审计性 | AI 数据工程 |
| Batch | 按配方抽样、tokenize、packing、padding、shuffle,形成一次更新看到的数据 | 决定这一 step 的梯度从什么分布里来 | 数据配方 |
| Forward / Loss | 模型根据当前权重预测,再把错误或偏好差异变成 loss | 把数据样本翻译成可优化目标 | 优化器 / Loss |
| Backward / Update | 反向传播得到梯度,优化器更新权重和状态 | 真正把统计模式、格式倾向或偏好写进参数 | 参数 / 权重 |
| Eval / Release | 用验证集、基准、红队、生产回放确认能力变化 | 决定这次训练结果是否能进入下一阶段或发布 | 模型评测 |
一句话: 模型能力不是被“灌输”进去的,而是数据分布经过 loss 和优化器反复折算成梯度,再一点点改写权重后形成的行为倾向。
| 处理动作 | 解决什么 | 如果缺失会怎样 | 应该留下的证据 |
| 来源登记 | 知道数据来自哪里、什么时候采集、能否用于训练 | 版权、隐私、删除请求和数据污染无法追溯 | source id、采集时间、许可证、用途范围 |
| 清洗过滤 | 去掉乱码、模板页、低质内容、毒性内容和无效样本 | 训练 token 被噪声消耗,loss 下降但能力不涨 | 过滤规则、过滤前后样本统计、抽检记录 |
| 去重 / 近似去重 | 降低记忆风险和重复暴露 | 模型记住样本表面,benchmark 被污染,token 预算浪费 | dedup 策略、hash / cluster、重复率 |
| 元数据标记 | 让数据可按语言、领域、长度、质量、风险和合成来源分桶 | 后续只能粗暴混合,无法诊断能力变化原因 | language、domain、quality、risk、synthetic 标记 |
| 版本化 | 把一次训练绑定到确定的数据快照 | 训练不可复现,回滚时不知道能力来自哪批数据 | dataset version、manifest、样本计数、token 账本 |
Dataset 是训练系统的合同
一批数据进入训练后,不能只说“用了高质量数据”。它必须能回答:来自哪里、为什么留下、被看见多少次、是否含敏感边界、是否可能污染评测、能否复现和删除。
Tokenizer
文本先被切成 token id。不同 tokenizer 会改变长度、成本、截断位置和特殊 token 边界。
Packing
短样本常被打包进同一序列以减少 padding 浪费,但边界、mask 和特殊 token 处理错会引入伪上下文。
Shuffle / Sampling
抽样顺序会影响梯度噪声、阶段课程、分布跳变和多数据源比例。
Sequence Length
长度决定显存、激活、attention 成本,也决定模型是否真实学到长上下文结构。
| Batch 变量 | 改变什么 | 典型风险 | 检查方式 |
| batch size | 梯度噪声、吞吐、显存和更新频率 | 太小不稳,太大可能降低泛化或浪费算力 | loss 方差、gradient norm、tokens / second |
| micro-batch / gradient accumulation | 在显存限制下模拟大 batch | 归一化、随机性和学习率缩放处理不一致 | 有效 batch 记录、分布式一致性检查 |
| padding / attention mask | 哪些位置参与计算和 loss | 模型学到 padding、跨样本泄漏或错训特殊 token | mask 可视化、loss mask 单测、样本回放 |
| curriculum | 先看简单还是先看复杂、何时引入长文和难题 | 阶段切换造成 loss 尖峰或旧能力遗忘 | 阶段曲线、分桶 Eval、回放保持集 |
| 步骤 | 发生了什么 | 它怎样塑造能力 | 容易误解 |
| Forward | 当前权重把输入 token 逐层变成 hidden state 和 logits | 暴露模型现在会什么、不会什么、倾向输出什么 | 以为 forward 只是推理,不影响训练 |
| Loss | 把预测和目标之间的差距压成一个可优化标量 | 定义“应该朝哪个方向变好” | 以为 loss 就是最终业务价值 |
| Backward | 根据链式法则计算每个参数对 loss 的影响 | 给每个权重一个局部调整方向 | 以为梯度天然代表全局最优方向 |
| Optimizer Update | 结合学习率、动量、Adam 状态、weight decay 等更新参数 | 决定更新步子大小、平滑程度和稳定性 | 以为只要梯度正确,更新就一定正确 |
| Checkpoint | 保存权重、优化器状态、scheduler、数据游标和训练步数 | 让训练可恢复、可对比、可回滚 | 以为 checkpoint 只是模型文件备份 |
关键直觉: 能力形成不是单个样本“写入一条知识”,而是大量样本在相似方向上反复推动参数,最终让某类行为在相似上下文里更容易出现。
| 阶段 | 输入数据 | 训练信号 | 主要写入什么 | 主要风险 |
| Pretraining | 大规模文本、代码、多模态或领域语料 | next token / denoising / multimodal objective | 语言结构、世界知识、代码模式、基础表征 | 污染、重复记忆、数据偏见、规模成本 |
| Continued Pretraining | 新领域、新语言、新时间段、长上下文语料 | 继续语言建模或领域目标 | 领域适应、新知识、长上下文分布 | 灾难性遗忘、近期偏见、旧能力退化 |
| SFT | 指令、问答、多轮对话、工具调用、格式样本 | 模仿目标回答 | 指令遵循、回答风格、结构化格式 | 模板化、过拟合、过度服从坏指令 |
| Preference Optimization | chosen / rejected、排序、人工或模型偏好 | DPO / ranking / reward model 相关 loss | 有用性、简洁度、安全边界和偏好风格 | Goodhart、误拒、迎合、奖励偏差 |
| RL / RLVR | 可交互环境、验证器、工具反馈、奖励信号 | policy gradient / verifier reward / KL 约束 | 长期决策、可验证推理、工具策略 | 奖励黑客、策略坍塌、评估覆盖不足 |
同样叫训练,写入的东西不同
预训练更像建立世界和语言的底座,SFT 更像教会交互格式,偏好优化更像调整行为边界,RL 更像让模型在反馈里学策略。混淆这些阶段,会把数据、loss、评测和发布风险全部看错。
训练日志
记录 loss、learning rate、gradient norm、吞吐、显存、数据分布和异常 batch,是定位能力变化的时间轴。
Checkpoint
不仅保存权重,还要保存 optimizer、scheduler、随机数状态、数据游标和代码版本,才能真正断点恢复。
Eval Gate
用通用、领域、安全、格式、长上下文、工具调用和生产回放评测判断能否进入下一阶段。
Rollback
当 loss 崩坏、能力退化或安全边界被破坏时,必须知道回到哪个 checkpoint、剔除哪批数据、保留哪些变更。
| 信号 | 看起来怎样 | 可能含义 | 下一步 |
| 训练 loss 下降,验证不动 | 训练曲线漂亮,Eval 无改善 | 过拟合、数据重复、目标和评测不一致 | 查去重、增加验证切片、调整数据配方 |
| 总分涨,某切片掉 | 平均指标变好,长尾任务退化 | 某类数据被预算挤出或偏好优化过强 | 看分桶 token 账本和保持集 |
| loss 尖峰后恢复 | 曲线出现异常峰值 | 坏 batch、分布切换、学习率阶段、数值溢出 | 回放对应 batch,查 gradient norm 和数据 shard |
| 安全 Eval 变保守 | 攻击少了,正常请求也更容易拒答 | 拒答样本或偏好奖励压过可用性 | 加入正常对照,校准误拒率 |
| 工具格式不稳 | JSON、函数参数、stop 行为漂移 | SFT / 偏好样本不足,或 tokenizer / template 不一致 | 补格式样本,回放推理 runtime |
诊断原则: 不要只问“这一版模型强不强”,要问“在哪些数据、哪些训练阶段、哪些评测切片上变强或变弱”。能力是分布性的,不是总分性的。
| 证据节点 | 必须记录的字段 | 用来回答的问题 |
| 数据配方 | dataset_manifest_id、data_mixture、license_snapshot、dedupe_version、contamination_check | 模型到底从哪些数据中学习,是否有污染、重复、版权或口径风险? |
| 训练步输入 | shard_id、sample_ids、packing_rule、token_count、loss_mask_summary | 某项能力是否真的被模型看见,哪些 token 参与了 loss? |
| 优化过程 | run_id、step、learning_rate、gradient_norm、loss_bucket、optimizer_state_id | 能力变化来自数据分布、学习率阶段、坏 batch 还是优化不稳定? |
| 检查点 | checkpoint_id、base_model_id、training_config_hash、eval_snapshot_id、rollback_anchor | 这版权重能否复现、比较、回滚和追责? |
| 能力回归 | capability_slice、before_after_score、regression_case_ids、release_gate_id | 总分上涨时,哪些关键能力、格式、安全或长尾任务被伤到了? |
误区:数据进了训练就等于模型学会了
样本是否被看见、被看见几次、loss 是否覆盖、梯度是否足够一致,都会影响是否真的形成能力。
误区:一个样本写入一条知识
参数不是数据库行。模型更常学到统计关联、表达模式和行为倾向,精确事实需要评测和更新策略额外治理。
误区:checkpoint 越晚越好
后期 checkpoint 可能在某些能力上过拟合、遗忘或安全退化,最佳发布点要由 Eval gate 决定。
误区:微调只是再训练一点点
微调数据小但梯度集中,足以改变格式、风格、安全边界和关键任务表现,必须有保持集和回滚。
误区:训练完成才需要评测
评测应该贯穿数据准备、阶段 checkpoint、候选模型筛选、格式转换、发布灰度和线上反馈回流。
误区:训练日志只给研究员看
产品、平台、安全、合规和发布团队都需要理解训练日志,因为它决定模型版本能否解释、复现和治理。
| 团队 | 应该追问 | 落地动作 |
| 模型 / 训练团队 | 这次训练 run 的数据、loss、优化器、checkpoint 和 Eval 是否能完整复现 | 训练配置版本化、数据 manifest、日志和 checkpoint 绑定 |
| AI 平台团队 | 训练产物怎样进入模型仓库、转换格式、加载和回滚 | 模型资产台账、推理格式验证、灰度发布流程 |
| 应用团队 | 模型能力变化是否覆盖真实任务,而不只是公开 benchmark | 生产坏例回放、任务切片 Eval、上线前验收集 |
| 安全 / 合规团队 | 数据来源、敏感样本、拒答边界和版权风险能否追溯 | 数据谱系、删除请求流程、红队记录、模型卡 |
| 产品团队 | 训练改善的是哪类用户体验,代价是什么 | 能力变更说明、灰度指标、用户反馈闭环 |
这张图在主干里的位置
如果说 一次 LLM 请求的一生解释“请求如何经过应用、网关、推理和观测”,那么这一页解释“训练样本如何经过数据、batch、loss、梯度、checkpoint 和评测,最终变成模型版本”。两张图合起来,分别补齐运行时和训练时的生命周期视角。