业界良心!腾讯高性能计算平台Angel开源啦!

来自:IT程序猿

程序猿(ID:imkuqin) 猿妹 采编

参考:腾讯 Angel 官方 Github、腾讯开源、腾讯大数据

腾讯的高性能分布式计算平台Angel 1.0自去年公开宣布后,近日已经正式全面开源。


Angel是一个基于参数服务器(Parameter Server)理念开发的高性能分布式机器学习框架,基于 Java 和 Scala 开发,能在社区的 Yarn 上直接调度运行,并基于 PS Service ,支持 Spark on Angel ,未来将会支持图计算和深度学习框架集成。


Github : https://github.com/Tencent/angel 




在去年公开消息至今,Angel 已经在腾讯视频推荐、广点通等精准推荐业务上实际应用。他们还在扩大腾讯内部的应用范围,未来目标是支持包括腾讯在内多家公司的大规模机器学习任务。


现在开源的Angel 1.0.0正式版也新增了许多机器学习算法的集成。用户可以方便地在最优化算法上层封装自己的模型。据腾讯数据平台部总经理、首席数据专家蒋杰的介绍,Angel 还可以支持运行 Caffe、TensorFlow、Torch 等深度学习框架,实现这些框架的多机多卡的应用场景。一起来看看 Angel 有哪些技术特点!



Angel主要技术特点



 1、整体架构


Client 作为 Angel 的客户端,它给应用程序提供了控制任务运行的功能。Worker 负责具体的模型训练或者结果预测;Master 则负责具体的任务分配、协调调度、资源申请。



Angel 采用的 Parameter Sever 架构相比其它类型的架构更适合解决巨大模型中的参数更新问题;Parameter Server 功能:

● 基于 Matrix/Vector 的模型自动切分和管理,兼顾稀疏和稠密两种格式

● 支持对 Model 进行 Push 和 Pull 操作,可以自定义复杂的 psFunc

● 提供多种同步控制机制(BSP/SSP/ASP)



针对不同维度的特征,对 Angel 与 Spark 每轮迭代时间和整体收敛时间做出比较通过数据可见,模型越大 Angel 对比 Spark 的优势就越明显。



2、系统框架



3、算法库及优化


现在开源的Angel 1.0.0正式版也新增了Logistic Regression、SVM、KMeans、LDA、MF、GBDT 等机器学习算法的集成:

● 集成 Logistic Regression,SVM,KMeans,LDA,MF,GBDT 等机器学习算法

● LDA 采用了 F+LDA 算法用于加速采样的速度,同时利用流式参数获取的方法减少网络参数获取的延迟

● GBDT 使用两阶段树分裂算法,将部分计算转移到PS,减少网络传输,提升速度

● 多种优化方法,包括 ADMM,OWLQN, LBFGS和GD

● 支持多种损失函数、评估指标,包含 L1、L2 正则项



4、网络优化

Angel的网络解决方案使用的是香港科技大学的 Chukonu。借助 Chukonu,Angel 可以通过网络流量再分配的方式,解决半同步的运算协调机制 SSP 中可能出现的快节点等待慢节点的问题,减少了窗口空闲等待时间。如图所示,在 1 亿维度、迭代 30 轮的效果评测中,Chukonu 使累积的空闲等待时间减少约 3.79 倍。



5、Angel 运行模式


Angel 支持以下两种运行模式:

● ANGEL_PS: PS Service 模式,在这种模式下,Angel 只启动 Master 和 PS,具体的计算交给其他计算平台(如 Spark,Tensorflow)负责,Angel 只负责提供 Parameter Server 的功能。

● ANGEL_PS_WORKER:启动 Master,PS 和 Worker,Angel 独立完成模型的训练。


围绕 Angel,腾讯还建立了一个小生态圈,可以支持 Spark 之上的 MLLib,支持上亿的维度的训练;也支持更复杂的图计算模型。同时依靠Angel,腾讯获得了 2016 年的 Sort benchmark 的排序的4项冠军,用 98.8 秒时间完成了 100T 数据的排序,刷新了四项世界纪录。2015 年的这项排序时间还高达 329 秒。


腾讯开源的Angel给大规模机器学习模型计算的业内人员提供了一个新选择。


Github : https://github.com/Tencent/angel 

推荐↓↓↓
人工智能与大数据
上一篇:京东无人配送车完成首批快递,刘强东语出惊人:五年后,给你送货的都是机器人 下一篇:机器人战胜人类时间表:2061年完成所有人类任务