程序猿(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 有哪些技术特点!
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 (点击尾部阅读原文前往)
●本文编号2443,以后想阅读这篇文章直接输入2443即可。
●输入m获取文章目录
大数据技术
更多推荐《18个技术类微信公众号》
涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。