本页汇总大语言模型(large language model,LLM)与蛋白 LM 的优化实践,衔接 04–05 与 10 DL 训练。
段末注释:ZeRO(Zero Redundancy Optimizer)将 optimizer 状态分片到多 GPU,降低单卡显存;FSDP(Fully Sharded Data Parallel)为 PyTorch 全分片数据并行方案。
系列入口:00.系列规划 | 前置:05 学习率、Math-03/20 LoRA
1. 预训练优化配方(D7)

| 组件 | 典型选择 |
|---|---|
| 优化器 | AdamW($\beta_1=0.9,\ \beta_2=0.95$–$0.999$) |
| 学习率 | peak $10^{-4}$–$3\times10^{-4}$(视模型规模) |
| 调度 | linear warmup + cosine decay |
| batch | 大 global batch(M tokens);linear lr scaling |
| 精度 | BF16 训练(A100+) |
| 稳定性 | grad clip=1.0、weight decay 0.1 |
损失:token CE(Math-05/10)。
2. LoRA / 微调(D3–D7)

| 全量微调 | LoRA | |
|---|---|---|
| 可训练参数 | 全部 $\boldsymbol{\theta}$ | 仅 $A,B$ 低秩矩阵 |
| 典型 lr | $10^{-5}$–$10^{-4}$ | $10^{-4}$–$10^{-3}$(可更大) |
| 优化器 | AdamW | AdamW |
| weight decay | 常 0.01 | 作用于 $A,B$ 或仅 $A$ |
| 内存 | 高(存全梯度/状态) | 低 |
实践:冻结 $W_0$;LoRA 注入 $W_Q,W_K,W_V,W_O$ 及 FFN;rank $r=8$–$64$ 任务依赖。
3. 分布式与显存(D7)

| 策略 | 作用 |
|---|---|
| 数据并行 DDP | 每卡完整模型,不同 batch |
| ZeRO-1/2/3 | 分片 optimizer / 梯度 / 参数 |
| FSDP | PyTorch 原生分片 |
| 张量并行 TP | 单层矩阵切多卡 |
| 流水线 PP | 层切分到卡 |
| 梯度累积 | 小 micro-batch 模拟大 batch |
微调 7B 模型单卡常需 LoRA + 量化(QLoRA)+ 累积。
4. RLHF 阶段的优化(D6)
对齐阶段(Math-05/20):
- SFT:标准 CE + AdamW
- RM:较小 lr,独立训练
- PPO/DPO:policy lr 通常 低于 SFT;KL 系数 $\beta$ 约束相对 $\pi_{\mathrm{ref}}$
DPO 无显式 RM 采样循环,优化更稳、工程更简单。
5. 局限与 checklist(D8)

| 陷阱 | 对策 |
|---|---|
| 抄 lr 不改 batch | linear scaling + warmup |
| LoRA rank 过小 | 消融 $r$ |
| 仅看 train PPL | 下游任务 / 偏好 win rate |
| FP16 溢出 | BF16 或 loss scaling |
| 灾难性遗忘 | KL、SFT mix、较小 lr |
6. HuggingFace 风格配置(D12)
1 | from transformers import TrainingArguments |
7. 小结
大模型优化 = AdamW + warmup/cosine + BF16 + clip;微调 = LoRA + 较大 lr + 少 epoch。Math-04 优化 系列至此完整。
系列导航:00 规划 | Math-06 矩阵微积分