Skip to content

Latest commit

 

History

History
45 lines (24 loc) · 2.8 KB

design.md

File metadata and controls

45 lines (24 loc) · 2.8 KB

Angel的设计理念


PS Service

Angel支持两种运行模式:ANGEL_PS & ANGEL_PS_WORKER

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

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

同步协议

  • 支持多种同步协议:除了通用的BSP(Bulk Synchronous Parallel)外,为了解决task之间互相等待的问题,Angel还支持SSP(Stale Synchronous Parallel)和ASP(Asynchronous Parallel)

良好的可扩展性

  • psf(ps function):为了满足各类算法对参数服务器的特殊需求,Angel将参数获取和更新过程进行了抽象,提供了psf函数功能。用户只需要继承Angel提供的psf函数接口,并实现自己的参数获取/更新逻辑,就可以在不修改Angel自身代码的情况下定制自己想要的参数服务器的接口。

  • 自定义数据格式:Angel支持Hadoop的InputFormat接口,可以方便的实现自定义文件格式。

  • 自定义模型切分方式:默认情况下,Angel将模型(矩阵)切分成大小相等的矩形区域;用户也可以自定义分区类来实现自己的切分方式。

易用性

  • 训练数据和模型自动切割:Angel根据配置的worker和task数量,自动对训练数据进行切分;同样,也会根据模型大小和PS实例数量,对模型实现自动分区。
  • 易用的编程接口:MLModel/PSModel/AngelClient

容错设计和稳定性

  • 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拖慢整个任务的计算进度。