当前位置 博文首页 > 点点的博客:机器学习平台Angel 3.0

    点点的博客:机器学习平台Angel 3.0

    作者:[db:作者] 时间:2021-08-29 19:29

    Angel (https://github.com/Angel-ML)是基于参数服务器架构的分布式计算平台,致力于解决稀疏数据大模型训练以及大规模图数据分析问题,它由腾讯与北京大学联合研发,兼顾了工业界的高可用性和学术界的创新性。

    Angel是腾讯开源的大规模分布式机器学习平台,专注于稀疏数据高维模型的训练。目前Angel是Linux基金会人工智能(LFAI)孵化项目,相比于TensorFlow, PyTorch和Spark等业界同类平台,它有如下特点:

    1、Angel是一个基于Parameter Server(PS)理念开发的高性能分布式机器学习平台,它具有灵活的可定制函数PS Function(PSF),可以将部分计算下推至PS端。PS架构良好的横向扩展能力让Angel能高效处理千亿级别的模型。

    2、Angel具有专门为处理高维稀疏特征特别优化的数学库,性能可达breeze数学库的10倍以上。Angel的PS和内置的算法内核均构建在该数学库之上。

    3、Angel擅长推荐模型和图网络模型相关领域(如社交网络分析)。图1是Angel和几个业界主流平台在稀疏数据,模型维度,性能表现,深度模型和生态建设几个维度的对比。Tensorflow和PyTouch在深度学习领域和生态建设方面优势明显,但在稀疏数据和高维模型方面的处理能力相对不足,而Angel正好与它们形成互补,3.0版本推出的PyTorch On Angel尝试将PyTorch和Angel的优势结合在一起。

    Angel与业界主流平台的对比
    在这里插入图片描述
    Angel 3.0系统架构
    在这里插入图片描述
    Angel自研的高性能数学库是整个系统的基础,Angel的PS功能和内置的算法内核均是在这个数学库基础之上实现的。

    Angel PS提供了高效,稳定和灵活的参数存储和交换服务。在3.0版本中,我们对Angel PS功能进行了扩展,使得它可以存储任意类型的对象,一个典型的例子是在图算法的实现过程中,我们使用Angel PS来存储了大量复杂的对象。

    MLcore是Angel自研的一套算法内核,它支持自动求导,可以使用JSON配置文件定义和运行算法。除此之外,在3.0版本中,Angel还集成了PyTorch作为计算引擎。在计算引擎层之上是计算框架,它们可以看作计算引擎的容器,目前支持3种计算框架:原生的Angel,Spark On Angel(SONA)和PyTorch On Angel(PyTONA),这些计算框架可以使得Spark和PyTorch用户可以无缝切换到Angel平台。最上层是两个公共组件:AutoML和模型服务。

    Angel 3.0新特性
    在这里插入图片描述
    图6提供了一个Angel 3.0特性的整体视图。Angel 3.0试图打造一个全栈机器学习平台,它的功能特性涵盖了机器学习的各个阶段:特征工程,模型训练,超参数调节和模型服务。

    Angel的特征工程模块基于Spark开发,增强了Spark的特征选择功能,同时使用特征交叉和重索引实现了自动特征生成。这些组件可以无缝地整合进Spark的流水线。为了让整个系统更加的智能,Angel 3.0新增了超参数调节的功能,目前支持3种算法:随机搜索,网格搜索和贝叶斯优化。在模型服务方面,Angel 3.0提供了一个跨平台的组件Angel Serving, Angel Serving不仅可以满足Angel自身的需求,还可以为其他平台提供模型服务。

    在生态方面,Angel也尝试将PS能力赋能给其他的计算平台,目前已经完成了Spark On Angel和PyTorch On Angel两个平台的建设。这两个平台各有优势和侧重, Spark On Angel使用的是Angel内置的算法核心,主要负责常见推荐领域的机器学习算法和基础图算法。PyToch On Angel使用PyTorch作为计算核心,主要负责推荐领域深度学习算法和图深度学习算法。

    总结:

    Angel 3.0新特性:

    自动特征工程:新增特征选择和组合方法,将特征合成、选择和重新索引以pipeline的形式呈现,用来迭代生成高阶合成特征

    新的计算引擎:

    SONA(加强):特征工程支持索引为Long类型的向量;所有的算法被封装成Spark风格的APIs;SONA上的算法可以作为Spark的补充
    PyTONA(新):PyTONA作为图学习算法的引擎被引入,目前支持GCN和GraphSage,同时也支持推荐领域的算法。PyTONA采用Python作为交互,因此是用户友好的
    自动机器学习:Angel3.0引入了3种超参数调节算法:网格搜索、随机搜索和贝叶斯优化
    Angel模型服务:Angel提供一个跨平台的模型服务框架,支持Angel、PyTorch和Spark的模型,性能上与TensorFlow Serving相当
    支持Kubernetes : Angel3.0支持Kubernetes,从而可以在云上运行

    Angel开源地址:https://github.com/Angel-ML

    cs