简介 || DDP 是什么 || 单节点多 GPU 训练 || 容错能力 || 多节点训练 || minGPT 训练
什么是分布式数据并行(DDP)¶
Created On: Sep 27, 2022 | Last Updated: Nov 14, 2024 | Last Verified: Nov 05, 2024
DDP 的底层工作原理
什么是
DistributedSampler
如何跨 GPU 同步梯度
熟悉 PyTorch 中 基本的非分布式训练
通过以下视频或在 YouTube 上观看教程。
本教程是对 PyTorch 中支持数据并行训练的 DistributedDataParallel (DDP) 的一个简单介绍。数据并行是一种同时在多个设备上处理多个数据批次以获得更好性能的方式。在 PyTorch 中,DistributedSampler 确保每个设备获得非重叠的数据输入批次。模型会在所有设备上进行复制;每个副本计算梯度并使用 环状全归约算法 同步。
这个 说明性教程 提供了关于 DDP 工作机制更深入的 Python 视角。
为什么应优先选择 DDP 而不是 DataParallel
(DP)¶
DataParallel 是数据并行的一种较旧的方法。DP 非常简单(只需一行额外代码)但性能较差。DDP 在架构上改善了几个方面:
|
|
---|---|
更多开销;模型在每次前向传播时都会被复制和销毁 |
模型仅被复制一次 |
仅支持单节点并行 |
支持扩展到多台机器 |
速度较慢;使用单个进程的多线程并受到全局解释器锁 (GIL) 争用的影响 |
速度更快(无 GIL 争用),因为它使用多进程 |
进一步阅读¶
使用 DDP 的多 GPU 训练 (本系列教程的下一节)