分布式数据并行
Distributed Data ParallelDDP进阶每张 GPU 存一份完整模型、各算一部分数据,再同步梯度的多卡训练方式
分布式数据并行是最常用的多卡训练方法,PyTorch 中对应 torch.nn.parallel.DistributedDataParallel。做法是:每张 GPU(每个进程)都放一份完整的模型,把一个批次的数据切开分给各卡,各自前向和反向计算后,通过 all-reduce(所有卡把梯度求平均的一种集体通信)同步梯度,再各自更新参数,保证所有副本一致。它能让训练速度随卡数近似线性提升,但要求单卡放得下整个模型;模型太大时就要换成 FSDP 或 DeepSpeed ZeRO 这类把参数切分的方案。通常用 torchrun 启动。
例子用 torchrun --nproc_per_node=8 train.py 在一台 8 卡机器上训练扩散策略,每卡批大小 32,等效总批大小 256。
- 也叫
- DistributedDataParallel
- 相关
- 全分片数据并行、DeepSpeed、分布式训练(数据并行 / 模型并行)、批大小、PyTorch、梯度累积
- 来源
- PyTorch DDP 文档