AI 入门到精通 06 · AI 训练实战

学校教你 "怎么写模型",工业界要你 "怎么把训练跑稳跑快跑出效果"。 90% 的工程师卡在这一章 —— 论文复现不了、loss 训不动、显存爆了、几张卡跑不起来。

一、训练一个模型涉及哪些事

数据 → 实验设计 → 分布式 → 训练循环 → 监控 / 调参 → checkpoint → 评测 → 复盘

每一环都能写一本书。本章给你"先跑通、再调优"的完整路径。

二、知识点

2.1 数据工程(决定上限)

  • 数据采集:自有日志、爬取(合规)、合成数据、开源数据集(HF Hub / opendatalab / ModelScope)。
  • 数据清洗:去重(MinHash / SimHash / Bloom Filter)、去毒、去 PII、语种识别、质量打分(fastText / 困惑度过滤)。
  • 数据混合:不同来源 / 不同领域的配比;DoReMi、RegMix 等自动配比方法。
  • 数据格式:parquet / arrow / WebDataset / Mosaic Streaming / HF datasets streaming —— 大规模训练用 streaming 才不会撑爆磁盘。
  • 打 token / 打包:高效 packing(不浪费 padding)、blocked sequence 策略。
  • 数据版本化:DVC / LakeFS / 自建 manifest;可复现的关键。

2.2 实验设计

  • 小步快跑:先在 1% 数据 + 小模型上跑通,再扩规模。
  • Sanity check:单样本能过拟合吗?前 100 step loss 走势对不对?
  • 对照组:每个 trick 都要有 ablation;一次只改一个变量。
  • 种子 (seed):固定 seed,不然没法对比。
  • 预算管理:用小模型做 scaling law 推算大模型最优配置(learning rate / batch size / 数据量)。

2.3 分布式训练

按"显存 / 算力 / 通信"三个维度展开:

并行策略 拆什么 适用场景
Data Parallel (DDP) 数据 单机多卡,模型放得下单卡
ZeRO-1/2/3 (DeepSpeed) 优化器状态 / 梯度 / 参数 显存吃紧
FSDP (PyTorch) 同 ZeRO-3 思路 PyTorch 原生
Tensor Parallel (TP) 单层权重切分 模型单卡放不下,机内多卡
Pipeline Parallel (PP) 模型按层切到多机 跨节点扩展
Sequence Parallel (SP) 长序列切分 长上下文训练
Expert Parallel (EP) MoE 专家分布 MoE 模型
3D / 4D / 5D Parallel 上述组合 千亿参数及以上

工具栈:torch.distributed / DeepSpeed / Megatron-LM / Megatron-DeepSpeed / accelerate / Colossal-AI / NVIDIA NeMo / Mosaic Composer。

2.4 训练加速 trick

  • 混合精度:bf16(H100 / A100 首选)/ fp16;AMP / GradScaler。
  • 梯度 checkpointing:用算力换显存。
  • Flash Attention 2 / 3:必开。
  • Fused kernels:FusedAdam / FusedRMSNorm / FusedSwiGLU。
  • torch.compile / TorchInductor:免费加速 10-30%。
  • CPU offload / NVMe offload:极限省显存。
  • Activation Checkpointing / Sequence Packing / Variable Length Attention。
  • Communication overlap:通信和计算重叠。

2.5 调参与训练动力学

  • 学习率:最重要的超参;warmup + cosine decay 是默认范式。
  • Batch size:和 learning rate 有平方根关系(线性缩放规则)。
  • Weight decay:现代 Transformer 一般 0.1。
  • Gradient clipping:global norm 1.0 是默认。
  • Loss spike:梯度 / 数据问题;解决:跳过坏 batch、回滚 checkpoint、降低 LR、改 init。
  • 看 loss 曲线判断问题:欠拟合 / 过拟合 / 数据 bug / LR 太大 / 优化器问题各有特征。

