一文彻底搞懂Angel机器学习平台
概述
先介绍下Angel的源起
分布式机器学习了解如下图:
机器学习的目标
分布式的三种经典范式
Spark机器学习的瓶颈
Driver成为参数汇总的单点瓶颈, 难以支撑大规模模型及数据
十亿级维度的模型训练, 实际应用中降维处理
Executor之间相互等待, 整体效率不高
1. Angel设计思想理念
Angel的整体设计理念,是简约而不简单,做一个灵活而强大的参数服务器,并在此之上,提供多种机器学习算法,和PS服务,扩展为一个分布式机器学习平台。
因此,在开发之时,Angel从如下5个方向,对整体进行了改进和设计,并在它们之间进行了平衡。包括:
易用性
灵活性
性能
可扩展性
稳定性
另外,Angel设计之初,并没有特地为深度学习量身定做,但随着深度学习日趋流行,而PS模式,也是深度学习实现多机多卡的方向之一,在最新的3.0版本支持了PyTorch。
易用性
训练数据和模型自动切割:Angel根据配置的worker和task数量,自动对训练数据进行切分;同样,也会根据模型大小和PS实例数量,对模型实现自动分区。
易用的编程接口:MLModel/PSModel/AngelClient
灵活性
Angel在设计上,考虑到现有的机器学习框架众多的问题,提供了2种模式。Angel支持两种运行模式:ANGEL_PS_WORKER & ANGEL_PS_SERVICE。通过这2种方式结合,Angel本身的Worker模式,追求最大化的性能优势,主打速度。而PS-Service模式,主打对接,可以接入Spark,TensorFlow,Torch等平台,主打生态,从而实现最大程度的灵活性。
ANGEL_PS_WORKER:启动Master,PS和Worker,Angel独立完成模型的训练。
ANGEL_PS_SERVICE: PS Service模式,在这种模式下,Angel只启动Master和PS,具体的计算交给其他计算平台(如Spark,TensorFlow)负责,Angel只负责提供Parameter Server的功能。
性能
同步协议
支持多种同步协议:除了通用的BSP(Bulk Synchronous Parallel)外,为了解决task之间互相等待的问题,Angel还支持SSP(Stale Synchronous Parallel)和ASP(Asynchronous Parallel)
扩展性
psFunc:为了满足各类算法对参数服务器的特殊需求,Angel将参数获取和更新过程进行了抽象,提供了psf函数功能。用户只需要继承Angel提供的psf函数接口,并实现自己的参数获取/更新逻辑,就可以在不修改Angel自身代码的情况下定制自己想要的参数服务器的接口。
自定义数据格式:Angel支持Hadoop的InputFormat接口,可以方便的实现自定义文件格式。
自定义模型切分方式:默认情况下,Angel将模型(矩阵)切分成大小相等的矩形区域;用户也可以自定义分区类来实现自己的切分方式。
稳定
Angel在稳定性上,做了大量的工作,保证在机器学习过程中,单个Worker和PS挂掉,都不会影响整个作业的进度,而且能最快的找到备用的机器,快速启动,加载模型或者数据,继续训练过程。
PS容错
PS容错采用了checkpoint的模式,也就是每隔一段时间将PS承载的参数分区写到hdfs上去。如果一个PS实例挂掉,Master会新启动一个PS实例,新启动的PS实例会加载挂掉PS实例写的最近的一个checkpoint,然后重新开始服务。这种方案的优点是简单,借助了hdfs 多副本容灾, 而缺点就是不可避免的会丢失少量参数更新。
Worker容错
一个Worker实例挂掉后,Master会重新启动一个Worker实例,新启动的Worker实例从Master处获取当前迭代轮数等状态信息,从PS处获取最新模型参数,然后重新开始被断掉的迭代。
Master容错
Master定期将任务状态写入HDFS,借助与Yarn提供的App Master重试机制,当Angel的Master挂掉后,Yarn会重新拉起一个Angel的Master,新的Master加载状态信息,然后重新启动Worker和PS,从断点出重新开始计算。
慢Worker检测
Master会将收集一些Worker计算性能的一些指标,如果检测到有一些Worker计算明显慢于平均计算速度,Master会将这些Worker重新调度到其他的机器上,避免这些Worker拖慢整个任务的计算进度。
2. Angel 参数服务器
PS(参数服务器)是一个非常通用的架构。在大数据分析计算过程中,经常需要存储和交换大量的参数。现在的机器学习应用基本都会面临模型数据大,训练数据大的难题,那么参数服务器是实现大规模分布式机器学习的一个利器了。Angel就是围绕这样的思想开始做Angel。您可以使用ParameterServer,Angel支持PS服务工作模式:启动Angel应用时,只启动Angel PS和Angel Master,Angel PS负责参数的存储和交换,其他系统负责计算,计算交给其它系统,比如Spark等。
Angel抽象了两个接口,AngelClient和MatrixClient。AngelClient负责启动Angel PS,MatrixClient负责与Angel PS交互。
上图是一个PS基础的架构图
上图是一个PS 与spark的结合
李沐发表过一篇参数服务器http://www.cs.cmu.edu/~feixia/files/ps.pdf
3.Angel计算平台特性
1.高维稀疏特性: 适合大规模、稀疏的动态网络
2.灵活性: 解决异构网络算法需求、支持多种算法类型
3.生态兼容性: 兼备大数据生态和深度学习生态,将二者有机结合
4.高可靠性: 稳定运行于共享集群与云环境
4. Angel 架构设计
Angel的整体设计比较简约,层次鲜明,容易上手,没有过多复杂的设计,关注模型和机器学习相关特性,追求高维度模型下的最佳性能。它的架构设计,从整体可以分为3大模块:
Parameter Server层:提供通用的参数服务器服务,负责模型的分布存储,通讯同步和协调计算,并通过PSAgent提供PS Service
Worker层:基于Angel自身模型设计的分布式运行节点,自动读取并划分数据,局部训练出模型增量,通过PS Client和PS Server通信,完成模型训练和预测。一个Worker包含一个或者多个Task,Task是Angel计算单元,这样设计的原因是可以让Task共享Worker的许多公共资源。
Model层:这是一层虚拟抽象层,并非真实存在的物理层。关于Model的Push和Pull,各种异步控制,模型分区路由,自定义函数……是连通Worker和PSServer的桥梁。
除了这3大模块,还有2个很重要的类,在图上没有显示,但是值得关注,它们是:
Client:Angel任务运行的发起者
启动和停止PSServer
启动和停止Angel的Worker
加载和存储模型
启动具体计算过程
获取任务运行状态
Master:Angel任务运行的守护者
原始计算数据以及参数矩阵的分片和分发
向Gaia申请Worker和ParameterServer所需的计算资源
协调,管理和监控Worker以及PSServer
通过如上的设计,Angel的整体架构,有着相对良好的可扩展性
PSServer层:通过PS-Service,提供灵活的多框架PS支持
Model层:提供PS必备的功能,并支持对性能进行针对性优化
Worker层:能基于Angel自主API,进行算法开发和创新的需求
因此,分布式计算工程师,可以对核心层进行各种优化;而算法工程师和数据科学家,则可以充分复用这些成果,致力于各种学术界算法技巧的实现,达到最佳的性能和最好的准确率。
5.Angle系统架构
6.Angel对算法的支持
Ange以参数服务器为核心,大规模分布式机器学习平台,对算法场景的应用有着很对的沉淀,在腾讯内部有着长期的实践应用,特别是推荐场景的算法,特别的丰富,在3.0也已经支持了图计算的功能及深度学习结合的完善。下面介绍都有哪些算法支持。
上图为Angel算法支持,算法场景丰富,在算法优化上都为腾讯内部实践而来
Angel支持的图算法分别分成五类进行设计如下图
三角结构
连通分类
节点测度
图表示学习
图神经网络
7.Angel Serving
Angel Serving是一个独立的模型服务系统,用于机器/深度学习模型,设计灵活、高性能。
系统架构如下图
下面是模型启动部署命令
$SERVING_HOME/bin/serving-submit \
--port 8500 \
--rest_api_port 8501 \
--model_base_path /path/to/model \
--model_name lr \
--model_platform angel \
--enable_metric_summary true
提供一个Restful Api 服务 ,这样部署方式,适用于使用docker环境部署
8.Angel MLCore
一个独立的机器学习套件,可以很容易地与Angel ps集成,
mlcore的核心是计算图,它执行前向和后向计算,并自动计算梯度。variable和optimizer的抽象使得mlcore可以在任何地方运行,包括单节点、angel、Spark等等。以下是mlcore的体系结构:
pull parameters from local or parameter server (PS)
perform the forward calculation
perform the backward calculation to calculate gradient
push gradient to local or PS
finally, update parameter in local or PS
9.Angel math2
为稀疏计算优化的数学库
10.Angel 腾讯应用场景
上图是在Angel 在腾讯内部基于图的应用场景,Angel 在腾讯内部有这非常广泛的应用,比如广告,微信支付等等。
相关文章: