tensorFlow-深度学习训练并行模式

1.简介

TensorFlow可以很容易地利用单个GPU加速深度学习模型的训练过程,但要利用更多的GPU或者机器,需要了解如何并行化训练深度学习模型。常用的并行化深度学习模型训练方式有两种,同步模式和异步模式。

2.两种模式的区别

为帮助读者理解这两种训练模式,首先简单回顾一下如何训练深度学习模型。下图展示了深度学习模型的训练流程图。深度学习模型的训练是一个迭代的过程。在每一轮迭代中,前向传播算法会根据当前参数的取值计算出在一小部分训练数据上的预测值,然后反向传播算法再根据损失函数计算参数的梯度并更新参数。在并行化地训练深度学习模型时,不同设备(GPU或CPU)可以在不同训练数据上运行这个迭代的过程,而不同并行模式的区别在于不同的参数更新方式。

2.1 异步模式

下图展示了异步模式的训练流程图。可以看到,在每一轮迭代时,不同设备会读取参数最新的取值,但因为不同设备读取参数取值的时间不一样,所以得到的值也有可能不一样。根据当前参数的取值和随机获取的一小部分训练数据,不同设备各自运行反向传播的过程并独立地更新参数。可以简单地认为异步模式就是单机模式复制了多份,每一份使用不同的训练数据进行训练。在异步模式下,不同设备之间是完全独立的。

然而使用异步模式训练的深度学习模型有可能无法达到较优的训练效果。下图中给出了一个具体的样例来说明异步模式的问题。其中黑色曲线展示了模型的损失函数,黑色小球表示了在to时刻参数所对应的损失函数的大小。假设两个设备do和d1在时间to同时读取了参数的取值,那么设备do和d1计算出来的梯度都会将小黑球向左移动。假设在时间t1设备do已经完成了反向传播的计算并更新了参数,修改后的参数处于图中小灰球的位置。然而这时的设备d1并不知道参数已经被更新了,所以在时间t2时,设备d1会继续将小球向左移动,使得小球的位置达到图中小白球的地方。从图中可以看到,当参数被调整到小白球的位置时,将无法达到最优点。

2.2 同步模式

为了避免更新不同步的问题,可以使用同步模式。在同步模式下,所有的设备同时读取参数的取值,并且当反向传播算法完成之后同步更新参数的取值。单个设备不会单独对参数进行更新。而会等待所有设备都完成反向传播之后再统一更新参数。下图展示了同步模式的训练过程。可以看出,在每一轮迭代时,不同设备首先统一读取当前参数的取值,并随机获取一部分数据。然后在不同设备上运行反向传播过程得到在各自训练数据上参数的梯度。注意虽然所有设备使用的参数是一致的,但是因为训练数据不同,所以得到参数的梯度就有可能不同。当所有设备完成反向传播的计算之后,需要计算出不同设备上参数梯度的平均值,最后再根据平均值对参数进行更新。

同步模式解决了异步模式中存在的参数更新问题,然而同步模式的效率却低于异步模式。在同步模式下,每一轮迭代都需要设备统一开始、统一结束。如果设备的运行速度不一致,那么每一轮训练都需要等待最慢的设备结束才能开始更新参数,于是很多时间将被花在等待上。虽然理论上异步模式存在缺陷,但因为训练深度学习模型时使用的随机梯度下降本身就是梯度下降的一个近似解法,而且即使是梯度下降也无法保证达到全局最优值,所以在实际应用中,在相同时间内,使用异步模式训练的模型不一定比同步模式差。所以这两种训练模式在实践中都有非常广泛的应用。

原文地址:https://www.cnblogs.com/bestExpert/p/10787438.html

时间: 2024-08-30 15:43:34

tensorFlow-深度学习训练并行模式的相关文章

斯坦福DAWNBench:华为云ModelArts深度学习训练全球最快

