GPU: 多GPU训练的同步模式和异步模式

TensorFlow可以用单个GPU,加速深度学习模型的训练过程,但要利用更多的GPU或者机器,需要了解如何并行化地训练深度学习模型。

常用的并行化深度学习模型训练方式有两种:同步模式和异步模式。

下面将介绍这两种模式的工作方式及其优劣。

如下图,深度学习模型的训练是一个迭代的过程。

在每一轮迭代中,前向传播算法会根据当前参数的取值,计算出在一小部分训练数据上的预测值,然后反向传播算法,再根据损失函数计算参数的梯度并更新参数。

异步模式的训练流程图

在并行化地训练深度学习模型时,不同设备(GPU或CPU),可以在不同训练数据上,运行这个迭代的过程,而不同并行模式的区别在于,不同的参数更新方式。

异步模式的训练流程

从异步模式的训练流程图中可以看到,在每一轮迭代时,不同设备会读取参数最新的取值。

–但因为不同设备,读取参数取值的时间不一样,所以得到的值也有可能不一样。

根据当前参数的取值,和随机获取的一小部分训练数据,不同设备各自运行反向传播的过程,并独立地更新参数。

可以认为异步模式,就是单机模式复制了多份,每一份使用不同的训练数据进行训练

同步模式深度学习训练

在同步模式下,所有的设备同时读取参数的取值,并且当反向传播算法完成之后同步更新参数的取值。

单个设备不会单独对参数进行更新,而会等待所有设备都完成反向传播之后再统一更新参数。

分析

图中在每一轮迭代时,不同设备首先统一读取当前参数的取值,并随机获取一小部分数据。

然后在不同设备上运行反向传播过程得到在各自训练数据上参数的梯度。

当所有设备完成反向传播的计算之后,需要计算出不同设备上参数梯度的平均值,最后再根据平均值对参数进行更新

猜你喜欢

转载自blog.csdn.net/wfei101/article/details/82947092
GPU