pytorch多卡训练nn.DataParallel和nn.DistributedDataParallel比较

本文详细讲解了PyTorch中的DataParallel和DistributedDataParallel两种并行模式的工作原理、优缺点,以及如何高效使用它们,包括设置GPU、进程管理和后端通信。特别关注了nn.DataParallel的通信瓶颈和nn.DistributedDataParallel的多进程优化及在多机多卡环境的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文来源于:Pytorch Distributed - 知乎

Pytorch Distributed

现在的模型越来越大,并行显得越来越重要,而众所周知,pytorch 的并行文档写的非常不清楚,不仅影响使用,甚至我们都不知道他的工作原理。一次偶然的机会,我发现了几篇在这方面写的很好的文章,因此也准备参考别人的(参考的文章在Reference部分列出)再结合自己的使用经验总结一下。

nn.DataParallel

Pytorch的数据并行方式,是经常使用的单机多卡的并行方式。

工作原理

这种方式只有一个进程,假设我们有一个8卡的机器,然后设置的batchsize是128,那么单卡的batchsize就是32,在训练的时候,他把我们的模型分发到每个GPU上,然后在每个GPU上面对着32张图进行前向和反向传播得到loss,之后将所有的loss汇总到0卡上,对0卡的参数进行更新,然后,非常重要的一点:他再把更新后的模型传给其他7张卡,这个操作是在每个batch跑完都会执行一次的。
可以想象一下,每个batch,GPU之间都要互相传模型,GPU的通信显然成为了一个极大的瓶颈,直接导致GPU在一段时间是闲着的,也就导致了GPU的利用率低的问题。

缺点

  1. GPU利用率低
  2. 不支持多机多卡
  3. 不支持混合精度

使用方法

nn.DataParallel的使

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值