评价此页

简介 || 什么是 DDP || 单节点多 GPU 训练 || 容错 || 多节点训练 || minGPT 训练

什么是分布式数据并行 (DDP)#

创建于:2022 年 9 月 27 日 | 最后更新:2024 年 11 月 14 日 | 最后验证:2024 年 11 月 5 日

作者: Suraj Subramanian

您将学到什么
  • DDP 的工作原理

  • 什么是 DistributedSampler

  • GPU 之间的梯度如何同步

先决条件

请观看下面的视频或在 YouTube 上观看。

本教程是对 PyTorch DistributedDataParallel (DDP) 的初步介绍,它支持 PyTorch 中的数据并行训练。数据并行是一种同时在多个设备上处理多个数据批次以获得更好性能的方法。在 PyTorch 中,DistributedSampler 可确保每个设备获得非重叠的输入批次。模型被复制到所有设备上;每个副本计算梯度,并使用 ring all-reduce 算法 与其他副本同步。

这个说明性教程提供了 DDP 机制更深入的 Python 视图。

为什么你应该选择 DDP 而不是 DataParallel (DP)#

DataParallel 是一种较旧的数据并行方法。DP 非常简单(只需多一行代码),但性能要差得多。DDP 在架构上进行了几项改进:

DataParallel

DistributedDataParallel

开销更大;模型在每个前向传播中被复制和销毁

模型仅复制一次

仅支持单节点并行

支持扩展到多台机器

速度较慢;在单个进程上使用多线程,并遇到全局解释器锁 (GIL) 争用

速度更快(无 GIL 争用),因为它使用多进程

进一步阅读#