近日,斯坦福大学发布了DAWNBenchmark最新成绩,在图像识别(ResNet50-on-ImageNet,93%以上精度)的总训练时间上,华为云ModelArts排名第一,仅需10分28秒,比第二名提升近44%.成绩证明,华为云ModelArts实现了更低成本.更快速度.更极致的体验. 斯坦福大学DAWNBench是用来衡量端到端的深度学习模型训练和推理性能的国际权威基准测试平台,相应的排行榜反映了当前全球业界深度学习平台技术的领先性.计算时间和成本是构建深度模型的关键资源,DAWNBen

(转) TensorFlow深度学习,一篇文章就够了

TensorFlow深度学习,一篇文章就够了 2016/09/22 · IT技术 · TensorFlow, 深度学习 分享到:6 原文出处: 我爱计算机 (@tobe迪豪 ) 作者: 陈迪豪,就职小米科技,深度学习工程师,TensorFlow代码提交者. TensorFlow深度学习框架 Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow. 与Caffe.Theano.Torch.MXNet等框

问题集录--TensorFlow深度学习

TensorFlow深度学习框架 Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow. 与Caffe.Theano.Torch.MXNet等框架相比,TensorFlow在Github上Fork数和Star数都是最多的,而且在图形分类.音频处理.推荐系统和自然语言处理等场景下都有丰富的应用.最近流行的Keras框架底层默认使用TensorFlow,著名的斯坦福CS231n课程使用TensorFlo

TensorFlow深度学习基础与应用实战高清视频教程

TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以及后期在C++和C#的应用. 视频目录如下: 你能学到那些内容预览: TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以及后期在C++和C#的应用.

算法工程师耗尽心血终成TensorFlow深度学习应用实践,值得一学!

本篇总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解决图像处理相关问题的能力.全篇力求深入浅出,通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法.高级模型设计和对应的程序编写. 本篇强调理论联系实际,重点介绍TensorFlow编程解决图像识别的应用,提供了大量数据集,并以代码的形式实现了深度学习模型,以供读者参考. 本篇可作为学习人工神经网络.深度学习TensorFlow 程序设计以及图像处理等相关内容的程序设计人员学习.

Tensorflow深度学习之十二:基础图像处理之二

Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474 首先放出原始图像: 1.图像的翻转 import tensorflow as tf import cv2 # 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数 # 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B. # 在opencv中,一个像素点的颜色顺序是B,

《TensorFlow深度学习》高清中文版PDF+英文版PDF+源代码

下载:https://pan.baidu.com/s/1Z5xJw4WWbJmJJlF4zvSXlA 更多资料分享:https://pan.baidu.com/s/1g4hv05UZ_w92uh9NNNkCaA <TensorFlow深度学习>高清中文版PDF+英文版PDF+源代码高清中文版PDF,245页,带书签目录,文字可以复制粘贴:高清英文版PDF,436页,带书签目录,文字可以复制粘贴:配套源代码.经典书籍,讲解详细. 学习如何分析并改进深度学习模型的表现,通过与标准算法进行比较,借助

分享《TensorFlow深度学习》高清中文版PDF+英文版PDF+源代码

下载:https://pan.baidu.com/s/1Z5xJw4WWbJmJJlF4zvSXlA 更多资料:http://blog.51cto.com/14050756 <TensorFlow深度学习>高清中文版PDF+英文版PDF+源代码高清中文版PDF,245页,带书签目录,文字可以复制粘贴:高清英文版PDF,436页,带书签目录,文字可以复制粘贴:配套源代码.经典书籍,讲解详细. 学习如何分析并改进深度学习模型的表现,通过与标准算法进行比较,借助机器智慧,在特定文本中从信息和决策行为

TensorFlow深度学习应用实践

http://product.dangdang.com/25207334.html 内容 简 介 本书总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解决图像处理相关问题的能力.全书力求深入浅出,通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法.高级模型设计和对应的程序编写. 本书共22章,内容包括Python类库的安装和使用.TensorFlow基本数据结构和使用.TensorFlow数据集的创建与读取.人工神经网络.反馈神