微软和谷歌分别开源分布式深度学习框架,各自厉害在哪?

作者: 佚名 2020-11-09 10:50:19

 

微软和谷歌一直在积极研究用于训练深度神经网络的新框架,并且在最近将各自的成果开源——微软的PipeDream和谷歌的GPipe。

原则上看,他们都遵循了类似的原则来训练深度学习模型。这两个项目已在各自的研究论文(PipeDream,GPipe)中进行了详细介绍,这篇文章将对此进行总结。

先放上GitHub开源地址👇

微软:

https://github.com/msr-fiddle/pipedream

谷歌:

https://github.com/tensorflow/lingvo/blob/master/lingvo/core/gpipe.py

众所周知,在实验过程中,虽然训练基本模型比较琐碎,但复杂度却随模型的质量和大小线性增加。例如,2014年ImageNet视觉识别挑战赛的冠军是GoogleNet,它通过400万个参数获得了74.8%的TOP1准确性,而仅仅三年之后,2017年ImageNet挑战赛的冠军就使用1.458亿个参数(多了36倍)的最新神经网络实现了TOP1准确率——82.7%。但是,在同一时期,GPU内存仅增加了约3倍。

随着模型缩放以达到更高的准确性,对这些模型的训练变得越来越具有挑战性。前面的样本也显示了,依靠GPU基础结构的改进来实现更好的训练是不可持续的。我们需要分布式计算方法,这些方法可以并行化跨不同节点的训练工作量,以扩展训练规模。分布式训练的概念听起来很琐碎,但实际上却极其复杂。

谷歌的GPipe 

GPipe专注于扩展深度学习计划的训练工作量。从基础架构的角度来看,训练过程的复杂性是深度学习模型经常被忽视的一个方面。训练数据集越来越大,越来越复杂。例如,在医疗保健领域,需要使用数百万个高分辨率图像进行训练的模型并不罕见。结果,训练过程通常要花费很长时间才能完成,并且内存和CPU消耗非常大。

思考深度学习模型的分布式的有效方法是将其划分为数据分布式和模型分布式。数据分布式方法采用大型机器集群,将输入数据拆分到它们之间。模型分布式尝试将模型移至具有特定硬件的加速器,例如GPU或TPU,以加速模型训练。

概念上看,几乎所有训练数据集都可以按照一定的逻辑进行分布式训练,但是关于模型的说法却不尽相同。例如,一些深度学习模型由可以独立训练的并行分支组成。在那种情况下,经典策略是将计算划分为多个分区,并将不同的分区分配给不同的分支。但是,这种策略在按顺序堆叠各层的深度学习模型中是不足的,

GPipe通过利用一种称为流水线的技术将数据和模型分布式结合在一起。从概念上讲,GPipe是一个分布式机器学习库,它使用同步随机梯度下降和流水线分布式进行训练,适用于由多个连续层组成的任何DNN。

GPipe在不同的加速器之间划分模型,并自动将一小批训练样本拆分为较小的微批。该模型允许GPipe的加速器并行运行,从而最大限度地提高了训练过程的可扩展性。

下图说明了具有连续层的神经网络的GPipe模型在四个加速器之间分配。Fk是第k个分区的复合正向计算函数。Bk是相应的反向传播函数。Bk取决于上层的Bk + 1和Fk的中间激活。在顶级模型中,我们可以看到网络的顺序性质如何导致资源利用不足。下图显示了GPipe方法,其中将输入的迷你批处理分为较小的宏批处理,这些宏批处理可由加速器同时处理。

图片来源:

https://arxiv.org/pdf/1811.06965.pdf

微软的PipeDream

几个月前,微软研究院宣布创建Project Fiddle,这是一系列旨在简化分布式深度学习的研究项目。PipeDreams是Fiddle项目首次发布的版本之一,专注于深度学习模型训练的并行化。

PipeDream采用与其他方法不同的方法来利用称为管道分布式的技术来扩展深度学习模型的训练。这种方法试图解决数据和模型并行技术的一些挑战,例如GPipe中使用的技术。

通常,在云基础架构上进行训练时,数据并行方法在规模上会承受较高的通信成本,并且随着时间的推移会提高GPU计算速度。类似地,模型分布式技术通常在利用硬件资源上更加效率低下,程序员需要决定如何在给定硬件部署的情况下拆分其特定模型,给他们带来了不必要的负担。

