简介 || 什么是 DDP || 单节点多 GPU 训练 || 容错 || 多节点训练 || minGPT 训练
什么是分布式数据并行 (DDP)¶
DDP 在幕后是如何工作的
什么是
DistributedSampler
梯度如何在 GPU 之间同步
熟悉 PyTorch 中的 基本非分布式训练
按照以下视频或在 youtube 上进行操作。
本教程是 PyTorch DistributedDataParallel (DDP) 的一个简单介绍,它使 PyTorch 中的数据并行训练成为可能。数据并行是一种在多个设备上同时处理多个数据批次以实现更高性能的方法。在 PyTorch 中,DistributedSampler 确保每个设备获得一个不重叠的输入批次。模型在所有设备上复制;每个副本计算梯度,并同时使用 环形全归约算法 与其他副本同步。
本说明性教程提供了对 DDP 机制更深入的 Python 视角。
为什么您应该选择 DDP 而不是 DataParallel
(DP)¶
DataParallel 是一种较旧的数据并行方法。DP 非常简单(只需一行额外的代码),但性能要差得多。DDP 在几个方面改进了架构。
|
|
---|---|
开销更大;模型在每次前向传递中都被复制和销毁 |
模型仅复制一次 |
仅支持单节点并行 |
支持扩展到多台机器 |
速度较慢;在一个进程上使用多线程,并遇到全局解释器锁 (GIL) 争用 |
速度更快(没有 GIL 争用),因为它使用多进程 |
进一步阅读¶
使用 DDP 进行多 GPU 训练(本系列中的下一个教程)