注册 / 登录

让AI简单且强大:深度学习引擎OneFlow背后的技术实践

分会场:  人工智能/AI驱动/AI实践

 

案例来源 :

案例讲师

袁进辉(老师木)

北京一流科技有限公司 首席科学家

北京一流科技有限公司创始人,首席科学家。2008年7月自清华大学计算机系获得工学博士学位,获得清华大学优秀博士学位论文奖,在计算机视觉及多媒体领域顶级会议上发表多篇论文,连续多年获得美国国家技术标准局组织的视频检索评测比赛的第一名。2010年负责研发斯诺克比赛“鹰眼”系统,该产品打败来自英国的竞品开始服务于各项国际大赛,并被中国国家队作为日常训练辅助系统。2012年作为早期成员加入360搜索创业团队,一年后产品上线成为国内市场份额第二的搜索引擎。2013年加入微软亚洲研究院从事大规模机器学习平台的研发工作。2014年,发明了当时世界上最快的主题模型训练算法和系统LightLDA,只用数十台服务器即可完成以前数千台服务器才能实现的大规模主题模型,该技术成功应用于微软在线广告系统,被当时主管研究的全球副总裁周以真称为”年度最好成果“。2015年至2016年底,专注于搭建基于异构集群的深度学习平台,项目荣获微软亚洲研究院院长特别奖 (top 1%)。2017年创立北京一流科技有限公司,致力于打造分布式深度学习平台的事实工业标准。

扫描二维码分享案例

 

案例简述

 

随着深度学习的发展,用户越来越依赖GPU 或者其他加速器进行大规模运算。人工智能(AI,Artificial Intelligence)需要更优秀的软件来释放硬件的能量已成业界共识。一方面,各种框架需要进一步降低编写深度学习分布式训练程序的门槛;另一方面,用户期待系统可以支持不同的深度学习网络模型,并实现线性加速。各知名深度学习框架正在朝这方面努力,但目前针对如何实现各种神经网络模型的横向扩展性这一痛点,仍属空白。我们基于静态调度和持续操作符的流式系统架构解决了横向扩展问题。据我们所知,OneFlow 是首个也是唯一一个针对大规模数据深度学习训练而研发的流式系统,它既不同于市面上的现有深度学习框架,也不同于其他流式系统。使用OneFlow系统可以大大加速深度学习训练过程,节省用户时间,降低硬件成本,也可以训练其它深度学习框架还无法处理的大规模深度学习问题。譬如使用OneFlow训练图像分类或物体检测模型比其它框架快几倍,OneFlow可基于GPU集群训练BERT模型,而其它框架还不支持分布式训练BERT。

 

案例目标

 

训练大规模深度学习模型需要用户投入很多GPU卡,而且需要等待数天才能完成训练,如何提高数据科学及和工程师的效率,如何能帮助科学家训练更大规模的模型,是业界难题。OneFlow 解决了训练大规模深度学习模型的横向扩展问题,可以让用户使用更少GPU硬件用更短的时间完成模型训练,以及可以帮助用户训练BERT这样的大模型大计算的深度学习模型。

 

成功(或教训)要点

 

关键是技术创新。

OneFlow通过技术创新,基于静态调度和流式架构解决了深度学习训练的横向扩展难题。静态调度一方面能自动支持各种并行模式,另一方面可以把许多运行时开销转移至编译时,从而提高硬件利用率;流式引擎能更好支持流水线,完美重叠数据传输和计算,从而不会出现GPU空闲状态。



 

案例ROI分析

 

使用同样规模的硬件,分布式训练卷积神经网络,OneFlow比其它框架快20%到几倍;训练物体检测模型,OneFlow比其它框架快几倍;OneFlow可以训练其它框架不能训练的大规模BERT模型。以某大型互联网公司为例,有500台GPU服务器,每台服务器月租费4万人民币,一个月服务器开支2000万,使用OneFlow提高一倍效率,一个月服务器开支可降低1000万。

 

案例启示

 

(a)找到关键的问题:人工智能算力问题。算力是推动人工智能向前发展的最关键因素之一,也是用户资金投入最多的方面之一。

(b)找到正确的方向:横向扩展。横向扩展可以通过增加服务器数量来解决。纵向扩展通过改善一台服务器的算力来解决问题,但一台服务器的能力总是有上限,横向扩展才能从根本上解决算力问题。

(c) 用正确的方法解决问题。深度学习区别于传统大数据任务,一方面计算粒度越来越小,另一方面底层设备越来越快。降低系统运行时开销,重叠传输和计算成为提高效率的关键。为了实现这个目标,必须使用静态调度和流式引擎。



 

案例在团队中的意义

 

一流科技主要产品为OneFlow最快深度学习引擎,第一个也是唯一一个可以应对大规模数据深度学习训练的流式系统,旨在帮助用户解决人工智能中大数据大模型大计算等问题。一方面,oneflow降低了用户工程师在编写深度学习方面分布式训练程序的门槛;另一方面,系统支持了不同的深度学习网络模型,并实现线性加速, 极大的提高了用户GPU服务器的硬件利用率,打破其他框架中只靠硬件却无法解决的大规模数据计算问题。利用软件框架本身与GPU硬件之间的彼此合作来提高系统的计算容量,将用户算力不足的问题转化为只要通过购买GPU就可以完美的得以解决。