DDP分布式数据并行原理与实现
请详细解释PyTorch DDP(DistributedDataParallel)的工作原理。它与DataParallel有什么区别?All-Reduce机制如何工作?
回答
Yahuda
DDP:每个进程维护完整模型,处理不同数据分片,反向时All-Reduce同步梯度。
vs DataParallel:
- DDP多进程无GIL限制,DP单进程多线程
- DDP负载均衡,DP主节点额外负担
- DDP是推荐方案
All-Reduce:Ring All-Reduce(NCCL)每个GPU只与邻居通信,带宽O(P)降到O(1)。
启动:torchrun --nproc_per_node=4 train.py 后端:GPU用NCCL,CPU用GLOO。