资讯 人工智能学术
此为临时链接,仅用于文章预览,将在时失效

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

作者:杨鲤萍
2019/08/28 18:26

雷锋网 AI 开发者按:近日,紧跟华为宣布新的 AI 框架即将开源的消息,腾讯又带来了全新的全栈机器学习平台 angel3.0。新版本功能特性覆盖了机器学习的各个阶段,包括:特征工程、模型训练、超参数调节和模型服务。自 2017 年 angel1.0 在 Github 上开源以来,angel 共获得星标数超过 4200、fork 数超 1000。腾讯发布了相关文章介绍了 angel3.0 更新细节等内容,雷锋网 AI 开发者将其整理编辑如下。

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

Angel 概述

Angel 是基于参数服务器架构的分布式计算平台,专注于稀疏数据高维模型训练以及大规模图数据分析问题,它由腾讯与北京大学联合研发,融合了业界的实用性和学术界的创新性。相比于 TensorFlow, PyTorch 和 Spark 等业界同类平台,Angel 有如下特点:

 与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 1 Angel 与主流平台的性能分布图

Angel 3.0 系统架构

Angel 自研的高性能数学库是整个系统的基础,Angel 的 PS 功能和内置的算法内核均基于该数学库实现。

Angel PS 则提供参数存储和交换服务。在 3.0 版本中,我们对 Angel PS 功能进行了扩展,使得它可以存储任意类型的对象,例如:在图算法的实现过程中,我们使用 Angel PS 来存储大量复杂的对象。ML core 则是 Angel 自研的一套算法内核,它支持自动求导,可以使用 JSON 配置文件定义和运行算法。

除此之外,Angel 3.0 中还集成了 PyTorch 来作为计算引擎。目前它支持 3 种计算框架:原生的 Angel,Spark On Angel(SONA)和 PyTorch On Angel(PyTONA),这些计算框架可以使得 Spark 和 PyTorch 用户能够灵活切换到 Angel 平台。最上层包括了两个公共组件:AutoML 和模型服务。

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 2 Angel 3.0 架构

Angel 3.0 新特性

 与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 3 Angel 3.0 特性概览(红色的表示新增特性,白色的表示已有的但在持续改进的特性)

具体特性实现

自动特征工程

特征工程,例如:特征交叉和选择,对于工业界的机器学习应用具有重要意义。虽然 Spark 提供了一些特征选择算子,但仍有一些局限性,Angel 则基于 Spark 提供了更多的特征选择算子:

大多数在线推荐系统经常选择线性算法,例如逻辑回归作为机器学习模型,但逻辑回归需要复杂的特征工程才能实现较高的精度,这使得自动特征合成至关重要。但是,现有的自动化的高阶特征合成方法带来了维度灾难。

为了解决这个问题,Angel 实现了一种迭代生成高阶合成特征的方法,每次迭代由两个阶段组成,即扩增阶段——任意特征的笛卡尔积;缩约阶段——特征选择和特征重索引;具体迭代步骤为:

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 4 自动特征工程流程

如图 4 所示,这种特征合成方法线性地增加特征数量,避免了维度灾难。在 Higgs 数据集上的实验表明合成的特征能有效地提高模型精度(如表 1 所示)。

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

表 1 特征合成结果

Spark On Angel (SONA)

在 Angel 3.0 中,我们对 Spark On Angel 做了大幅度的优化,添加了新的特性:

 与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 5 Spark On Angel 架构

除了这些大的特征,我们也在持续完善 Spark On Angel 的算法库,添加了一些新的算法,例如:Deep & Cross Network(DCN)和 Attention Factorization Machines(AFM)等;同时,对已有的算法做了大量的优化。图 6 提供了一个基于 Spark On Angel 的分布式算法示例,主要包含以下步骤: 与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 6 Spark On Angel 算法示例

在训练完成后,Spark On Angel 将会展示多种模型指标,如:准确率, ROC 曲线, AUC 等。用户可以保存训练好的模型以便下次使用。

PyTorch On Angel(PyTONA)

PyTorch On Angel 是 Angel 3.0 新增的特性,它主要是为了解决大规模图表示学习和深度学习模型训练问题。在过去几年时间,图卷积神经网络(GNN)快速发展,一系列的研究论文以及相关的算法问世:例如 GCN,GraphSAGE 和 GAT 等,研究和测试结果表明,它们能够比传统图表示学习更好的抽取图特征。

