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%。

实验。采用40Gbps网络,在4节点下训练VGG,可以看到尽管在这种情况下,GPU利用率依然很低,大部分情况属于空闲状态。但如果采用模型并行方式可以看到GPU利用率基本都有一个值,都是在用的,只是用的程度不一样。对比一下能够差多少,对于4节点来讲,在比较高速的网络带宽下,模型并行会比数据并行高1.77倍。

GPU占用率情况,对于一些经典模型,其实GPU占有率并不会很高,如图想说明的意思是在Batch Size为16个情况下,有大约一半时间GPU的占有率达不到50%,也就是说GPU相当一部分计算资源,硬件算力很高,但用不起来,这是目前机器学习的一个现状。

如果想把GPU占有率提高,只要增加Batch Size不就可以了,但是GPU memory又有问题。如果在数据并行下,Batch Size超过32,达到64,这个GPU m肯定会爆掉。但如果对于模型并行来讲,GPU memory constraints小很多。

负载均衡,模型并行是不如数据并行的。

负载均衡如果没有做好,如何调节负载均衡?就是Straggler问题如何解决,这一点模型并行比数据并行好很多,因为模型并行的负载均衡通过模型迁移实现,数据并行的负载均衡通过数据迁移实现。

I/O扩展性。

不管研究公有云还是私有云,研究机器学习时都在考虑买最贵的卡,买V100,就算给你一张很厉害的卡,算力很强,能否用起来是另一回事。有的时候买一张V100的卡,结果用不起来,相当于白花钱。但能否用起来这个GPU的算力,取决于在运算之前的数据预处理能力能否跟得上算力。根据我们跟微软今年合作的一个项目发现的一个问题,如果想充分利用GPU算力,需要给足够CPU的核技术预处理,否则GPU没有办法被打满。根据实验,基于NVCaffee进行训练,训练AlexNet模型,打满一块Tesla P100 GPU需要消耗-12CPU核,训练ResNet-18,打满P100需要消耗-7CPU核。

如果考虑I/O扩展性,模型模型不如数据并行。

综上所述,这五个方面各有优劣,本次比赛方案考虑数据并行不是最后的答案,模型并行也不是最后的答案,应该考虑混合式并行。

由于不同卷积层Batch Size并不需要一样,所以考虑把卷积层做了一个区分,通过三段式架构更好加速分布式机器学习。

新型加速技术的应用。

AI也好,机器学习也好,有三方面内容要解决:计算、通信、存储。目前存储还不是什么瓶颈,大家都在考虑计算和通信。

有一个很有意思的故事,上周美国凤凰城刚刚结束了高性能领域的学术会议,跟一些专家讨论,专家都是做HTC的,我说到底哪一部分目前是瓶颈?搞HTC的人说通信是问题,通信要好好解决,算力现在增长的越来越快,通信老是不如算力。但是再前一段跟搞网络的人聊,到底通信跟计算哪一部分更重要?结论又变了,通信没问题,我们有的是高性能网卡,实在不行200G网卡马上都要出来了。

大家各说各话,如果往前看一步,我认为通信是问题。以发展的眼光来看,在过去GPU算力提升35倍,但反观通信,五年前是1-10T,现在还是1-10T,再往后走计算还会发展的越来越快,通信很难跟上计算的步伐,由此得出未来想要加速大规模分布式机器学习应该在通信上发力。

新型加速技术的应用。

目前通信的瓶颈主要出现在Linux内核中,想要加速:

1.可以跨过内核,就是英特尔的方案  DPDK。

2.直接把内核处理逻辑下到网卡,也不走内核。

英特尔  DPDK。

优势:跨内核,用户态可以直接操作裸包。

问题:Polling开销,需要用户态实现拆包和封装逻辑。

RDMA。

优势:零拷贝,硬件实现拆封包逻辑。

问题:编程复杂,PFC拥塞控制问题。由于基于PFC,导致现在没有被大规模应用,虽然我们还在不断做改进。

未来发展

分为普适性和异构性。

DML架构和参数同步算法。

1.层次化的架构设计?

2.自适应的拓扑感知算法?

3.Serverless架构下的安全性问题?

这是未来云计算要面临的挑战。

参数同步模式。

