简介 || 什么是 DDP || 单节点多 GPU 训练 || 容错 || 多节点训练 || minGPT 训练
什么是分布式数据并行 (DDP)#
创建于: 2022年9月27日 | 最后更新: 2024年11月14日 | 最后验证: 2024年11月05日
DDP 的工作原理
什么是
DistributedSampler跨 GPU 的梯度如何同步
熟悉 PyTorch 中 基本的非分布式训练
请观看下面的视频或在 YouTube 上观看以进行学习。
本教程是对 PyTorch DistributedDataParallel (DDP) 的初步介绍,它支持 PyTorch 中的数据并行训练。数据并行是一种在多个设备上同时处理多个数据批次以获得更好性能的方法。在 PyTorch 中,DistributedSampler 可确保每个设备获得不重叠的输入批次。模型被复制到所有设备上;每个副本计算梯度并使用 ring all-reduce 算法 同时与其他副本进行同步。
这个 示例教程 提供了 DDP 工作机制更深入的 Python 视角。
为什么你应该偏好 DDP 而不是 DataParallel (DP)#
DataParallel 是一种较旧的数据并行方法。DP 非常简单(只需额外一行代码),但性能要差得多。DDP 在以下几个方面改进了架构:
|
|
|---|---|
开销更大;模型在每次前向传播时都会被复制和销毁 |
模型仅复制一次 |
仅支持单节点并行 |
支持扩展到多台机器 |
速度较慢;在一个进程上使用多线程,并遇到全局解释器锁 (GIL) 争用 |
速度更快(无 GIL 争用),因为它使用多进程 |
进一步阅读#
使用 DDP 进行多 GPU 训练(本系列的下一篇教程)