Data Parallelism vs. Model Parallelism

在现在的DNN模型训练中,模型参数和训练数据量都大幅增加,因此需要使用multi-node(GPU) training来进行模型训练优化。

Data Parallelism

一般在batch数据上学习梯度训练模型,这样做的缺点是,因为每次学习到的梯度不一定代表全集梯度,所以模型收敛需要更多的时间。

Data Parallelism的训练过程:

  • 在每一个GPU/Node上,使用相同的模型/参数进行forward propogation
  • 往每一个GPU上送一个batch的不同数据,计算梯度。把所有的梯度都汇总到main GPU上,因为每个GPU的计算速度不同,这是异步操作,等所有的梯度都汇总完之后,使用(weighted)average计算梯度更新模型/参数

 

Model Parallelism

训练过程:

  • 把模型分成多份,每一部分consecutive layers放到一个node上训练,这样每一个node上的参数会大幅减小
  • forward propogation在GPU#1上完成后,把output传到GPU#2,继续forward propogation直到最后一个GPU
  • 在最后一个GPU上计算梯度,更新这部分模型,然后把梯度反向传播到前一个GPU,计算梯度更新模型参数,直到GPU#1

 

Reference

https://leimao.github.io/blog/Data-Parallelism-vs-Model-Paralelism/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值