但大规模图的表示学习面临着两个主要的挑战:第一个挑战来自于超大规模图结构的存储以及访问,这要求系统不仅能存得下,还需要提供高效的访问接口;第二个挑战来自于 GNN 计算过程,它需要有高效的自动求导模块。

通过对 Angel 自身状况以及对业界已有系统的分析,我们发现:

为了将两者的优势结合起来,我们基于 Angel PS 开发了 PyTorch On Angel 平台,希望通过 Angel PS 来存储大模型,同时使用 Spark 来作为 PyTorch 的分布式调度平台。最终得到 PyTorch On Angel 的架构如图 7 所示:

 与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 7 PyTorch On Angel 系统架构

PyTorch On Angel 具有 3 个主要的组件:

这些组件都已封装完备,因此在 PyTorch On Angel 平台上开发新算法,只需关注算法逻辑即可。图 8 展示了一个开发案例,算法开发完成后,将代码保存为 pt 文件,然后将 pt 文件提交给 PyTorch On Angel 平台就可以实现分布式训练了。

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 8 在 PyTorch On Angel 上实现 GCN 的例子

目前,我们已经在 PyTorch On Angel 上实现了许多算法:包括推荐领域常见的算法(FM,DeepFM,Wide & Deep,xDeepFM,AttentionFM,DCN 和 PNN 等)和 GNN 算法(GCN 和 GraphSAGE)。在未来,我们将进一步丰富 PyTorch On Angel 的算法库。

结合了 PyTorch 和 Angel 的优点,PyTorch On Angel 在算法性能方面有很大的优势:对于推荐领域常见的深度学习算法,性能可以大大超过了 TensorFlow 。下图是在公开的数据集 criteo kaggle2014(4500 万训练样本,100w 特征)上做的对比测试: 与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 9 PyTorch On Angel 和 TensorFlow 性能对比测试

除了性能方面的优势,PyTorch On Angel 易用性也较好。PyTorch 运行在 Spark 的 Executor 中,可以实现 Spark 图数据预处理和 PyTorch 模型训练的无缝对接,在一个程序中完成整个计算过程。

自动超参数调节

传统超参数调节的方式有两种(如图 10 所示):

 与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 10 网格搜索和随机搜索

贝叶斯优化与传统的无模型方法不同,它使用计算成本较低的代理函数(surrogate function)来近似原始目标函数。在贝叶斯优化中,代理函数生成超参数组合的概率均值和方差。然后,效用函数(acquisition function)将评估超参数组合的预期损失或改进。这样的概率解释方法使贝叶斯优化能够使用较少的成本找到目标函数的较优解。

Angel 3.0 包括传统的两种方法和贝叶斯算法优化。对贝叶斯优化,Angel 实现了以下的功能:

由于每次评估目标函数的计算成本可能较大,如果观察到候选超参数组合在开始的若干轮迭代中表现不佳,可以提前停止这些候选超参数组合。Angel 3.0 版本中实现了该策略。表 2 展示了在逻辑回归算法的实验,调节的超参数是学习速度和学习速度衰减率,结果显示贝叶斯优化的性能优于随机搜索和网格搜索,而随机搜索的结果略优于网格搜索。

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

表 2 不同超参数自动条件方法的效果对比

Angel Serving

为了满足在生产环境中高效地进行模型服务的需求,我们在 Angel 3.0 中实现了 Angel Serving 子系统,它是一个可拓展性强、高性能的机器学习模型服务系统,是全栈式机器学习平台 Angel 的上层服务入口,使 Angel 生态能够形成闭环。图 11 展示了 Angel Serving 的架构设计。 

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

图 11 Angel Serving 架构

Angel Serving 主要特征包括:

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

表 3 Angel Serving 和 Tensorflow Serving 性能对比

表 3 展示了 Angel Serving 和 TensorFlow Serving 性能对比结果,我们使用具有 100 万个特征的 DeepFM 模型,向服务发送 100,000 个预测请求。Angel Serving 和 TensorFlow Serving 的总耗时分别为 56 秒和 59 秒。两个服务系统的平均响应时间都为 2 毫秒。Angel Serving 的 QPS 是 1,900,而 TensorFlow Serving 的 QPS 是 1,800。

Angel 开源地址:

https://github.com/Angel-ML

雷锋网 AI 开发者 雷锋网

长按图片保存图片,分享给好友或朋友圈

与 TensorFlow 功能互补的腾讯 angel 发布 3.0 :高效处理千亿级别模型

扫码查看文章

正在生成分享图...

取消
相关文章