核心问题:模型的能力是怎么形成的?一套最初几乎没有能力的参数,怎样通过数据、目标函数和反复调整,逐渐形成语言理解与生成能力?
主要概念:Dataset、Training、Objective、Loss、Backpropagation、Optimizer、Pretraining、Post-training、Fine-tuning、Checkpoint
定义
一句话定义:模型训练,就是让模型反复处理训练数据,根据输出与目标之间的误差,不断调整参数,使模型逐渐学会完成某类任务的过程。
直观的理解:模型一开始只有确定的架构和大量初始参数。训练程序不断给它输入数据、计算误差并调整参数,最终得到一组能够产生有用输出的权重。
训练不是把资料原封不动地存入模型,而是通过大量样本不断调整参数,使模型学到数据中的统计规律和模式。
训练五要素:
Training(训练)
│
├── Dataset(训练数据)
├── Model Architecture(模型架构)
├── Training Objective(训练目标)
├── Loss Function(损失函数)
└── Optimizer(优化器)1. DataSet
模型从什么数据中学习,Dataset 是训练过程中使用的数据集合。
- 大语言模型数据可能包含:网页文本、书籍、代码、论文、问答数据、对话数据、人工标注数据、合成数据;
- 多模态模型,还可能包含:图片与文字描述、视频与文字描述、音频与转录文本、图片、音频、视频之间的对应关系;
数据通常需要:原始数据 -> 收集 -> 清洗 -> 去重 -> 过滤 -> 标注与构造 -> 过滤 -> 切分 -> Tokenize -> 训练数据。
| 概念 | 含义 |
|---|---|
| Training Set | 用于更新模型参数的数据 |
| Validation Set | 用于观察训练效果、调整配置的数据 |
| Test Set | 用于最终评估模型能力的数据 |
| Sample | 一条训练样本 |
| Label / Target | 模型应该预测的目标 |
| Synthetic Data | 由模型或程序生成的训练数据 |
数据决定模型能够接触什么,数据质量、数量和分布都会影响模型最终形成的能力与偏差。
2. Training Objective
模型被要求学习什么,对于自回归大语言模型,最典型的训练目标是:根据前面的 Token,预测下一个 Token。
比如:
输入:今天天气很
目标:好训练时并不是只预测最后一个 Token,而是通常会对序列中的多个位置同时计算预测结果:
今天 → 天
今天天 → 气
今天天气 → 很
今天天气很 → 好通过海量文本上的下一个 Token 预测,模型逐渐学习到:
- 语言结构;
- 词语关系;
- 语法;
- 常见知识;
- 表达方式;
- 一部分推理与任务模式。
3. Loss
模型“错了多少”,Loss 的中文通常是“损失”或“损失值”,用来衡量模型当前输出与训练目标之间的差距。
预测越接近目标 → Loss 越小
预测越偏离目标 → Loss 越大训练的总体目标通常就是:找到一组参数,使训练数据上的 Loss 尽可能降低。
- Loss Function:计算误差的方法;
- Training Loss:训练数据上的损失;
- Validation Loss:验证数据上的损失。
Loss 下降并不一定意味着模型在真实使用中一定更好,还需要通过验证集、测试集和实际任务进行评估。
一次参数更新是怎样发生的?
- Forward Pass: 前向传播
模型接受输入,根据当前参数计算输出:输入 + 当前参数 → 模型计算 → 预测结果
- Loss Calculation: 计算损失
将预测结果与正确目标进行比较,得到 Loss。
- Backpropagation: 反向传播
反向传播用于计算:每一个参数对这次误差产生了多大影响。
- Optimizer: 更新参数
Optimizer 根据梯度和学习率调整参数,新参数 = 旧参数 - 学习率 × 梯度。
整个训练循环是:准备数据 → 前向传播 → 计算损失 → 反向传播 → 更新参数 → 重复,直到 Loss 达到预期或训练结束。
训练数据的分批处理
基础单位:Dataset -> Epoch -> Batch -> Sample
| 概念 | 含义 |
|---|---|
| Sample | 一条训练样本 |
| Batch | 一次送入模型的一组样本 |
| Batch Size | 一个 Batch 中包含的样本数量 |
| Step | 通常指一次参数更新 |
| Epoch | 完整遍历一次训练集 |
| Iteration | 一次训练循环,语境中常与 Step 接近 |
| Learning Rate | 每次更新参数的步幅 |
模型经历的训练阶段
Pretraining
↓
Post-training
↓
可选的领域或任务适配1. Pretraining: 预训练
使用大规模通用数据训练模型,使模型获得基础语言能力、知识模式和通用表示能力。
通常也称为:
- Pretrained Model
- Base Model
- Foundation Model
比如,一个 Base Model 可能擅长写作,但是不擅长:
- 遵循指令;
- 进行多轮对话;
- 拒绝不安全请求;
- 按照指定格式回答;
预训练解决的是:让模型先获得通用的基础能力。
2. Post-training: 后训练
Post-training 是预训练之后的一系列训练和对齐过程,使模型更适合与人交互和完成具体任务,包括:
- Supervised Fine-tuning(监督微调)
- Instruction Tuning(指令微调)
- Preference Tuning(偏好优化)
- Alignment / Safety Tuning(对齐与安全训练)
Supervised Fine-tuning,SFT 监督微调
使用高质量的“输入—目标输出”数据继续训练模型。比如:用户问题 -> 理想回答。
让模型学习:
- 如何遵循指令;
- 如何组织回答;
- 如何进行多轮对话;
- 如何输出指定格式。
Instruction Tuning 指令微调
指令微调可以视为 SFT 的一种常见形式,重点是使用大量不同任务的指令数据,让模型学会理解和执行自然语言指令。
Preference Tuning 偏好优化
给模型多个回答以及人类或模型的偏好信号,让模型学习:哪种回答更有帮助、更符合期望或更安全。
常见术语包括:
- RLHF;
- Reward Model;
- PPO;
- DPO;
- RLAIF。
Alignment
“对齐”是一个更宽泛的目标:让模型的行为更符合人类意图、价值要求和安全规范。
3. Fine-tuning:微调
一个宽泛概念:在已经训练好的模型基础上,使用新的数据继续训练,使其能力或行为适应特定目标。
微调可能发生在:
- 通用指令数据上;
- 专业领域数据上;
- 特定任务数据上;
- 特定风格数据上。
| 类型 | 含义 |
|---|---|
| Full Fine-tuning | 更新模型的大部分或全部参数 |
| PEFT | 只训练少量新增参数或部分参数 |
| LoRA | 常见的参数高效微调方法 |
| Domain Fine-tuning | 适应医疗、法律、金融等领域 |
| Task Fine-tuning | 适应分类、抽取、代码生成等任务 |
后训练可以包含微调和偏好优化;微调也可以用于后续的领域或任务适配。
Checkpoint
Checkpoint 是训练过程中,在某个时间点保存下来的模型状态。它包含:
Checkpoint
│
├── Model Weights
├── Optimizer State
├── Learning Rate Scheduler State
├── Current Step / Epoch
└── Random State 或其他训练状态主要两个用途:
- 恢复训练,训练可能持续数天甚至数月。如果中断,可以从最近的 Checkpoint 继续,而不必从头开始。
- 保存不同训练阶段,不同 Checkpoint 可能具有不同效果,最终发布时,团队可能选择验证效果最好的一个,而不一定是最后一次保存的 Checkpoint。
| 概念 | 主要用途 | 包含内容 |
|---|---|---|
| Training Checkpoint | 恢复或继续训练 | 权重及优化器等训练状态 |
| Model Weights | 加载模型进行推理 | 通常主要是参数数值 |
| Released Model | 分发和使用 | 权重、配置、Tokenizer、说明等 |
模型能力不是来自单一因素,而是多个因素共同作用:
模型能力
│
├── Architecture(模型能怎样计算)
├── Data(模型看过什么)
├── Objective(模型被要求学习什么)
├── Training Scale(训练了多少)
├── Optimization(参数是否训练好)
└── Post-training(模型如何遵循人类意图)架构决定模型具备什么样的计算框架,数据提供学习材料,训练目标规定学习方向,优化过程把这些规律写入参数,后训练则进一步塑造模型的交互方式和行为边界。
概念整理
模型训练的本质,是利用数据和训练目标产生误差信号,再通过反向传播和优化器反复调整参数。预训练赋予模型通用基础能力,后训练和微调进一步塑造其指令遵循、交互方式和专业能力;训练过程中形成的参数则通过 Checkpoint 和最终权重保存下来。
Model Training(模型训练)
│
├── Data(数据)
│ ├── Dataset
│ ├── Sample
│ ├── Training Set
│ ├── Validation Set
│ └── Test Set
│
├── Training Mechanism(训练机制)
│ ├── Training Objective
│ ├── Forward Pass
│ ├── Loss
│ ├── Backpropagation
│ ├── Gradient
│ └── Optimizer
│
├── Training Units(训练单位)
│ ├── Token
│ ├── Batch
│ ├── Step
│ └── Epoch
│
├── Training Stages(训练阶段)
│ ├── Pretraining
│ ├── Post-training
│ │ ├── SFT / Instruction Tuning
│ │ ├── Preference Tuning
│ │ └── Alignment
│ └── Domain / Task Fine-tuning
│
└── Training Output(训练产物)
├── Parameters / Weights
└── Checkpoint