• 教程 >
  • 什么是分布式数据并行 (DDP)
快捷方式

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

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

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

作者:Suraj Subramanian

你将学到什么
  • DDP 的底层工作原理

  • 什么是 DistributedSampler

  • 梯度如何在 GPU 之间同步

先决条件

观看下方或 youtube 上的视频进行学习。

本教程是 PyTorch DistributedDataParallel (DDP) 的温和介绍,DDP 能够在 PyTorch 中实现数据并行训练。数据并行是一种跨多个设备同时处理多个数据批次以实现更好性能的方法。在 PyTorch 中,DistributedSampler 确保每个设备获得不重叠的输入批次。模型在所有设备上复制;每个副本计算梯度,并使用环状 All-Reduce 算法与其他副本同时同步。

这个图解教程从 Python 的角度更深入地介绍了 DDP 的机制。

为什么应该优先选择 DDP 而非 DataParallel (DP)

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

DataParallel

DistributedDataParallel

开销更大;模型在每次前向传播时都会被复制和销毁

模型只复制一次

只支持单节点并行

支持扩展到多台机器

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

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

进一步阅读


评价本教程

© 版权所有 2024, PyTorch。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并解答你的疑问

查看资源