结论先行:单机多卡训练用DDP(DistributedDataParallel),不要用DP(DataParallel)。DDP比DP快3到5倍,是官方推荐的多卡训练方式。
一、DP的问题
DP单进程多线程,GIL限制了效率,数据分发和梯度同步都在主卡上,主卡容易成为瓶颈。8卡DP实际效率可能只比单卡快2到3倍。
二、DDP的优势
DDP多进程多卡,每卡独立进程独立数据,梯度同步用Ring AllReduce,效率高。8卡DDP加速比通常6到7倍。
三、怎么切换
把model = nn.DataParallel(model)改成torchrun启动脚本,每卡一个进程。数据集用DistributedSampler切分。改动不大但收益巨大。
四、DDP配置要点
启动命令torchrun –nproc_per_node=8 train.py,数据集用DistributedSampler,模型用DDP包装。注意每张卡上的batch size是全局batch除以卡数。学习率要相应缩放。
五、常见问题
DDP启动时master_port冲突,换个端口即可。数据集没有DistributedSampler导致每张卡看重复数据,loss不降。
多卡训练实例可在GPU算力平台选择NVLink多卡规格。




