Pre-training vs Post-training —— 理解两者的边界、目标和各自的优化方向。
前置知识
建议先阅读 大语言模型训练流程 。
一句话区分
预训练(Pre-training):让模型"有能力" —— 学习语言和知识 后训练(Post-training):让模型"听话" —— 学会遵循指令和对齐
全景对比
预训练(Pre-training)
核心目标
在海量无标签数据上学习 P(next_token | context)
模型学会:
训练目标
Loss = -Σ log P(x_t | x_1, ..., x_{t-1})
即:对每个 token,预测它出现在这个位置的概率
关键设计决策
预训练的 Scaling Law
Chinchilla Scaling Law(2022):
最优模型大小 ∝ 训练数据量
具体公式: N_optimal = 5.9 × 10^5 × D^0.46 其中 N = 参数量, D = 训练 token 数
结论: - 参数量和训练数据量应该按比例增长 - 数据不足时,增大模型效果递减 - 数据充足时,增大模型效果显著
实际影响 :GPT-3(175B, 300B tokens)是不均衡的,按照 Chinchilla 公式,更优的配置应该是一个更小的模型用更多数据训练。这直接推动了 Llama(65B, 1.4T tokens)的设计。
后训练(Post-training)
后训练是指在预训练模型基础上,让模型能够遵循指令、符合人类偏好的所有训练步骤。
SFT(监督微调)
输入格式: <|system|> 你是一个有帮助的助手。 <|user|> 解释什么是 Transformer? <|assistant|> Transformer 是一种...
目标:让模型学会"对话"而不是"续写"
对齐训练(Alignment)
RLHF(Reinforcement Learning from Human Feedback)
核心难点:
DPO(Direct Preference Optimization)
RLHF 的简化版本:不需要单独的 Reward Model 和 PPO
直接优化偏好数据: Loss = -log σ(β × (log π(y_w|x) - log π(y_l|x))) y_w = winning response(人类偏好的) y_l = losing response(人类不偏好的)
DPO 的优势:
其他对齐方法
预训练 vs 后训练:部署视角的差异
预训练模型部署
特点: - 能力强但不听话 - 可能续写 prompt 而不是回答问题 - 可能输出有害内容
使用场景: - 需要自主控制输出的场景(如代码补全) - 作为 SFT/对齐的起点
对齐后模型部署
特点: - 能遵循指令 - 有安全护栏(拒绝有害请求) - 格式可控(JSON、Markdown 等)
使用场景: - 对话系统 - API 服务 - Agent 系统
推理性能对比
部署建议
如果你只需要续写能力(如代码补全、文本生成): → 用 Base Model + 自定义 prompt 模板
如果你需要对话、问答、指令遵循: → 用 Chat Model(经过 SFT + 对齐)
如果你的领域有特殊需求: → 在 Chat Model 基础上做领域微调(Domain Adaptation)
面试视角
Q: "预训练和后训练有什么区别?"
回答框架:
Q: "Scaling Law 是什么?"
Q: "RLHF 和 DPO 哪个更好?"