Angel是腾讯大数据部门发布的第三代计算平台,是用 Java 和 Scala 语言开发的面向机器学习的高性能分布式计算框架。腾讯Angel平台采用了参数服务器架构,解决了上一代框架的扩展性问题,支持数据并行及模型并行的计算模式,能支持十亿级别维度的模型训练。
Angel 是一个基于参数服务器(Parameter Server)理念开发的高性能分布式机器学习平台,它基于腾讯内部的海量数据进行了反复的调优,并具有广泛的适用性和稳定性,模型维度越高,优势越明显。Angel 由腾讯和北京大学联合开发,兼顾了工业界的高可用性和学术界的创新性。
Angel 的核心设计理念围绕模型。它将高维度的大模型合理切分到多个参数服务器节点,并通过高效的模型更新接口和运算函数,以及灵活的同步协议,轻松实现各种高效的机器学习算法。
Angel 基于 Java 和 Scala 开发,能在社区的 Yarn 上直接调度运行,并基于 PS Service,支持 Spark on Angel,未来将会支持图计算和深度学习框架集成。
Angel 1.0.0 新特性:
1.ParameterServer 功能
基于 Matrix/Vector 的模型自动切分和管理,兼顾稀疏和稠密两种格式
支持对 Model 进行 Push 和 Pull 操作,可以自定义复杂的 psFunc
提供多种同步控制机制(BSP/SSP/ASP)
2. 开发运行
语言支持:系统基于 Scala 和 Java 开发,用户也可以自由选择
部署方便:可以直接在 Yarn 社区版本中运行,也支持本地调试模式
数据切分: 自动切分读取训练数据,默认兼容了 Hadoop FS 接口
增量训练:训练过程中会自动 Checkpoint,而且支持加载模型后,增量训练
3.PS Service
只启动 PSServer 和 PSAngent,为其他分布式计算平台提供 PS 服务
基于 PS-Service,不需要修改 Spark 核心代码,直接开发 Spark-on-Angel 算法,该模式无缝支持 Breeze 数值运算库
4. 算法库
集成 Logistic Regression,SVM,KMeans,LDA,MF,GBDT 等机器学习算法
多种优化方法,包括 ADMM,OWLQN,LBFGS 和 GD
支持多种损失函数、评估指标,包含 L1、L2 正则项
5. 算法优化
LDA 采用了 F+LDA 算法用于加速采样的速度,同时利用流式参数获取的方法减少网络参数获取的延迟
GBDT 使用两阶段树分裂算法,将部分计算转移到 PS,减少网络传输,提升速度