基于pytorch实现分布式训练:DistributedDataParallel

分布式训练

主要矛盾:日益增长的数据、模型训练的需求与当前单卡计算能力无法满足这个需求之间的矛盾

目标:        充分利用GPU的性能来提高模型学习的速度

框架:        PyTorch的并行计算,让多个GPU来参与训练

策略:        模型并行、数据并行、混合并行

分类:        单机多卡、多机多卡

模型并行

将模型切分到不同的GPU上,将模型的参数分到不同的GPU上,每一个GPU上的参数量大大减小,这样可以容纳更大的模型进行训练

模型拆分:将一个模型的各个部分拆分,然后将不同的部分放入到GPU来做不同任务的计算

优点:单个节点的参数量减少,并且使得用更为精确的梯度进行计算提供了可能性。

缺点:不同模型组件在不同的GPU上时,GPU之间的传输就很重要,对于GPU之间的通信是一个考验,GPU的通信在这种密集任务中很难办到,每个GPU节点必须等待前一个节点的结果,才能进行运算

数据并行

不再拆分模型,而将输入的数据拆分

将batch中的数据拆分为多份,分别在多个GPU上训练

---将数据集分为N份,分别装载到N个GPU节点中去进行梯度求导

---将所有节点的求导结果进行加权平均,再传递给所有节点

---对于每个节点来说,使用相同的模型参数进行前向传播

---直到模型收敛或者提前停止训练

目前主流的方式是数据并行

数据并行基于一个假设:所有节点都可以放下整个模型

PyTorch实现

PyTorch提供了比较方便的数据并

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值