Angel的架构设计


架构设计 - 图1

Angel的整体设计比较简约,层次鲜明,容易上手,没有过多复杂的设计,关注模型和机器学习相关特性,追求高维度模型下的最佳性能。它的架构设计,从整体可以分为3大模块:

  1. Parameter Server层:提供通用的参数服务器服务,负责模型的分布存储,通讯同步和协调计算,并通过PSAgent提供PS Service
  1. Worker层: 基于Angel自身模型设计的分布式运行节点,自动读取并划分数据,局部训练出模型增量,通过PS ClientPS Server通信,完成模型训练和预测。一个Worker包含一个或者多个Task,Task是Angel计算单元,这样设计的原因是可以让Task共享Worker的许多公共资源。
  1. Model层: 这是一层虚拟抽象层,并非真实存在的物理层。关于Model的Push和Pull,各种异步控制,模型分区路由,自定义函数……是连通Worker和PSServer的桥梁。

除了这3大模块,还有2个很重要的类,在图上没有显示,但是值得关注,它们是:

  1. Client:Angel任务运行的发起者

    • 启动和停止PSServer
    • 启动和停止Angel的Worker
    • 加载和存储模型
    • 启动具体计算过程
    • 获取任务运行状态
  1. Master:Angel任务运行的守护者

    • 原始计算数据以及参数矩阵的分片和分发
    • 向Gaia申请Worker和ParameterServer所需的计算资源
    • 协调,管理和监控Worker以及PSServer

通过如上的设计,Angel的整体架构,有着相对良好的可扩展性

  • PSServer层: 通过PS-Service,提供灵活的多框架PS支持
  • Model层: 提供PS必备的功能,并支持对性能进行针对性优化
  • Worker层: 能基于Angel自主API,进行算法开发和创新的需求

因此,分布式计算工程师,可以对核心层进行各种优化;而算法工程师和数据科学家,则可以充分复用这些成果,致力于各种学术界算法技巧的实现,达到最佳的性能和最好的准确率。