Math-04.优化-10.深度学习训练实践

本页汇总深度学习训练中与优化器配合的工程实践:在 03–05 公式之上,让大模型/深网稳定可训

段末注释梯度裁剪(gradient clipping)当 $|\mathbf{g}|_2 > c$ 时将梯度缩放至范数 $c$;梯度累积(gradient accumulation)多步 backward 再一次 step,等效增大 batch。

系列入口00.系列规划 | 前置:04 Adam05 学习率


1. 梯度裁剪(D3–D7)

图 1 clip 防止爆炸

按范数裁剪(常用):

$$
\mathbf{g} \leftarrow \mathbf{g} \cdot \min\left(1, \frac{c}{|\mathbf{g}|_2}\right)
$$

按值裁剪:$g_i \leftarrow \mathrm{clip}(g_i, -c, c)$。

场景 建议
RNN / LSTM 常需 clip,$c=1$–$5$
Transformer 中等深度可 clip=1.0
蛋白 LM 长序列 配合 AdamW + warmup

PyTorch:torch.nn.utils.clip_grad_norm_(params, max_norm=1.0)Math-03/06 范数)。


2. 梯度累积(D3)

图 2 小显存模拟大 batch

accum 步 backward 一次,loss 缩放 $1/\mathrm{accum}$,第 accum 步 optimizer.step()

$$
\text{等效 batch} = B_{\mathrm{micro}} \times \mathrm{accum}
$$

用途:GPU 装不下大 batch 时模拟 linear scaling;大模型微调常见 accum=4–32。


3. 混合精度(D7)

图 3 FP16/BF16 训练

自动混合精度(AMP):前向/部分 matmul FP16/BF16,loss scaling 防下溢,master weights FP32。

精度 特点
FP32 基准
FP16 快;需 loss scaling
BF16 动态范围大;A100/H100 常用

Adam + FP16:注意 $\epsilon$ 与 clip;BF16 预训练更稳。


4. 与归一化层(D6)

BatchNorm:每 batch 统计;小 batch 时不稳 → GroupNorm / LayerNorm(Transformer 用 LN)。

优化影响:BN 使 loss landscape 更平滑;LN 使不同层尺度一致 → 可用较大 lr(配合 warmup)。


5. 训练 Checklist(D7–D8)

图 4 常见失败与对策

症状 排查
loss NaN 降 lr、clip、查 log(0)、AMP scaling
loss 不降 lr 太小、标签错、模型/数据 bug
train↓ val↑ 过拟合 → Math-08
震荡 降 lr、增 batch、Adam→SGD
OOM 累积、checkpoint、LoRA、ZeRO

ZeRO / FSDP(大模型):分片 optimizer 状态 → 见 20 大模型


6. PyTorch 训练片段(D12)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import torch
from torch.cuda.amp import autocast, GradScaler

model = torch.nn.Linear(512, 512).cuda()
opt = torch.optim.AdamW(model.parameters(), lr=1e-4)
scaler = GradScaler()
accum = 4

opt.zero_grad(set_to_none=True)
for step, x in enumerate(data_loader):
x = x.cuda()
with autocast():
loss = model(x).pow(2).mean() / accum
scaler.scale(loss).backward()

if (step + 1) % accum == 0:
scaler.unscale_(opt)
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
scaler.step(opt)
scaler.update()
opt.zero_grad(set_to_none=True)

7. 小结

稳定训练 = 合适 optimizer + lr 调度 + clip/累积/精度。大模型专篇:20 大模型训练与微调

系列导航05 学习率 | Math-05 RLHF

-------------本文结束感谢您的阅读-------------