Shortcuts

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

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

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

作者: Suraj Subramanian

What you will learn
  • DDP 在底层的工作原理

  • 什么是 DistributedSampler

  • 梯度如何在多个GPU之间同步

Prerequisites

跟随下面的视频或在youtube上观看。

本教程是对PyTorch DistributedDataParallel (DDP) 的温和介绍,它使得在PyTorch中进行数据并行训练成为可能。数据并行是一种同时跨多个设备处理多个数据批次以提高性能的方法。在PyTorch中,DistributedSampler 确保每个设备获得一个不重叠的输入批次。模型在所有设备上复制;每个副本计算梯度,并使用环形全归约算法与其他副本同步。

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

为什么你应该更喜欢DDP而不是DataParallel (DP)

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

DataParallel

DistributedDataParallel

更多的开销;模型在每次前向传递时被复制和销毁

模型仅复制一次

仅支持单节点并行

支持扩展到多台机器

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

更快(没有GIL争用) 因为它使用了 多进程

进一步阅读

优云智算