深度学习的分布式训练

本文详细介绍了深度学习模型的分布式训练,包括模型并行和数据并行,重点讨论了数据并行中的同步更新和异步更新机制。同步更新确保所有worker在同一步更新,而异步更新则允许worker独立更新,可能导致过期梯度问题。两种方法各有优缺点,实际应用中需根据任务和资源选择合适的方式。
摘要由CSDN通过智能技术生成

在深度学习这一领域经常涉及到模型的分布式训练(包括一机多GPU的情况)。我自己在刚刚接触到一机多卡,或者分布式训练时曾对其中到底发生了什么有过很多疑问,后来查看了很多资料,在这篇博客里对分布式的深度学习模型训练做一个总结。

由于是我自己的总结,所以如果有说的不对的地方,还望指正。

当然我的总结也是基于一些文献参考来的,所以如有雷同,纯属我借鉴别的大神的文章。

如果去查阅与分布式深度学习相关的资料,一般会看到两个词,模型并行和数据并行。

模型并行是指把模型的不同部分放置在各个设备上,这样整个集群就像一个生产流水线一样,对这样的分布式设置我还没有使用过,所以不在这里细说。

数据并行应该是大多数人都会遇到的场景。数据并行分为同步更新和异步更新,下面一一说明。

深度学习训练的数据并行化,说白了就是梯度下降的并行化,所以想要理解你在并行化训练一个深度学习的模型时到底发生了说明,你必须明白梯度下降时到底发生了什么。

我们先从单机的梯度下降说起。

所有介绍梯度下降的参考书都会说梯度下降分为整体梯度下降(每次更新参数使用所有数据)和随机梯度下降(每次更新参数使用一条数据),而在深度学习里我们一般都会结合这两种思想使用批梯度下降,每次更新参数使用一个batch的数据来更新参数。

一般我们可以把随机梯度下降的公式写成下面的形式:

这里我没有在θ上加任何标记,代指神经网络中随意的一个参数,这个公式搞神经网络的应该很熟悉,这里α是学习率,J(θ)是损失函数,整个式子的意义就是参数θ的更新是用上一次迭代的θ减去学习率乘以损失函数对该θ的偏导,也就是梯度。计算该偏导数的时候,就会用到我们的样本数据,不然无法计算J(θ)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值