毕业论文
您现在的位置:  >> 笛介绍 >> 正文 >> 正文

与TensorFlow功能互补的腾讯an

来源:笛 时间:2023/2/28
北京中科白殿疯医院在哪 http://www.csjkc.com/

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

Angel概述

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

Angel是一个基于ParameterServer(PS)理念开发的高性能分布式机器学习平台,PS架构良好的横向扩展能力让Angel能高效处理千亿级别的模型。Angel具有专门为处理高维稀疏特征特别优化的数学库,性能可达breeze数学库的10倍以上。相比之下,Angel更擅长于推荐模型和图网络模型相关领域(如图1所示),与Tensorflow和PyTouch的性能形成互补。

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

Angel3.0系统架构

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

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

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

图2Angel3.0架构

Angel3.0新特性

自动特征工程:新增特征选择和组合方法,将特征合成、选择和重新索引以pipeline的形式呈现,用来迭代生成高阶合成特征;新的计算引擎:SONA(加强)——特征工程支持索引为Long类型的向量;所有的算法被封装成Spark风格的APIs;SONA上的算法可以作为Spark的补充;PyTONA(新)——PyTONA作为图学习算法的引擎被引入,目前支持GCN和GraphSage,同时也支持推荐领域的算法;自动机器学习:Angel3.0引入了3种超参数调节算法,包括:网格搜索、随机搜索和贝叶斯优化;Angel模型服务:Angel提供一个跨平台的模型服务框架,支持Angel、PyTorch和Spark的模型,性能上与TensorFlowServing相当;Kubernetes:Angel3.0支持Kubernetes,可以在云上运行;

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

具体特性实现

自动特征工程

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

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

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

首先任意的输入特征之间通过笛卡尔积生成合成特征(该步骤后,特征数量将以二次方式增加);接下来,从合成特征中选择最重要的特征子集(使用例如VarianceSelector和RandomForestSelector);然后,重新索引所选择的特征以减少特征空间;最后,合成特征与原始特征拼接在一起。

图4自动特征工程流程

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

表1特征合成结果

SparkOnAngel(SONA)

在Angel3.0中,我们对SparkOnAngel做了大幅度的优化,添加了新的特性:

SparkOnAngel中集成了特征工程。在集成的过程中并不是简单地借用Spark的特征工程,我们为所有的运算支持了长整型索引的向量使其能够训练高维稀疏模型;与自动调参无缝连接;Spark用户能够通过Spark-fashionAPI将Spark转换成Angel;支持两种新的数据格式,即LibFFM和Dummy。

图5SparkOnAngel架构

除了这些大的特征,我们也在持续完善SparkOnAngel的算法库,添加了一些新的算法,例如:DeepCrossNetwork(DCN)和AttentionFactorizationMachines(AFM)等;同时,对已有的算法做了大量的优化。图6提供了一个基于SparkOnAngel的分布式算法示例,主要包含以下步骤:

图6SparkOnAngel算法示例

在程序开始时启动参数服务器,程序结束时关闭参数服务器;将训练集和测试集以SparkDataFrame形式加载;定义一个Angel模型并以Spark的参数设置方式为其设置参数。在这个示例中,算法是一个通过JSON定义的计算图;使用「fit」方法来训练模型;使用「evaluate」方法来评估已训练的模型。在训练完成后,SparkOnAngel将会展示多种模型指标,如:准确率,ROC曲线,AUC等。用户可以保存训练好的模型以便下次使用。

PyTorchOnAngel(PyTONA)

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

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

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

TensorFlow和PyTorch拥有高效的自动求导模块,但是它们不擅长处理高维度模型和稀疏数据;Angel擅长处理高维度模型和稀疏数据,虽然Angel自研的计算图框架(MLcore)也可以自动求导,但是在效率和功能完整性上却不及TensorFlow和PyTorch,无法满足GNN的要求。为了将两者的优势结合起来,我们基于AngelPS开发了PyTorchOnAngel平台,希望通过AngelPS来存储大模型,同时使用Spark来作为PyTorch的分布式调度平台。最终得到PyTorchOnAngel的架构如图7所示:

图7PyTorchOnAngel系统架构

PyTorchOnAngel具有3个主要的组件:

AngelPS:存储模型参数,图结构信息和节点特征等,并且提供模型参数和图相关数据结构的访问接口,例如需要提供两跳邻接访问接口;SparkDriver:中央控制节点,负责计算任务的调度和一些全局的控制功能,例如发起创建矩阵、初始化模型、保存模型、写checkpoint以及恢复模型命令;SparkWorker:读取计算数据,同时从PS上拉取模型参数和网络结构等信息,然后将这些训练数据参数和网络结构传给PyTorch,PyTorch负责具体的计算并且返回梯度,最后SparkWorker将梯度推送到PS更新模型。这些组件都已封装完备,因此在PyTorchOnAngel平台上开发新算法,只需

转载请注明:http://www.0431gb208.com/sjszlfa/3807.html

  • 上一篇文章:
  • 下一篇文章: 没有了