深度学习 · 自然语言处理

大语言模型训练过程

交互式可视化解析 · Large Language Model Training Pipeline

训练流程总览
点击各阶段查看详细说明
1
数据收集与清洗
从互联网、书籍、代码库等来源收集海量文本,经过去重、过滤、质量评分等处理,构建高质量预训练语料库。
数万亿 tokens
2
分词 & 词表构建
将原始文本转换为 token 序列。使用 BPE 或 SentencePiece 算法构建词表,实现字符到整数 ID 的映射。
词表 32K~128K
3
自监督预训练(CLM)
以"预测下一个 token"为目标,在数千块 GPU 上进行大规模并行训练,使模型学会语言规律、世界知识和推理能力。
数月 / 数千 GPU
4
指令微调(SFT)
使用高质量的"指令-回答"对进行监督微调,让模型学会按照人类意图回应各类指令,具备对话和任务执行能力。
数万~百万样本
5
RLHF 强化学习对齐
训练奖励模型学习人类偏好,再用 PPO 算法优化语言模型,使输出更加有帮助、无害且诚实(HHH)。
对齐阶段
6
推理与生成策略
通过 Temperature、Top-p 等参数控制生成多样性,KV Cache 加速推理,量化压缩模型体积,最终部署服务。
部署上线
模型规模演进
参数量级对比
GPT-2 (2019)1.5B
GPT-3 (2020)175B
PaLM (2022)540B
GPT-4 est. (2023)~1T+
未来模型???
Transformer 核心组件
模型内部架构
Input Embedding token → vector
↓ × N layers
Multi-Head Attention 关注上下文
Feed-Forward Network 特征变换
LayerNorm + Residual 稳定训练
LM Head (Softmax) 输出概率分布
数据来源
预训练语料构成
🌐
Web 文本 (Common Crawl)
~67% · 数千亿 tokens
📚
书籍 & 学术论文
~15% · 深度知识
💻
代码 (GitHub)
~10% · 结构化推理
💬
对话 & 问答
~5% · 交互能力
🗂️
其他 (Wikipedia 等)
~3%
数据处理流程
原始 → 高质量语料
① 原始爬取
HTML 解析 → 提取正文 → 语言检测
② 质量过滤
困惑度过滤 · 关键词黑名单 · 长度过滤
③ 去重
MinHash LSH · 精确匹配 · 模糊去重
✓ 最终语料库
数万亿 tokens · 高质量 · 多样化
分词过程演示
输入文本 → Token 序列 → Token ID
原始文本:"The large language model learns from data."
分词结果(BPE):
The
▁large
▁language
▁model
▁learns
▁from
▁data
.
Token ID 序列:
[464, 1588, 3303, 2746, 33160, 422, 1366, 13]
▁ 表示词首空格(SentencePiece 格式)· 每个 token 对应词表中的唯一整数 ID
BPE(字节对编码)算法步骤:

1. 初始化:将所有文本拆成字符级别(单字节)
2. 统计:找出频率最高的字符对,如 "e", "r" → "er"
3. 合并:将该字符对替换为新 token,更新词表
4. 重复:不断合并直到词表达到目标大小(如 50,257)
5. 编码:用训练好的合并规则对新文本进行编码

优势:平衡词表大小与序列长度 · 处理未见词 · 跨语言通用
起始标记
<BOS>
Begin of Sequence
结束标记
<EOS>
End of Sequence
填充标记
<PAD>
对齐序列长度
分隔标记
<SEP>
区分输入段落
注意力矩阵可视化
每个 token 对其他 token 的注意力权重
颜色越深表示注意力权重越高 · 点击格子查看权重
位置编码
让模型感知 token 的顺序位置
正弦位置编码(Sinusoidal PE)

每个位置 pos 对应一个唯一向量:
PE(pos, 2i) = sin(pos / 10000^(2i/d))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d))

现代 LLM 多用 RoPE(旋转位置编码),通过旋转矩阵将位置信息直接注入 Q/K 计算,支持更长上下文外推。
自回归预训练目标(CLM)
Causal Language Modeling · 预测下一个 token
给定序列 [t₁, t₂, t₃, ... tₙ],模型学习最大化:
L = -Σ log P(tₙ | t₁, t₂, ..., tₙ₋₁)

