深度学习TensorFlow如何使用多GPU并行模式?

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

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

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

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

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

异步模式的训练流程图

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

异步模式的训练流程

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

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

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

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

同步模式深度学习训练

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

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

分析

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

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

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

3多GPU并行

下面将给出具体的TensorFlow代码,在一台机器的多个GPU上并行训练深度学习模型。

–因为一般来说一台机器上的多个GPU性能相似,所以在这种设置下,会更多地采用同步模式,训练深度学习模型。

下面将给出具体的代码,在多GPU上训练深度学习模型解决MNIST问题。

–样例代码将沿用mnist_inference.py程序,来完成神经网络的前向传播过程。

–新的神经网络训练程序是mnist_multi_ gpu_train.py

运行样例

运行MNIST样例程序时GPU的使用情况

–因为定义的神经网络规模比较小,所以在图中显示的GPU使用率不高。

–如果训练大型的神经网络模型,TensorFlow将会占满所有用到的GPU。

时间: 2024-10-28 22:05:09

深度学习TensorFlow如何使用多GPU并行模式?的相关文章

深度学习“引擎”之争:GPU加速还是专属神经网络芯片?

深度学习“引擎”之争:GPU加速还是专属神经网络芯片? 深度学习(Deep Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引擎的引擎,基本所有的深度学习计算平台都采用GPU加速.同时,深度学习已成为GPU提供商NVIDIA的一个新的战略方向,以及3月份的GTC 2015的绝对主角. 那么,GPU用于深度学习的最新进展如何?这些进展对深度学习框架有哪些影响?深度学习开发者应该如何发挥GPU的潜力?GPU与深度学习结合的前景

深度学习的黄金搭档:GPU正重塑计算方式(转载)

转载:原文链接 深度学习的黄金搭档:GPU正重塑计算方式 OFweek电子工程网讯 随着神经网络和深度学习研究的不断深入——尤其是语音识别和自然语言处理.图像与模式识别.文本和数据分析,以及其他复杂领域——研究者们不断在寻找新的更好的方法来延伸和扩展计算能力. 几十年来,这一领域的黄金标准一直是高性能计算(HCP)集群,它解决了大量处理能力的问题,虽然成本有点过高.但这种方法已经帮助推动了多个领域的进步,包括天气预测.金融服务,以及能源勘探. 然而,2012 年,一种新的方法出现了.伊利诺伊大学

【深度学习系列3】 Mariana CNN并行框架与图像识别

[深度学习系列3] Mariana CNN并行框架与图像识别 本文是腾讯深度学习系列文章的第三篇,聚焦于腾讯深度学习平台Mariana中深度卷积神经网络Deep CNNs的多GPU模型并行和数据并行框架. 将深度卷积神经网络(Convolutional Neural Networks, 简称CNNs)用于图像识别在研究领域吸引着越来越多目光.由于卷积神经网络结构非常适合模型并行的训练,因此以模型并行+数据并行的方式来加速Deep CNNs训练,可预期取得较大收获.Deep CNNs的单机多GPU

深度学习硬件:CPU、GPU、FPGA、ASIC

人工智能包括三个要素:算法,计算和数据.人工智能算法目前最主流的是深度学习.计算所对应的硬件平台有:CPU.GPU.FPGA.ASIC.由于移动互联网的到来,用户每天产生大量的数据被入口应用收集:搜索.通讯.我们的QQ.微信业务,用户每天产生的图片数量都是数亿级别,如果我们把这些用户产生的数据看成矿藏的话,计算所对应的硬件平台看成挖掘机,挖掘机的挖掘效率就是各个计算硬件平台对比的标准. 最初深度学习算法的主要计算平台是 CPU,因为 CPU 通用性好,硬件框架已经很成熟,对于程序员来说非常友好.

吴裕雄--天生自然 神经网络人工智能项目:基于深度学习TensorFlow框架的图像分类与目标跟踪报告(续一)

1.3 项目计划 第一周:深入学习和了解神经网络的工作原理,学习卷积的相关理论. 第二周:使用python的TensorFlow库,编写神经网络深度学习代码,搭建神经网络层,并且了解其工作原理和相关的计算.相关参数的传递等,到htttps://www.kaggle.com/moltean/fruits下载fruits压缩包,对数据进行初步的处理. 第三周:使用TensorFlow搭建卷积神经网络,采用训练集数据对测试集数据进行预测:完成数据可视化,显示每个文件夹中第5张图片.使用Tensorbo

Ubuntu16.04下安装配置numpy,scipy,matplotlibm,pandas 以及sklearn+深度学习tensorflow配置(非Anaconda环境)

1.ubuntu镜像源准备(防止下载过慢): 参考博文:http://www.cnblogs.com/top5/archive/2009/10/07/1578815.html 步骤如下: 首先,备份一下ubuntu 12.10 原来的源地址列表文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old 然后进行修改  sudo gedit /etc/apt/sources.list 可以在里面添加资源地址,直接覆盖掉原来的. 2.使用ap

[深度学习]TensorFlow安装

virtualenv 可以用来建立一个专属于项目的python环境,保持一个干净的环境.只需要通过命令创建一个虚拟环境,不用的时候通过命令退出,删除.实践证明用虚拟环境能避免很多糟心的事. 下面介绍一下安装方法: 安装 virtualenv; 安装 virtualenvwrapper; 安装 Numpy,Scipy,Matplotlib 等Python科学计算的库; 1.安装 virtualenv $ sudo pip install virtualenv 然后建立一个测试目录: $ mkdir

python深度学习之语音识别(CPU vs GPU)

训练时间 在mbp的i5的cpu上训练了3轮,花的时间如下 Epoch 1/3 - 737s - loss: 0.1415 - val_loss: 0.0874 Epoch 2/3 - 608s - loss: 0.0807 - val_loss: 0.0577 Epoch 3/3 - 518s - loss: 0.0636 - val_loss: 0.0499 kaggle gpu telsa Epoch 1/3 - 40s - loss: 0.1544 - val_loss: 0.0956

<深度学习>Tensorflow遇到的坑之一

AttributeError: module 'tensorflow' has no attribute 'random_normal' AttributeError: module 'tensorflow' has no attribute 'Session' 查了很多,发现是tensorflow2.0不支持session了,之前试了 sess = tf.compat.v1.Session() 这句无效. with tf.compat.v1.Session() as ses: # Build