机器之心报道
机器之心编辑部
近年来,随着深度学习技术的发展,越来越多的科技巨头开发自己的机器学习平台。昨日,华为宣布将与明年第一季度开源自家的 AI 框架 MindSpore,引起极大关注。
除了华为,国内的科技巨头腾讯也于近日正式发布开源平台 Angel 3.0,试图打造全栈机器学习平台,功能特性涵盖机器学习的各个阶段:特征工程,模型训练,超参数调节和模型服务。
Angel 平台是腾讯数据平台部于 2016 年底推出的面向机器学习的「第三代高性能计算平台」,并于 2017 年开放了其源代码。
项目链接:https://github.com/Angel-ML
Angel 3.0 新特性
据腾讯介绍,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 平台。
其中,Spark On Angel 使用的是 Angel 内置的算法核心,主要负责常见推荐领域的机器学习算法和基础图算法。PyToch On Angel 使用 PyTorch 作为计算核心,主要负责推荐领域深度学习算法和图深度学习算法。
最上层是两个公共组件:AutoML 和模型服务。
据腾讯介绍,Angel 3.0 的发布意在打造一个全栈的机器学习平台,它的功能特性涵盖了机器学习的各个阶段:特征工程,模型训练,超参数调节和模型服务。下图总结了 Angel 3.0 的新特性,红色的表示新增特性,白色的表示已有的但在持续改进的特性。
Angel 的特征工程模块基于 Spark 开发,增强了 Spark 的特征选择功能,同时使用特征交叉和重索引实现了自动特征生成,这些组件可以无缝地整合进 Spark 的流水线。
为了让整个系统更加的智能,Angel 3.0 新增了超参数调节的功能,目前支持 3 种算法:随机搜索、网格搜索和贝叶斯优化。
在模型服务方面,Angel 3.0 提供了一个跨平台的组件 Angel Serving,Angel Serving 不仅可以满足 Angel 自身的需求,还可以为其他平台提供模型服务。
对比 TensorFlow、PyTorch
当前,TensorFlow、PyTorch 已经成为机器学习社区最主流的框架。腾讯表示,相比于 TensorFlow, PyTorch、Spark 等业界同类平台,它有如下特点:
自 2016 年年初在腾讯内部上线以来,Angel 已应用于微信支付、QQ、腾讯视频、腾讯社交广告及用户画像挖掘等业务。2017 年 6 月,Angel 在 Github 上正式开源。2018 年 9 月,Angel 2.0 版本发布,支持千亿级模型维度训练,同时算法库也更加丰富,首次引入了深度学习算法和图算法。截至目前,Angel 在 GitHub 上 Star 数已超过 4200,Fork 数超过 1000,代码量也超过了 50 万行。