从预训练到对齐,理解 LLM 是如何被训练出来的。这对推理部署有直接影响。
前置知识
建议先阅读 Transformer 架构概述 和 Attention 机制深入 。
训练全流程概览
整个流程的计算成本递增:
第一阶段:预训练(Pre-training)
目标
在海量无标签文本上训练模型,学习语言的统计规律和世界知识。
训练目标:Next Token Prediction
Loss = -log P(token_t | token_1, ..., token_{t-1})
训练数据构成
数据处理流水线
训练基础设施
训练稳定性挑战
对部署的影响
1. 上下文长度 → 决定 KV Cache 上限 - 预训练的 max_position_embeddings = 最大上下文
2. 词汇表大小 → 影响首 token 延迟 - vocab 越大,最后一层 Linear 的计算量越大
3. GQA vs MHA → 决定 KV Cache 大小 - 训练时选择的 attention 类型,部署时无法更改
4. 精度(FP32/BF16) → 决定量化起点 - BF16 训练的模型量化到 INT8 损失更小
第二阶段:监督微调(SFT)
让模型学会遵循指令,从"续写文本"变成"回答问题"。
训练数据格式
{ "messages": [ {"role": "system", "content": "你是一个有帮助的助手。"}, {"role": "user", "content": "解释一下什么是 Attention?"}, {"role": "assistant", "content": "Attention 机制允许模型..."} ]}
SFT 训练细节
常见的指令数据类型
第三阶段:对齐(Alignment)
为什么需要对齐
可能出现的问题: - 生成有害内容 - 拒绝回答合理问题 - 过度自信地编造答案 - 不遵循用户指令
对齐的目标:让模型的输出符合人类价值观和期望
方法一:RLHF(Reinforcement Learning from Human Feedback)
RLHF 的三阶段流程:
方法二:DPO(Direct Preference Optimization)
DPO 是 RLHF 的简化版本, 不需要单独的 Reward Model 和 PPO :
DPO 的核心公式:
其中: y_w = 偏好的回答(winning) y_l = 不偏好的回答(losing) x = prompt β = 温度参数(通常 0.1-0.5)
RLHF vs DPO 对比
部署视角
训练与部署的关系
训练时的选择,直接决定了部署时的优化空间:
模型选型 Checklist
部署前需要确认的模型属性:
面试视角
Q: "LLM 的训练流程是怎样的?"
满分回答:
Q: "预训练和微调的学习率有什么区别?"
Q: "RLHF 和 DPO 哪个更好?"