加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

2019可信云大会丨清华研究生耿金坤:大规模分布式机器学习未来发展之我见

发布时间:2019-07-03 06:24:48 所属栏目:云计算 来源:中国IDC圈
导读:副标题#e# 7月2日,2019可信云大会在北京国际会议中心隆重开幕。2019可信云大会以智能云网边,可信创未来为主题,由中国信息通信研究院主办。 下午13:30大会特设的智能云论坛活动正式开始,MAXP大赛最佳案例获得者清华大学计算机系研究生耿金坤做了《大规模
副标题[/!--empirenews.page--]

7月2日,2019可信云大会在北京国际会议中心隆重开幕。2019可信云大会以“智能云网边,可信创未来”为主题,由中国信息通信研究院主办。

下午13:30大会特设的智能云论坛活动正式开始,MAXP大赛最佳案例获得者清华大学计算机系研究生耿金坤做了《大规模分布式机器学习未来发展之我见》的精彩演讲。

耿金坤

耿金坤

很高兴,也很荣幸能够站在这个台上跟大家分享一下关于我的科研经历,以及结合本次比赛的经历,分享一点关于分布式机器学习的有趣故事。

刚才陈媛提到对于产业界来讲,可能更重要的是落地,对于高校来讲,更着重的是创新,也就是要往前看一步,从高校的角度来看,到底会有什么样的故事,跟大家聊一聊。

众所周知,我们目前处在大数据驱动的AI时代,大数据成为业界常态有两个原因:1.数据量在爆炸式增长。数据将在2020年达到175ZB。

2.模型复杂度不断增加。目前想要得到更高的准确度,拟合能力必须足够强,这个模型深度要跟上。以后很有可能还会再出现2000层、3000层的网络,这使得单机根本没有办法承受。

在未来的发展过程中,只想靠一台单机笔记本写300行,跑一个模型,圈一笔投资不太可行。现在一提到机器学习就是数据中心化,就是上云,动辄几百台甚至上千台规模的也有进行联合训练。

在大规模分布式学习中有哪些基本问题?主要有四个问题:

DML架构和参数同步算法

参数同步模式

数据/模型并行模式

新型加速技术的应用

基础架构与同步算法。

大家都在推自己的分布式框架,Tensorflow、PaddlePaddle等,无非就是有三种架构:

1.基于参数服务器的架构

稍微有点系统开发经验的都知道,每个Work负责训练模型,然后把自己的参数推送到参数服务器,然后由worker推送下来,这是最基本的工作流。

2.基于Mesh的架构

3.基于Ring的架构

对比,基于PS架构是最常用的,最经典的Tensorflow、MXNet都是支持PS架构,优势显而易见,被多数主流框架支持;部署简单;弹性扩展好;鲁棒性强。劣势是容易产生中心化瓶颈。

基于Mesh负载更加均衡,但扩展性比较差。

基于Ring这个架构目前被广泛关注,起源并不是分布式,起源于高性能,但大家一提到Ring都提到百度,其实百度并不是Ring的发明者,早在2009年由三个学者在一个论文中发表这个算法,这个算法的优点是带宽最优,2017年百度一个科学家是以博客形式贴出来,广受关注。带宽最优,意思是如果给定这样带宽资源,同步效率不可能做得比Ring更高,所以大家都很认可它。劣势是鲁棒性差,比如把所有的节点连成一个圈,只要有一个节点断掉,这个工作流就没有办法进行,路棒性很差。

一个公司如果很有钱,或跟BAT协商好,搭一个私有集群来训练业务,私有集群就没有必要采用经典架构,扁平架构反而效率很低,可以考虑采用模块化架构。BQ这种情况可以不用扁平式的算法,而可以采用层次化的算法进行高效同步。

参数同步模式。

SP、ASP、SSP三种模式。

BSP是目前最常用的,假如现在有三个节点,节点性能肯定不一样,有的节点跑得快,有的节点跑得慢,有的节点率先把参数算出来,BSP要求每一次迭代时所有的节点都必须等最慢的节点算完以后,然后大家把自己的参数进行同步,同步完成以后同时开始第二次迭代。这个形式优劣势都很明显,优势在于每一个worker下一次开始都能拿到最新的全局参数,意味着同步迭代质量很高,但劣势也很明显,那些跑的快的worker要等慢的worker,导致计算资源很大程度被浪费。

所以为了解决这个问题采用ASP异步同步,就是没有同步,比如现在worker2比较快,运行第0次迭代,就可以直接运行第1次迭代,所达到的参数就是有多新就多新,比如运行完第一次迭代以后,要进行参数同步,只能从Work0和1那里拿到第0次迭代参数。ASP这种情况带来的问题是迭代质量偏低,本来BSP运行100次、200次就可以收敛,但ASP需要运行300次、400次,甚至异构性很强的话,这种情况有可能就不收敛。

由于这两个都有问题,既不用BSP也不用ASP,用SSP,就是允许同步的过程中采用旧的参数进行同步,但旧的参数能够旧到什么程度必须有一个阈值。如果认为比我慢一次迭代的参数,接受它。

对比起来BSP实现简单,在PS、现有主流框架中都被广泛支持。好处是算法在线性好,如果采用BSP进行分布式训练,初始化条件是给定的,算法模型是给定的,输入是给定的,不管运行100次、200次这样的算法都应该可以在线出相同的结果。劣势是快节点必须等慢节点,性能严重的被最慢者拖慢。

ASP优势是迭代速度快,不存在Straggler问题,劣势是牺牲了迭代质量,可能造成不收敛。SSP优势在BSP和ASP之间进行折中,一定程度上兼顾了迭代质量和迭代速度。劣势是需要对于Staleness Bound进行精细调节,在一些情况下收敛速度甚至弱于BSP。

数据/模型并行模式。数据并行是把数据切成不同的份,分别放到不同的节点上。如这里有三个节点,每个节点能到一个完整的模型实例,数据有100G,每一个切成33G,每个节点一份一份读,读完以后大家同步,同步完成以后训练,训练以后再读。这种模式也是目前最经典的训练,在以往数据量没有这么大,模型也没有这么复杂,大家都倾向于用这种方式进行训练。现在随着数据量变大、模型变大,可能大家开始考虑采用一种模型并行方式。

这两种训练方式优劣之处,进行五个维度对比:同步开销、GPU利用率、负载均衡、Straggler问题、I/O扩展性。

同步开销。对于数据来讲,每次迭代要进行同步参数量,就是N个模型的参数,这个参数会很大,一个VGG模型是582兆,训练4个就是2-3个G,如果带宽能力跟不上的话,仅通信就可以占很大的比例。对于模型并行传输只是每两个节点之间的边缘层,每个迭代只需要往外传几十兆的数据。

GPU利用率。这里讲GPU利用率有一个经常被忽略的问题,什么是GPU利用率?如果按照定义的话,有两个点要考虑,一个是利用率,一个是占有率。利用率,就是GPU只要有人用就被利用,利用率是百分之百,哪怕现在没有用满这个核。占有里就是GPU在用,可能这里有32个线程,只用了12个,占有率是50%。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读