Pytorch单机多卡训练

Pytorch单机多卡训练

pytorch中单机多卡可以使用DataParallel和DistributedDataParallel 来实现。

pytorch官网中推荐使用DistributedDataParallel。两者区别是:

DataParallel是单进程多线程控制GPU的实现方式,因此只能在一台机器上使用,而DistributedDataParallel则是多进程控制GPU,除了能实现单机多卡外,也能够实现分布式训练。

DataParallel一般会比DistributedDataParallel慢

DistributedDataParallel支持model parallel

DP有负载不均衡的现象

DataParallel训练的原理

并行训练有模型并行,数据并行和混合并行。数据并行即每个GPU上都有相同的模型参数,将一个batch的数据分给每个GPU,这样就可以设置更大的batchsize。假设有8个GPU,代码会将GPU0当做reducer,它的功能是分发给其他GPU数据和模型参数,参数更新。其他的GPU则是Maper,主要是进行前向传播和反向传播,向reducer传输自己的参数梯度。

我们知道当batchsize为N时,单机单卡时我们计算loss时是将每个样本的loss求和取平均,这也就相当于把每个样本计算的梯度进行求和后再求平均得到最终的梯度,再进行参数更新。

所以我们要清楚的是那些部分能够进行并行计算,前向传播和反向传播显然可以,因为其只依赖自己的样本,而参数更新不行。

DistributedDataParallel

DistributedDataParallel使用allreduce的方式,能够减少通信开销。并且每个GPU保

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值