⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

扩展:LLM 训练过程 ​

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。

所属章节: 第 5 章:LLM 基础


数据到 batch ​

预训练数据通常经过来源登记、解析、去重、过滤、分词和样本拼接。每一步都应版本化,因为同一模型配置在不同数据管线下可能得到不同结果。

text
原始文档
  → 清洗与去重
  → tokenizer
  → token 序列
  → 截断、拼接与抽样
  → 训练 batch

样本拼接可以减少 padding,但要明确文档边界是否允许相互注意。数据抽样比例应按实际 token 统计,而不是只看文件数量。

因果语言建模目标 ​

给定 token 序列 x1,…,xT,decoder-only 模型最小化:

L=−∑t=1Tlog⁡pθ(xt|x<t)

训练时可并行计算各位置损失,因为真实前缀已经给出;生成时必须逐步把新 token 写回上下文。两阶段共享模型,但计算模式不同。

一次训练更新 ​

text
batch
  → 前向传播与 token loss
  → 反向传播
  → 梯度聚合 / 裁剪
  → 优化器更新
  → 学习率调度
  → 日志与检查点

分布式训练还需要在数据并行、张量并行、流水线并行和参数分片之间选择。选择依据是模型状态、激活、通信带宽和硬件拓扑,不是模型参数量单一指标。

训练预算与 Scaling Laws ​

一些实验观察到模型规模、数据量、计算量与验证损失之间近似幂律关系:

L(N,D)≈L∞+aN−α+bD−β

N 表示参数规模,D 表示训练 token 数。系数和指数依赖数据、架构与实验范围。所谓“计算最优”是在给定假设和预算下分配参数与数据,不是固定的“每个参数对应多少 token”规则。

实际规划还要考虑模型推理成本:训练上更省计算的模型,不一定在目标请求量下更省总成本。

能力变化与阈值 ​

某些评测会在规模增加后出现非线性跃升,但这可能来自指标阈值、提示方式、采样误差或真实能力变化。分析时应查看连续指标、多个模型规模和置信区间,避免把单个 Benchmark 的过线描述成统一“涌现机制”。

In-Context Learning 表示模型根据上下文示例改变当前预测,而不更新参数。它的效果受示例选择、顺序、标签分布和上下文长度影响。

训练监控 ​

至少记录:

  • 训练与验证 loss、学习率和梯度范数;
  • 每秒 token、硬件利用率和通信时间;
  • 非有限值、跳过更新和数据异常;
  • 不同语言、领域与任务的定期评测;
  • 检查点、代码、依赖、数据版本和随机种子。

训练 loss 下降只说明对训练目标的拟合改善,不自动代表事实性、指令遵循或安全性改善。

常见失败 ​

现象排查方向
loss 突然发散学习率、异常 batch、梯度范数、数值精度
验证 loss 不改善数据重复、分布偏差、容量或优化不足
下游指标退化数据配比、评测污染、能力干扰
吞吐下降batch 形状、通信、数据加载和重计算
恢复训练不一致优化器、调度器、随机状态和数据游标

与后续训练阶段的边界 ​

预训练学习一般的条件 token 分布;SFT 用示范调整任务行为;偏好优化使用回答比较或奖励。三者都更新参数,但数据结构、目标函数和评价方式不同。


返回: 第 5 章:LLM 基础

本教程采用 CC BY-NC-SA 4.0 许可协议