Angel 是一个基于参数服务器(Parameter Server)理念开发的高性能分布式机器学习平台
授权协议:BSD
开发语言:Java
操作系统:跨平台
开发厂商:腾讯
Angel 是一个基于参数服务器(Parameter Server)理念开发的高性能分布式机器学习平台,它基于腾讯内部的海量数据进行了反复的调优,并具有广泛的适用性和稳定性,模型维度越高,优势越明显。 Angel 由腾讯和北京大学联合开发,兼顾了工业界的高可用性和学术界的创新性。
Angel 的核心设计理念围绕模型。它将高维度的大模型合理切分到多个参数服务器节点,并通过高效的模型更新接口和运算函数,以及灵活的同步协议,轻松实现各种高效的机器学习算法。
Angel 基于 Java 和 Scala 开发,能在社区的 Yarn 上直接调度运行,并基于 PS Service ,支持 Spark on 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给大规模机器学习模型计算的业内人员提供了一个新选择。
放弃 Dubbo,选择 Spring Cloud 微服务架构实践与经验总结
TIOBE 11 月编程语言排行榜,脚本语言怎么了?
用 vue 做一个酷炫的 menu
用 Electron 打造 Win/Mac 应用,从「代码」到可下载的「安装包」
深度解读 Tomcat 中的 NIO 模型
来源: https://juejin.im/entry/5a154897f265da43052e4604