简介 || 什么是 DDP || 单节点多 GPU 训练 || 容错 || 多节点训练 || minGPT 训练
什么是分布式数据并行 (DDP)¶
创建于:2022 年 9 月 27 日 | 最后更新:2024 年 11 月 14 日 | 最后验证:2024 年 11 月 05 日
DDP 在底层的工作原理
什么是
DistributedSampler
如何在 GPU 之间同步梯度
熟悉 PyTorch 中的基本非分布式训练
观看下面的视频或在 youtube 上观看。
本教程是对 PyTorch DistributedDataParallel (DDP) 的温和介绍,它支持 PyTorch 中的数据并行训练。数据并行是一种跨多个设备同时处理多个数据批次以实现更好性能的方法。在 PyTorch 中,DistributedSampler 确保每个设备获得不重叠的输入批次。模型在所有设备上复制;每个副本计算梯度,并使用 ring all-reduce 算法 与其他副本同时同步。
此说明性教程提供了 DDP 机制的更深入的 Python 视图。
为什么您应该首选 DDP 而不是 DataParallel
(DP)¶
DataParallel 是一种较旧的数据并行方法。DP 非常简单(只需额外一行代码),但性能要差得多。DDP 在几个方面改进了架构
|
|
---|---|
开销更大;模型在每次前向传递时都会复制和销毁 |
模型仅复制一次 |
仅支持单节点并行 |
支持扩展到多台机器 |
速度较慢;在单个进程上使用多线程,并遇到全局解释器锁 (GIL) 争用 |
速度更快(没有 GIL 争用),因为它使用多处理 |
延伸阅读¶
使用 DDP 进行多 GPU 训练(本系列中的下一个教程)