图片来源:

https://www.microsoft.com/zh-cn/research/uploads/prod/2019/08/fiddle_pipedream_sosp19.pdf

PipeDream尝试通过使用称为管道分布式的技术来克服数据模型分布式方法的一些挑战。

从概念上讲,管道分布计算涉及将DNN模型的各层划分为多个阶段,其中每个阶段均由模型中的一组连续层组成。每个阶段都映射到一个单独的GPU,该GPU对该阶段中的所有层执行正向传递(和反向传递)。

给定一个特定的深度神经网络,PipeDream会基于在单个GPU上执行的简短概要分析,自动确定如何对DNN的运算符进行分区,在不同阶段之间平衡计算负载,同时最大程度地减少与目标平台的通信。即使存在模型多样性(计算和通信)和平台多样性(互连拓扑和分层带宽),PipeDream也会有效地实现负载平衡。PipeDream训练分布式的方法的原理比数据模型分布式方法具有多个优点。

 对于初学者而言,PipeDream需要在工作程序节点之间进行较少的通信,因为管道执行中的每个工作程序仅需要将渐变的子集和输出激活信息传达给单个其他工作程序。

图片来源:

https://www.microsoft.com/zh-cn/research/uploads/prod/2019/08/fiddle_pipedream_sosp19.pdf

训练分布式是构建更大、更准确的深度学习模型的关键挑战之一。分布式训练方法是深度学习社区中一个活跃的研究领域,需要将有效的并发编程技术与深度学习模型的本质相结合。尽管仍处于早期阶段,但Google的GPipe和Microsoft的PipeDream本身已经是很优秀的产品,它是深度学习开发人员可用的两种最具创造性的分布式训练方法。

微软 谷歌 深度学习
上一篇:诺和诺德携手微软,共创糖尿病智能问答机器人 下一篇:联想持续发力智能物联,构建新基建时代下的行业新引擎
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

1.8M超轻量目标检测模型NanoDet,比YOLO跑得快

目标检测一直是计算机视觉领域的一大难题,其目标是找出图像中的所有感兴趣区域,并确定这些区域的位置和类别。目标检测中的深度学习方法已经发展了很多年,并出现了不同类型的检测方法。

佚名 ·  1天前
需要知识的后深度学习时代,如何高效自动构建知识图谱

知识图谱可以做什么?如何自动、高效地构建知识图谱?前沿的知识图谱自动构建技术有哪些?这篇文章将逐一解答这些问题。

Synced Lab ·  2020-11-13 15:38:12
谷歌AI最新3D数据集,1.5万张动图,让AR主宰你的生活

这是谷歌的开源3D物体数据集Objectron,包含15000份短视频样本,以及从五个大洲、十个国家里收集来的400多万张带注释的图像。

萧箫 ·  2020-11-13 14:56:24
机器学习如何颠覆金融行业

这些数字确实令人难以置信,表明该行业已经从机器学习中获得了多少收益。以下深入研究金融行业中机器学习中断的示例和真实案例研究。

Harris ·  2020-11-13 09:58:19
诺和诺德携手微软,共创糖尿病智能问答机器人

诺和诺德全球高级副总裁兼大中国区总裁周霞萍表示:“诺和诺德在‘改变糖尿病’的道路上已经走过近百个年头,也见证了城市化进程中全球最大的健康挑战之一——糖尿病日益发展的历史演变。

佚名 ·  2020-11-09 10:35:07
不要上手就学深度学习!超详细的人工智能专家路线图,GitHub数天获2.1k星

这 个学习路线图几乎涵盖了人工智能领域的所有内容,点点鼠标,就能链接所需知识。

佚名 ·  2020-11-05 09:03:04
DJL 如何正确打开 [ 深度学习 ]

为了减少Java开发者学习深度学习的成本,AWS构建了一个Deep Java Library(DJL),一个为Java开发者定制的开源深度学习框架,其为开发者对接主流深度学习框架,提供了一个接口。

小明菜市场 ·  2020-11-04 07:10:42
揭开AI、机器学习和深度学习的神秘面纱

深度学习、机器学习、人工智能——这些流行词皆代表了分析学的未来。在这篇文章中,我们将通过一些真实世界的案例来解释什么是机器学习和深度学习。在以后的文章中,我们将探索垂直用例。

雷锋字幕组 ·  2020-11-03 14:31:55
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载