每个 token 只能看到它之前的 token(因果掩码),模型通过无监督方式在海量数据上自学语言规律。
示例:输入序列预测过程
The
sky
is
blue
✓ 正确预测 → 低损失
The
sky
is
running
✗ 错误预测 → 高损失 → 反向传播更新权重
训练损失曲线
Cross-Entropy Loss 随训练步数下降
训练损失   验证损失   早停(Early Stopping)防止过拟合
分布式训练策略
大规模并行加速
数据并行(DP)
同一模型复制到多 GPU,各自处理不同 batch,梯度汇总更新
张量并行(TP)
将矩阵计算切分到多 GPU 并行执行,处理超大模型层
流水线并行(PP)
不同层分配到不同设备,形成流水线传递激活值
ZeRO 优化
切片存储优化器状态/梯度/参数,显存占用降低 8x
指令微调(SFT)数据格式
Supervised Fine-Tuning · 学习遵循指令
训练样本格式:
### System:
你是一个有帮助的 AI 助手。

### Human:
请解释什么是递归?

### Assistant:
递归是函数调用自身的编程技术...
微调方式对比:
全量微调(Full SFT)
更新所有参数,效果最好,成本高
LoRA(低秩适配)
只训练低秩矩阵,参数量减少 99%+
Prefix Tuning
在输入前添加可学习向量,冻结主模型
LoRA 原理
Low-Rank Adaptation
原始权重矩阵 W(冻结)
新增低秩矩阵:ΔW = A × B
其中 A ∈ R^(d×r), B ∈ R^(r×k), r << d

前向传播:h = Wx + (AB)x · α/r

例:W 为 4096×4096(1.7亿参数)
r=16 时:A+B 只需 13万参数(节省 99.9%)
SFT 能力提升
微调前后对比
指令遵循↑ 大幅提升
对话连贯性↑ 显著改善
格式控制↑ 明显改善
知识准确性≈ 基本持平
RLHF 三阶段流程
Reinforcement Learning from Human Feedback
👥
阶段一:收集人类偏好
向标注员展示同一提示的多个模型回答,让其按质量排序或选出更好的回答
🏆
阶段二:训练奖励模型
用偏好数据训练奖励模型(RM),学会为任意回答打分,量化人类满意度
🎯
阶段三:PPO 优化
用 PPO 算法,以奖励模型分数为奖励信号,不断更新语言模型参数
PPO 目标函数
平衡性能与安全
目标:最大化

E[r_θ(x,y)] - β·KL[π_θ || π_ref]

r_θ(x,y):奖励模型打分(越高越好)
KL 散度惩罚:防止模型偏离原始行为太远(β 控制强度)
平衡点:使模型在提升人类偏好的同时保持稳定性

替代方案:DPO(直接偏好优化)— 无需单独训练奖励模型,直接在偏好数据上优化
对齐目标(HHH)
Helpful · Harmless · Honest
Helpful(有帮助)
理解用户意图,提供准确、有用的回答,完成各类任务
🛡️
Harmless(无害)
拒绝有害请求,避免输出有偏见、暴力或危险内容
💡
Honest(诚实)
承认不确定性,不捏造事实,如实表达自身局限
下一个 Token 生成概率分布
输入:"今天天气真" → 模型输出各 token 的概率
Temperature:控制随机性。T→0 越确定,T→∞ 越随机
Top-p (nucleus):只从累计概率达到 p 的 token 中采样
解码策略对比
生成方式选择
贪心解码(Greedy)
每步选最高概率 token,确定但重复性高
束搜索(Beam Search)
保留 top-k 候选路径,全局更优但计算代价高
采样(Sampling)
按概率分布随机采样,创意任务首选
Top-k + Top-p 采样
先过滤再采样,平衡质量与多样性,最常用
推理加速技术
部署优化
KV Cache(缓存 K/V 矩阵) ↑ ~10x
避免重复计算历史 token 的 Key/Value,大幅提升推理速度
量化(INT8/INT4/FP8) ↓ 4x 显存
将 FP32 权重降精度,压缩模型体积,几乎不损失质量
Flash Attention ↑ 3x
IO 感知的注意力算法,减少 HBM 访问次数
推测解码(Speculative Decoding) ↑ 2-3x
小模型草稿 + 大模型验证,并行提升吞吐