分布式TensorFlow:使用多台GPU服务器,减少神经网络的实验与训练时间


编者注:所有样例代码可以在这里找到。 
更多人工智能内容请关注2018年4月10-13日AI Conference 2018北京站。

2017年6月8日分布式深度学习的时代开始了。 在这一天,Facebook发表了一篇论文,展示了他们使用32台服务器上的256块GPU,将卷积神经网络(ImageNet上的RESNET-50)的训练时间从两周减少到一个小时。 在软件实现上,他们引入了一种技术,在Mini-Batch样本数量极大的情况下,训练卷积神经网络(ConvNets):让学习率跟Mini-Batch大小成比例。这意味着,任何人现在都可以使用TensorFlow,将分布式训练扩展到数百个GPU。 不过,这不是分布式TensorFlow的唯一优势:通过在许多GPU上并行运行多个实验,您还可以大量减少实验时间。 这样可以减少为神经网络寻找超参数所需的时间。

AI的未来,是弹性可扩展的计算方法。
Rich Sutton,强化学习之父

在本教程中,我们将探索使用TensorFlow的两种不同的分布式方法:

1. 在许多GPU(和服务器)上运行并行实验来搜索好的超参数
2. 通过多个GPU(和服务器)分布式训练单个网络,减少训练时间

我们将在这篇文章中,提供方法(1)和(2)的样例代码,但首先,我们需要澄清我们将要讨论的分布式深度学习的类型。

模型并行与数据并行

一些神经网络模型非常庞大,单个设备(GPU)的内存是存不下的。 Google的神经机器翻译(Neural Machine Translation,NMT)系统就是这样的一个例子。 这些模型需要在许多设备(TensorFlow文档中的所谓的workers)上分开,进行并行训练。 例如,神经网络中的不同层(layer)可以在不同的GPU上并行训练。 这种训练过程通常称为『模型并行』(TensorFlow文档中,也称为『计算图内复制』)。 取得良好的表现是很具有挑战性的,我们对于这种方法在这里不再赘述。

在『数据并行』方法(TensorFlow文档中,也称为『计算图间复制』)中,每个设备上都有相同的模型,但是每个设备都使用不同的训练样本进行模型训练。 这与『模型并行』在设备之间划分模型、存储相同数据形成了鲜明对比。 每个设备将独立地计算其训练样本预测值与样本标记的输出(这些训练样本的真值)之间的误差。 由于每个设备都使用不同的样本进行训练,因此它为模型计算的变化(即『梯度』)也有所不同。然而,对每个新迭代,算法都依赖于将所有结果整合进行处理,就像算法在单个处理器上运行一样。 因此,每个设备都必须将所有变化发送到所有其他设备上的模型中。

在本文中,我们关心的是『数据并行』。图1描绘了典型的数据并行方法,为256卡GPU集群中的每一卡分配32张不同的图像。总计,一次迭代的mini-batch大小是8,092张图(32 x 256)。

图1.在数据并行中,设备使用不同的训练数据子集进行训练。感谢Jim Dowling提供图片

同步与异步分布式训练

随机梯度下降(SGD)是一种寻找最优值的迭代算法,在训练AI的算法中是众多最受欢迎的选择之一。 它涉及多轮训练,每一轮的结果都纳入模型中,产生结果,为下一轮的训练做好准备。多轮迭代可以在多个设备上同步或异步执行。

每次SGD迭代运行在被称为mini-batch的一小批训练样本上(Facebook使用了8092张图的大型mini-batch)。 在同步训练中,所有设备使用单个(大)mini-batch的不同部分数据来训练其本地的模型。然后,它们将本地计算好的梯度(直接或间接)与其他所有设备进行通信。只有在所有设备成功计算并发送了梯度后,模型才会更新。 然后,更新的模型与下一个被均分的mini-batch一起,被发送到所有节点。 也就是说,计算设备在小批量的非重复分割(子集)上进行训练。

虽然并行有很大的加速训练的潜力,但它自然而然会引入额外的计算开销。大型模型和/或慢速网络会增加训练时间。 如果存在一个拖后腿的设备(计算速度慢或者网络连接速度慢),训练过程会严重停滞。我们还希望减少训练模型所需的迭代次数,因为每次迭代中,都需要将更新的模型广播到所有节点。

因此,这这意味着,我们在不会让训练模型精度

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值