张维 潘涛 范震坤
摘要 随着互联网技术的发展,各种数据的数据量也在不断增长,大数据成为各行业的重要发展方向之一,如何有效地利用大数据技术,对社会中的各行各业都具有产生巨大推动力的作用。分布式机器学习是随着“大数据”概念兴起的。目前,由于分布式的机器学习算法具有复杂性、多样性以及高维性这样的特点,导致我们从数据中挖掘内在规律比较困难,小型的机器学习算法框架在处理这样的问题上就显得捉襟见肘了。因此,研究适用于大数据背景下的机器学习算法框架成为当下的热点。本文介绍一种面向高维度的机器学习计算框架称为Angel。
【关键词】大数据 分布式计算 机器学习
机器学习也就是通过设计一些能够让计算机自主地去“学习”的一类算法,它们能够通过分析已有的数据,去获得隐藏在这些信息内部的规律,并利用这些规律去对未知的数据进行预测以及分析。随着互联网的高速发展,海量数据的产生以及工业界对于计算速度和计算成本要求的提升,传统的计算机已经很难满足工业界的需求,因此分布式计算技术就应运而生了。分布式计算也即为“并行计算”,其核心思想就是把一个需要巨大计算能力才能解决的计算任务拆解成多许多小的子任务,将这些子任务分配到多个处理器节点上做计算,最后汇总这些计算结果得到最终的结果。分布式计算或者分布式机器学习除了要把计算任务分配到多个处理器上,更重要的是把计算所需要的各种数据(包括训练数据以及中间结果)分布开来。随着谷歌的Map Reduce编程模型和开源的Hadoop分布式计算框架的发布,分布式计算技术逐渐开始普及,并且还呈现出不断发展和完善的趋势。随着工业界对于大数据进行分析和挖掘的需求不断提升,分布式计算和机器学习的结合也就自然而然地成为了学术界和工业界研究的一个重点。目前,基于分布式计算平台的机器学习框架主要有基于Hadoop平台的Mahout、基于Spark平台的MLlib以及由腾讯主导开发的机器学习框架Angel等。本文重点介绍一种称为Angel的面向高维度的机器学习计算框架。
1 Angel框架
为能够支持超大维度的机器学习模型运算,腾讯公司与香港科技大学展开了合作,开发出了面向机器学习的分布式计算框架一一Angel l.0。Angel是使用Java语言开发的面向机器学习算法的计算系统框架,用户可以不改变使用习惯,就像使用Spark以及MapReduce一样,来去完成机器学习算法的模型训练。Angel目前已经能够非常好地支持梯度下降算法、交替乘子法等优化算法,同时Angel也提供了一些常用的模型;如果用户还有其他的自定义需求,也可以在框架中提供的现有的最优化算法上快速方便地去封装自己的模型。Angel在高维度机器学习的各种参数更新过程中,对于不同的计算任务,根据其计算速度有针对性地给那些较慢的计算任务的参数传递提供更多的计算资源,从而能够在整体上大大缩短机器学习算法的运算时间。这一创新的优化调度算法则是源于香港科技大学陈凯教授及其研究小组开发的可感知上层应用的网络优化方案,以及杨强教授领导的针对大规模机器学习算法的研究方案。此外,北京大学的崔斌教授及其学生也参与了Angel项目的共同研发,并提供了巨大的帮助。在测试实验以及实际的生产工作任务中,Angel能够在千万级到亿级的特征纬度条件下运行梯度下降算法,并且它的性能能够达到Spark的数倍到数十倍。
如图l所示,Angel的整体架构主要参考了由谷歌公司研发的DistBelief框架。为深度学习而设计研发的DistBeilef框架使用了参数服务器,从而解决那些深度学习中巨大模型在训练时海量参数的更新问题。由于基于大数据的机器学习算法同样拥有海量的参数,所以这样参数服务器也就不仅仅局限于深度学习算法,同样可用于基于大数据的机器学习算法中的模型了。比如在梯度下降算法、交替乘子法以及拟牛顿法等优化算法的计算过程中面临着每一轮迭代需要对上亿个参数进行更新,这就需要使用参数服务器来将参数分布式缓存以提高算法的性能。Angel框架在运算过程中支持批量同步并行、全异步并行、延迟同步并行这三种计算并行計算,其中卡耐基梅隆大学的邢波教授在Petuum项目中曾经验证了延迟同步并行计算模型,它能够在机器学习的这种特定运算场景下提升算法的收敛速度,从而提高系统的性能。系统有五个角色:
主控节点:负责资源申请和分配,以及任务的管理。
执行节点:负责任务的执行,以线程的形式存在。
计算节点:独立进程运行于Yam的容器中,是执行节点的执行容器。
参数服务器:伴随着一个任务的启动而生成,任务结束而销毁,负责在算法的训练过程中的更新和存储各种参数。
计算节点组:它是一个虚拟的概念,由若干个计算节点组成,元数据由主控节点维护。为模型的并行拓展考虑,在同一个计算节点组内所有计算节点所运行的训练数据都是一样的。虽然在Angel已经提供了一些通用的模型,但并不能满足所有用户的需求,而用户自定义的模型也可以实现Angel的通用接口,形式上等同于MapReduce或Spark。
1.1 友好的用户交互逻辑
1.1.1 自动化数据切分
Angel系统为用户提供了自动切分训练数据的功能,方便用户进行数据并行运算:系统默认兼容了Hadoop FS接口,原始训练样本存储在支持Hadoop FS接口的分布式文件系统如HDFS。
1.1.2 丰富的数据管理
训练的样本数据存储在分布式的文件系统中,该系统在计算前将样本数据从文件系统读取到计算进程中,缓存在内存里以加速迭代运算;如果内存中缓存不下,则将这部分数据暂存到本地磁盘内,并且不需要向分布式文件系统再次发起通讯请求。
1.1.3 丰富的线性代数以及优化算法库
Angel更提供了能够高效计算向量及矩阵的运算库,能够方便用户自由地去选择数据和参数的表达形式。在优化算法方面,Angel已实现了梯度下降法、交替乘子法;而在模型选择方面,支持了文档主题生成模型、矩阵分解模型、逻辑回归模型以及支持向量机等。
1.1.4 可选择的计算模型
综述中我们提到了,Angel的参数服务器可以支持批量同步并行、全異步并行、延迟同步并行计算模型。
1.1.5 更细粒度的容错
在系统中容错主要分为主控节点的容错,参数服务器的容错,计算节点进程内的参数的缓存以及远程过程调用的容错。
1.1.6 友好的任务运行及监控
Angel也具有友好的任务运行方式,支持基于Yam的任务运行模式,同时,Angel的Web页面也可以方便用户查看集群计算的进度。
1.2 内存优化
在运算过程中为减少对于内存的消耗以及提升单次运算的运算收敛性使用了异步无锁的Hogwildl模式。它允许在多个CPU上并行执行梯度下降的参数更新。因为多个CPU之间不可能重写有用的信息,因此处理器可以访问共享的内存。在大多数情况下,这样的更新策略可以达到一个非常优秀的收敛速率。同一个运算进程中的N个执行节点如果在运算中都能够各自保持一个独立的参数快照,那么对参数的内存开销就减少了N倍,在训练模型参数维度越大时消耗减少的就越明显。在梯度下降的优化算法中,训练数据绝大多数情况下是稀疏的,因此参数更新冲突的概率就大大降低了,即便冲突了也都是朝着梯度下降的方向更新的,从而总能达到收敛。在实际的使用中,让多个执行节点在一个进程内共享同一个参数快照,这样能够明显减少内存的消耗并且提升收敛速度。
1.3 网络优化
(l)进程内的执行节点运算之后的参数,更新合并之后推送到参数服务器更新,这样大大减少了执行节点所在机器的上行所需要的消耗,同样的也减少了参数服务器的下行消耗,同时减少在推送更新的过程中的峰值传输瓶颈的次数。
(2)通过更深一步的网络优化解决延迟同步并行的问题:由于延迟同步并行是一种半同步的运算调度机制,能够在有限的窗口训练参数,当运算快的节点达到窗口边缘时,任务就必须要停下来等待最慢的节点去更新最新的参数。面对这样的问题,我们通过网络流量的再分配来加速较慢的工作节点。我们分配给较慢的节点更高的带宽;那么比较快的工作节点就分配更少的带宽。这样快的节点与慢的节点之间迭代次数的差距就可以进行有效的控制,减少了发生等待的概率,也就是减少了工作节点由于延迟同步并行窗口而空闲等待时间。
2 总结
大数据,机器学习作为当下的热门,需要有一套科学合理的算法框架来满足社会需求,让数据处理变得更具效率。针对大数据的各个特点,通过运用分布式计算让数据变得更具条理,更加易于计算,数据处理分析难度得到有效降低,大大提高机器学习的能力。本文介绍的这三种基于大数据的机器学习分布式计算框架各有优缺点,都是为了去满足大数据以及机器学习对于工业界生产的需求。只有不断去发展我们的算法框架,满足不断提高的需求,才能让其在大数据时代进发出强劲活力。
参考文献
[1] Dean J,
Ghemawa t S.
MapReduce:simplified data processing on largeclusters [J] .
Communications of- theACM, 2008, 51 (01) : 107-113.
[2] Shvachko K, Kuang H, Radia S, etal. The hadoop distributed filesystem [Cl//Mass storage systems andtechnologies
(MSST) ,
2010 IEEE 26thsymposium on. Ieee, 2010: 1-10.
[3] AsseFi M. Behravesh E, Liu G. etal. Big data machine learning usingapache spark MLlib [C] //Big Data(Big Data) ,
2017 IEEE InternationalConference on. IEEE, 2017: 3492-3498.
[4] Jiang J, Yu L, Jiang J, et al.Angel: a new large-scale machinelearning system[Jl. National ScienceReview, 2017, 5 (2) : 216-236.
[5] Khumoyun A, Cui Y. Hanku L.Spark based distributed deeplearning framework for big dataapplica tions [C] //Informa tion Scienceand Communications Technologies(ICISCT) ,
Interna tional
Conferenceon. IEEE, 2016: 1-5.
[6] Xing E P, Ho Q, Dai W, et al.Petuum: A new platform fordistributed machine learning on bigdata [J] . IEEE Transactions on BigData, 2015, 1 (2) : 49-67.