腾讯分布式机器学习平台 Angel

腾讯分布式机器学习平台 Angel

Angel是一个基于参数服务器(Parameter Server)理念开发的高性能分布式机器学习平台,它基于腾讯内部的海量数据进行了反复的调优,并具有广泛的适用性和稳定性,模型维度越高,优势越明显。 Angel由腾讯和北京大学联合开发,兼顾了工业界的高可用性和学术界的创新性。

Angel的核心设计理念围绕模型。它将高维度的大模型合理切分到多个参数服务器节点,并通过高效的模型更新接口和运算函数,以及灵活的同步协议,轻松实现各种高效的机器学习算法。

Angel基于JavaScala开发,能在社区的Yarn上直接调度运行,并基于PS Service,支持Spark on Angel,集成了部分图计算和深度学习算法。

Angel的架构设计

腾讯分布式机器学习平台 Angel

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

  1. Parameter Server层:提供通用的参数服务器服务,负责模型的分布存储,通讯同步和协调计算,并通过PSAgent提供PS Service
  2. Worker层: 基于Angel自身模型设计的分布式运行节点,自动读取并划分数据,局部训练出模型增量,通过PS Client和PS Server通信,完成模型训练和预测。一个Worker包含一个或者多个Task,Task是Angel计算单元,这样设计的原因是可以让Task共享Worker的许多公共资源。
  3. 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,进行算法开发和创新的需求

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

项目地址

https://github.com/Angel-ML/angel

相关推荐