0
雷锋网 AI 科技评论消息,腾讯的高性能分布式计算平台Angel 1.0自去年公开宣布后,今天已经正式开源。发布地址为 https://github.com/Tencent/angel,感兴趣的开发者可以下载或者贡献源码。
用于支持大规模机器学习模型运算
据雷锋网 AI 科技评论了解,腾讯Angel 1.0是腾讯数据平台部与香港科技大学合作、北京大学参与共同开发的分布式计算框架,它的主要设计目标是为了支持超大维度的机器学习模型运算。
Angel的核心设计理念围绕模型。它将高维度的大模型切分到多个参数服务器节点,并通过高效的模型更新接口和运算函数,以及灵活的同步协议,实现机器学习算法的高效运行。
在去年公开消息时,Angel已经支持了SGD、ADMM优化算法,同时提供了一些常用的机器学习模型,现在开源的Angel 1.0.0正式版也新增了Logistic Regression、SVM、KMeans、LDA、MF、GBDT 等机器学习算法的集成。用户可以方便地在最优化算法上层封装自己的模型。
根据腾讯数据平台部总经理、首席数据专家蒋杰的介绍,Angel还可以支持运行Caffe、TensorFlow、Torch等深度学习框架,实现这些框架的多机多卡的应用场景。
Angel基于Java和Scala开发,能在社区的Yarn上直接调度运行,并基于PS Service,支持Spark on Angel,未来将会支持图计算和深度学习框架集成。
根据腾讯大数据部的说法,Angel自去年以来已经在千万级到亿级的特征纬度条件下运行SGD用于实际的生产任务,已经在腾讯视频推荐、广点通等精准推荐业务上实际应用。他们还在扩大腾讯内部的应用范围,未来目标是支持包括腾讯在内多家公司的大规模机器学习任务。
- 整体架构
Angel的整体架构参考了谷歌的DistBelief,这是一种最初为了深度学习而设计、使用了参数服务器来解决巨大模型在训练时更新问题的架构。参数服务器同样可用于机器学习中非深度学习的模型,如SGD、ADMM、LBFGS的优化算法在面临在每轮迭代上亿个参数更新的场景中,需要参数分布式缓存来拓展性能。
如这个系统框图,Client作为客户端可以发送启动或停止、加载或存储模型命令,可以获取运行状态;具体的任务分配、协调调度、资源申请由Master完成;Parameter Sever复杂存储和更新参数,一个Angel计算任务中可以包含多个ParameterSever实例,随着任务启动而生成,随着任务结束而销毁;Work实例负责具体的模型训练或者结果推理,每个Worker可以包含一个或者多个Task,这样的Task可以更方便地共享Worker的公共资源。
机器模型运算中需要反复迭代更新参数。Angel采用的Parameter Sever架构相比其它类型的架构更适合解决巨大模型中的参数更新问题;实际运行中相比参数更新方面有单点瓶颈的Spark平台,Angel能够取得成倍的性能优势,而且模型越大优势越明显。
Angel与Spark做了如下比较:在有5000万条训练样本的数据集上,采用SGD解的逻辑回归模型,使用10个工作节点(Worker),针对不同维度的特征逐一进行了每轮迭代时间和整体收敛时间的比较(这里Angel使用的是BSP模式)。
通过数据可见,模型越大Angel对比Spark的优势就越明显。
- 网络优化
Angel的网络解决方案使用的是香港科技大学的Chukonu。借助Chukonu,Angel可以通过网络流量再分配的方式,解决半同步的运算协调机制SSP中可能出现的快节点等待慢节点的问题,减少了窗口空闲等待时间。
如下图所示,在1亿维度、迭代30轮的效果评测中,可以看到Chukonu使得累积的空闲等待时间大幅度减少,达3.79倍。
以及,Chukonu配合参数服务器,可以让慢的节点有更大的可能获得最新的参数,因此对比原始的SSP计算模型,算法的收敛性得到了提升。下图所示,同样是针对五千万维度的模型在SSP下的效果评测,原生的Angel任务在30轮迭代后(276秒)loss达到了0.0697,而开启了Chukonu后,在第19轮迭代(145秒)就已达到更低的loss。
雷锋网 AI 科技评论了解到,去年Angel发布时,腾讯平台部总经理、首席数据专家蒋杰对腾讯计算平台的发展历程做过介绍。2009到2011年的第一代平台主要目标是规模化,形成了TDW(腾讯分布式数据仓库)这样的架构;2012到2014年第二代平台主要是实时化,把大规模计算搬到平台上,支持了实时性强、规模大的业务需求,但是基于Spark的数据训练就遇到了超大维度时出现瓶颈的问题。
这样,腾讯开始建设新的高性能计算框架,要能支持超大规模数据集,能完成十亿级别维度的训练。这就是腾讯的第三台计算平台Angel。围绕Angel,腾讯还建立了一个小生态圈,可以支持Spark之上的MLLib,支持上亿的维度的训练;也支持更复杂的图计算模型。
也就是依靠Angel,腾讯获得了2016年的Sort benchmark的排序的4项冠军,用98.8秒时间完成了100T数据的排序,刷新了四项世界纪录。2015年的这项排序时间还高达329秒。
腾讯开源的Angel给头疼于大规模机器学习模型计算的业内人员提供了一个新选择。发展自己技术、扩大自己的平台的同时,腾讯也承诺未来的开源力度只会越来越大。
相关文章:
雷峰网版权文章,未经授权禁止转载。详情见转载须知。