2.6 监控、可观测性、复盘

  • 指标监控:loss / accuracy / 学习率 / 梯度范数 / 参数范数 / 激活分布。
  • 资源监控:GPU 利用率 (nvidia-smi) / 显存 / NVLink / 网络 / 磁盘 IO。
  • 实验跟踪:W&B / TensorBoard / MLflow / Aim。
  • 配置管理:Hydra / OmegaConf / 自建 yaml。
  • 故障恢复:checkpoint 自动保存 + 自动 resume + 弹性训练(PyTorch Elastic / TorchX)。
  • 训练日志:长跑必须有 structured log,出了问题能回查每一步。

2.7 强化学习训练(chap 05 RLHF / RLVR 的工程细节)

  • PPO / GRPO / RLOO 的实现要点。
  • Reward Model 训练:偏好对齐、过拟合监控。
  • Rollout / Replay Buffer / Advantage 估计。
  • 采样 - 训练分离架构:vLLM 做 rollout + 训练框架做更新。
  • Reward Hacking 检测与防御。
  • 框架:OpenRLHF / veRL (字节) / TRL / LLaMA-Factory。

三、参考资料

系统类

  • Hugging Face 《Performance and Scalability》文档 —— 单卡 → 多卡 → 多机的完整指南。
  • DeepSpeed 官方文档 + ZeRO 论文。
  • Megatron-LM 论文 + 仓库 —— 学习 TP / PP 的标杆。
  • PyTorch FSDP / DTensor 文档。
  • NVIDIA Deep Learning Performance Guide。
  • 《How to Scale Your Model》(Google JAX 团队的最新指南)。

论文 / 技术报告

  • ZeRO (Rajbhandari 2019) / ZeRO-Offload / ZeRO-Infinity。
  • Megatron-LM (2019) — Tensor Parallel 经典。
  • GPipe / PipeDream — Pipeline Parallel。
  • FlashAttention 1/2/3。
  • DeepSeek-V3 Technical Report — 公开的最详尽训练实践之一。
  • Llama 3 Technical Report。
  • Pre-training Data Curation 相关综述。

实战材料

四、动手实践

按算力分档,挑你能负担的做。

入门(单卡 24G 显存以下)

  1. 手搓 DDP:用 torch.distributed.launch 在 CPU 多进程上模拟多 worker,理解通信。
  2. LoRA 微调:用 unsloth / LLaMA-Factory 在 7B 模型上微调,体会显存优化的威力。
  3. 加 Flash Attention + bf16 + torch.compile:测训练速度提升。
  4. 数据流水线优化:自己写一个 streaming dataset,对比磁盘版本的吞吐。
  5. 监控:把上面所有训练接 W&B,建一个 dashboard。

进阶(多卡 / 租云)

  1. 多机多卡训练:在 2 台 8 卡机器上跑一个 1.5B 模型 SFT;走通 NCCL / 网络配置。
  2. ZeRO-3 / FSDP 实操:训练一个 7B 模型,对比单机多卡 vs 多机多卡的 throughput。
  3. 从零做一次预训练:拿 FineWeb 一个子集,预训练一个 200M-1B 的中文 / 英文小模型。
  4. 完整 RL 流程:用 OpenRLHF / veRL 跑一遍 SFT + RM + PPO(或 SFT + DPO),数据集用公开偏好集。
  5. 复现 RLVR:在数学数据上用 GRPO 训一个推理模型,复现 R1-zero 的某种小规模版本。
  6. debug 一次失败的训练:故意把 LR 调爆 / 数据混入脏数据,记录现象、定位、修复全过程,写复盘。

五、通关标志

  • 能在多机多卡上跑通一次完整训练 (SFT 或 pretrain)。
  • 看 loss 曲线 + GPU 利用率,能给出"瓶颈在哪、怎么优化"的判断。
  • 能讲清楚 ZeRO 1/2/3、TP、PP 的区别和适用场景。
  • 能用 Flash Attention / bf16 / gradient checkpointing 把 OOM 救回来。
  • 能从零规划一次微调实验:数据准备 → 配置 → 训练 → 评测 → 部署。
  • 你的 wandb 上至少有 50+ 次实验记录。

下一站:07. AI 推理与部署