Shortcuts

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

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

Created On: Sep 27, 2022 | Last Updated: Nov 14, 2024 | Last Verified: Nov 05, 2024

作者: Suraj Subramanian

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

  • 什么是 DistributedSampler

  • 如何跨 GPU 同步梯度

Prerequisites

通过以下视频或在 YouTube 上观看教程。

本教程是对 PyTorch 中支持数据并行训练的 DistributedDataParallel (DDP) 的一个简单介绍。数据并行是一种同时在多个设备上处理多个数据批次以获得更好性能的方式。在 PyTorch 中,DistributedSampler 确保每个设备获得非重叠的数据输入批次。模型会在所有设备上进行复制;每个副本计算梯度并使用 环状全归约算法 同步。

这个 说明性教程 提供了关于 DDP 工作机制更深入的 Python 视角。

为什么应优先选择 DDP 而不是 DataParallel (DP)

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

DataParallel

DistributedDataParallel

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

模型仅被复制一次

仅支持单节点并行

支持扩展到多台机器

速度较慢;使用单个进程的多线程并受到全局解释器锁 (GIL) 争用的影响

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

进一步阅读

文档

访问 PyTorch 的详细开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源