Pytorch并行分布式训练一 ( 总揽)

PyTorch Distributed Overview — PyTorch Tutorials 1.10.0+cu102 documentationicon-default.png?t=LA46https://pytorch.org/tutorials/beginner/dist_overview.html#

1.介绍

从PyTorch v1.6.0起,torch.distributed中的特性可分为三个主要组成部分:

Pytorch的多GPU训练可分为“数据并行”和“模型并行”,其中常用的DP,DDP都属于数据并行,DDP能够结合模型并行,具体可见系列详情。本篇只做概括性的介绍和提供一些相关的官方参考链接。

2.数据并行训练(Data Parallel Training)

数据并行训练可以分为以下几个等级:

1.使用单设备训练。(无数据并行)

2.使用DataParallel进行单机器-多GPU训练。此方法实现起来最简单。

3.使用DistributedDataParallel进行单机器-多GPU训练。此方法只需要多写部分代码就能实现更快的加速。

4.使用DistributedDataParallellaunching script进行多机器-多GPU训练。

5.使用 torchelastic进行数据并行训练。此方法是为了支持错误恢复的(try-except),由于是多DistributedDataParallel是多进程训练,普通的try-excepted无法正常使用,如果有OOM这类的错误需要恢复程序,则需要特别用到此方法。

3.torch.nn.DataParallel

torch.nn.DataParallel是支持单机器-多GPU训练的最简单的方法,需要最少的代码修改。但是,由于DataParallel使用的是PS模式,它的通信速度受到限制。并且,由于它使用的是单进程-多线程的模式,自然而然地受到了python全局解释器锁(GIL)的限制。相关资料可见Optional: Data Parallelism (DP的基本用法,重点)

4.torch.nn.parallel.DistributedDataParallel

相对于DataParallel,DDP使用的是多进程的模式,因此不受到GIL的限制,速度更快。并且,DDP采用ring-all-reduce模式也能提升一定的通信速度。总的来说,虽然DP和DDP都是采用数据并行的方法(而不是模型并行),但DDP有着明显的优势(速度,显存消耗等)。

DDP相关材料如下:

1.DDP notes提供了初学者示例和一些简单的设计及实现描述。如果你初步接触DDP,可以从此文档开始。

2.Single-Machine Model Parallel Best Practices介绍了单机器-多GPU训练“模型并行”的相关情况。

3.Getting Started with Distributed Data Parallel介绍了一些DDP的基本用法。(重点)

4.Launching and configuring distributed data parallel application介绍了如何去使用DDP launching script以支持多机器-多GPU的训练模式。

5.Shard Optimizer States With ZeroRedundancyOptimizer介绍了ZeroRedundancyOptimizer如何减少分布式数据并行训练的优化器内存占用。

5.TorchElastic

当程序逻辑复杂,错误恢复功能总是格外重要。例如,当出现OOM(GPU内存不足)错误时,我们希望简单地将batchsize减少一半来继续运行这个程序。但是,由于DDP是由多进程实现的,本身不支持基础的try-except模式。所以,如果你需要在使用DDP时保证有错误恢复功能,则需要用到torchelastic

6.一般的分布式训练(General Distributed Training)

许多训练过程不支持数据并行训练(如:强化学习、Transformer等),此时的分布式训练就需要用到torch.distributed.rpc。(暂时不做了解)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值