大模型分布式训练(Distributed Training)
定义
分布式训练是一组训练系统技术:当单张 GPU 放不下模型、数据或训练状态时,把计算、参数、梯度和优化器状态分摊到多张 GPU 或多台机器上。它包含数据并行、张量/流水线模型并行、FSDP/ZeRO 分片、NCCL 集体通信、检查点恢复、调度与监控等实践,目标是在不牺牲正确性和可复现性的前提下提高吞吐并降低故障成本。
为什么对 AI 求职重要
AI 公司招聘中频繁提到分布式训练,因为大模型研发已经高度依赖训练平台和集群效率。懂这项技能的工程师能定位 all-reduce 变慢、GPU 利用率低、显存爆掉、checkpoint 无法恢复等问题,也能帮助研究员把实验扩展到更大模型和更长训练任务。它直接对应 ML Infrastructure、Training Platform、Performance Engineering 和 Research Engineer 岗位。
核心概念
- 数据并行:每张 GPU 放一份模型,拆分 batch 训练,并在每步同步梯度。
- 模型并行:当模型太大时,把层、张量或流水线阶段切到不同设备上。
- 集体通信:通过 all-reduce、broadcast、reduce-scatter、all-gather 等操作同步梯度和参数,NCCL 是常见通信库。
- FSDP / ZeRO 分片:切分参数、梯度和优化器状态,降低大模型训练的显存压力。
- 检查点与容错:保存完整训练状态,让长时间集群任务能从中断处恢复。
- 吞吐监控:观察 GPU 利用率、step time、数据加载、通信重叠和 loss 曲线,尽早发现瓶颈。
学习路径
- 先在单 GPU 上训练一个小模型,记录吞吐、显存、随机种子和可复现性。
- 用 PyTorch DistributedDataParallel 跑双进程/双 GPU,对比 batch size、梯度同步和 step time。
- 尝试 FSDP 或 DeepSpeed ZeRO,比较显存占用、checkpoint 结构和吞吐变化。
- 练习排查常见故障:rank 配置错误、端口冲突、NCCL 超时、数据加载不均衡、checkpoint 恢复失败。
- 做一个小型训练平台练习:用 Kubernetes 或调度器提交任务,采集指标,验证从 checkpoint 恢复并画出 scaling curve。