1.迭代速度与迭代质量如何折中?BSP、ASP、SSP如何选型?

2.Geo-distributed场景下的参数同步?

3.FederatedLearning。

数据/模型并行模式

1.模块化。大家有一个装箱的过程,现在有多少节点,不可能每个节点进行参数同步,肯定要先分组,然后有效组织。

2.灵活并行度。没有必要一条走到黑。

新型加速技术的应用。

技术本身的革新。大家都在不断改进自己的技术,如果现在拿到就是一个残次品,是否通过改算法来更好使用这个技术,来把现有技术Bug进行规避。

MAXP-2019参赛体会。

非常感谢信通院和各位业界专家给了这么一次机会,本次MAXP大赛主要核心点在于创新性与包容性兼顾。

1.算法赛、FPGA赛、创新赛三个赛道并进。大家有只有喜欢的东西、擅长的领域,都可以在这里找到属于自己的舞台。

2.诸多跨学科作品涌现。本来参赛时以为只有计算机系和软件学院,没想到搞材料、搞生物、搞物理的都来参赛,而且很多作品令人眼前一亮,比如做3D成像的东西。

3.节奏短平快、内容紧张充实。我们比不上黑客马拉松一搞就三天三夜不睡觉,但对于学生来讲正好是符合的,大家可以用更类似敏捷开发的东西,用自己的业余时间每天网上迭代一点,也是挺充实的一件事情。

4.资源支持充分。我们初赛答辩完以后,在一周时间之内,不管百度还是滴滴,都开始跟各位选手进行联系,特别感谢百度云王老师给我提供充分的技术支持和资源支持。

个人建议。

MAXP=MaxPerformance,但本次应用类的作品仍然占主导地位。我认为系统性能层面的作品更值得鼓励,我们不应该只是单纯写300行代码,在我们系统底层有很多更需要解决的问题,怎么去让现有算法做得更快、更高、更强,这比拍脑袋想新的天马行空的东西好很多,这一点从本次结果来看,大赛做了正确的倾向。

愿景。希望MAXP2020年、2021年以及以后的MAXP能够吸引更多优秀的参赛队伍,迸发更多创意的作品;连接落优秀的企业,更好地产学研路线;不断增强在学术圈和工业界的影响力,早日走向国际化,这点并不遥远,前年清华举办过一个智能运维的比赛,去年这个比赛已经和斯坦福进行了合作,变成一个国际性赛事,相信MAXP今后也会成为一个亚洲地区的赛事,甚至国际性赛事,会早日走向国际化。

以上是我的演讲,谢谢!

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排 行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2019-07-03 14:53:00
云资讯 2019云计算开源产业大会丨郭维河:云数赋能,山钢集团数字化转型经验分享
7月2日上午, 2019可信云大会在北京国际会议中心隆重开幕。2019可信云大会以“智能云网边,可信创未来”为主题,由中国信息通信研究院主办。 <详情>
2019-07-03 14:50:00
云资讯 2019云计算开源产业大会丨董恩然:云边协同与可信物联网云相关标准
7月2日上午, 2019可信云大会在北京国际会议中心隆重开幕。2019可信云大会以“智能云网边,可信创未来”为主题,由中国信息通信研究院主办。 <详情>
2019-07-03 10:18:11
云资讯 2019可信云大会 | 郭润平:企业服务市场SaaS云端创新
郭润平:非常高兴有机会在这里花一点时间跟大家分享,我来自与西云数据。西云数据2015年在宁夏中卫成立的,aws在全球云计算的状况大家知道,2015年把它的技术引进到中国,2 <详情>
2019-07-03 10:15:12
云资讯 2019可信云大会 | UCloud刘异:云计算赋能智慧政务
刘异:感谢各位来宾来参加这个分论坛,我来自UCloud,是政企事业部架构师。我分享的材料有几部分:智慧政务发展概述,现在智慧政务面临什么挑战,重点要解决什么问题;梳理 <详情>
2019-07-03 10:12:20
云资讯 2019可信云大会 | 张琳琳:2019政务云评估佳实践
张琳琳:尊敬的各位领导、各位嘉宾:大家下午好!我是一直在从事政务云相关标准制定和评估工作,我主要从第三方评估的角度分享一下在我们眼中看到政务云市场上最新的发展特 <详情>