感谢大家对本网站五年来的支持,本网站所有购买的快递都是稳定可靠!

首页 > 空包网哪个好 > 淘宝快递空包:超50万行代码、GitHub 4200星:腾讯重磅发布全栈机器学习平台Angel 3.0

空包网哪个好

淘宝快递空包:超50万行代码、GitHub 4200星:腾讯重磅发布全栈机器学习平台Angel 3.0

更新时间:2019/8/24 / 阅读次数:157

  淘宝快递空包 :一个全栈的机器学习平台,即日悄悄上线了。


8月22日,腾讯首个AI开源项目Angel正式发布一个里程碑式的版本:Angel 3.0。


Angel在2017年6月正式开源


为了让整个系统加倍的智能,Angel 3.0新增了超参数调节的功能,目前支持3种算法:随机搜索,网格搜索和贝叶斯优化。


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


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


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


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


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


图1 Angel与业界主流平台的对比


Angel 3.0系统架构如图2所示。


 


图2 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和模型服务。


如图3所示,在过去12个月,Angel在腾讯里面的任务数量有了非常明显的增长,增幅到达150%。值得一提的是,Spark On Angel的任务数增长了10倍,为了让Spark On Angel加倍的易用,3.0版本对Spark On Angel做了大幅度升级。在腾讯里面,使用Angel的业务包括腾讯视频,腾讯新闻和微信等。


图3腾讯里面Angel任务数


 


Angel官方维护了一个QQ群与外部开发者进行交流,对群用户的统计表明:


Angel的绝大片面用户来自中国,主要分布在北京,上海,杭州,成都和深圳等互联网行业对照蓬勃的城市。


有超过100家的公司和科研机构在使用或测试Angel,其中包括了中国最顶级的IT公司:微博,华为和百度等。


 


图4 Angel开源用户


 


图5 GitHub上Angel的统计信息以及Angel发表的论文


 


从2017年6月开源以来,Angel受到了较多的关注,目前在GitHub上Star数超过4200,Fork数超过1000。Angel项目目前总共有38位代码贡献者,其他包括8位committer,他们总共提交了超过2000个commit。


 


从1.0到3.0,Angel发生了巨大的变化,它从一个单一的模型训练平台发展到涵盖机器学习各个流程,包含自己生态的通用计较平台,代码量也超过了50万行。为了后续维护和使用的方便,Angel拆分成8个子项目,统一放在Angel-ML目录下(https://github.com/Angel-ML):angel,PyTorch On Angel,sona,serving,automl,mlcore,math2和format,这些子项目会在下文详细介绍。


 


图6 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作为计较核心,主要负责推荐平台深度学习算法和图深度学习算法。


 


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


基于统计的运算符,包括VarianceSelector和FtestSelector


基于模型的运算符,包括LassoSelector和RandomForestSelector


 


大多数在线推荐系统经常选定线性算法,例如逻辑回归作为机器学习模型,但逻辑回归需要复杂的特性工程才能实现较高的精度,这使得自动特性合成至关重要。但是,现有的自动化的高阶特性合成方法带来了维度灾祸。为打听决这个问题,Angel实现了一种迭代生成高阶合成特性的方法。每次迭代由两个阶段组成:


 扩增阶段:任意特性的笛卡尔积


缩约阶段:特性选定和特性重索引


 


以下是迭代步骤:


首先任意的输入特性之间通过笛卡尔积生成合成特性。该步骤后,特性数量将以二次方式增加·      接下来,从合成特性中选定最重要的特性子集(使用例如VarianceSelector和RandomForestSelector)


然后,重新索引所选定的特性以减少特性空间


最后,合成特性与原始特性拼接在一起


 


图7自动特性工程流程


 


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


LR


FM


Ours


AUC


0.68


0.69


0.70


表1特性合成效果


 


在Angel 3.0中,我们对Spark On Angel做了大幅度的优化,增加了下面这些新的特性:


Spark On Angel中集成了特性工程。在集成的过程中并不是简单地借用Spark的特性工程,我们为所有的运算支持了长整型索引的向量使其能够训练高维稀疏模型


与自动调参无缝连接


Spark用户能够通过Spark-fashion API毫不费力的将Spark转换成Angel


支持两种新的数据格式:LibFFM 和Dummy


图8 Spark On Angel架构


 


除了这些大的特性,我们也在连接完善Spark On Angel的算法库:增加了一些新的算法,如:Deep & Cross Network (DCN) 和 Attention Factorization Machines (AFM)等;同时对已有的算法做了大量的优化,例如对LINE和K-Core算法进行了重构,重构后的算法性能和稳定性都有大幅度提升。


从图9中可以看出,Spark On Angel中的算法与Spark中的算法存在显著的不同,如:基于Spark On Angel的算法主要是针对推荐和图平台,然而Spark中的算法更通用。


图9 Spark与Spark On Angel算法对照


图10 Spark On Angel算法示例


 


图10提供了一个基于Spark On Angel的分布式算法示例,主要包含以下步骤:


·      在程序开始时启动参数服务器,程序结束时关闭参数服务器


·      将训练集和测试集以Spark DataFrame形式加载


·      定义一个Angel模型并以Spark的参数设置方式为其设置参数。在这个示例中,算法是一个通过JSON定义的计较图


·      使用“fit”方法来训练模型


·      使用“evaluate”方法来评估已训练的模型


 


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


 


图11 Spark On Angel和TensorFlow性能对照


 


我们在两种流行的推荐算法Deep & Wide 和 DeepFM上使用了相像的资源和数据集对照了Spark On Angel和Tensorflow的性能。如图11所示,在Deep & Wide算法上Spark On Angel比Tensorflow快3倍,而在DeepFM算法上Tensorflow运行稍快一些。


PyTorch On Angel是Angel 3.0新增的特性,它主要是为打听决大规模图表示学习和深度学习模型训练问题。


在过去几年时间,图卷积神经网络(GNN)快速发展,一系列的研究论文以及相关的算法问世:例如GCN,GraphSAGE和GAT等,研究和测试结果表明,它们能够比传统图表示学习更好的抽取图特性。腾讯拥有庞大的社交网络(QQ和微信),同时拥有大量对图数据进行分析的需求,而图表示学习正是这些分析的基础,因此腾讯里面对GNN有着强烈的需求,这也是我们开发PyTorch On Angel的主要原因之一。


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


通过对Angel本身状况以及对业界已有系统的分析,我们得到如下结论:


TensorFlow和PyTorch拥有高效的自动求导模块,但是它们不擅长处理高维度模型和稀疏数据


Angel擅长处理高维度模型和稀疏数据,虽然Angel自研的计较图框架(MLcore)也可以自动求导,但是在效率和功能完整性上却不及TensorFlow和PyTorch,无法满足GNN的要求


 


为了将两者的优势结合起来,我们基于Angel PS开发了PyTorch On Angel平台,基本思路是使用Angel PS来存储大模型,使用Spark来作为PyTorch的分布式调度平台,也即是在在Spark的Executor中调用PyTorch来实现计较。


PyTorch On Angel的架构如图12所示:


图12 PyTorch On Angel系统架构


 


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


·      Angel PS:存储模型参数,图结构信息和节点特性等,并且提供模型参数和图相关数据结构的走访接口,例如需要提供两跳邻接走访接口


·      Spark Driver:中央控制节点,负责计较任务的调度和一些全局的控制功能,例如发起创建矩阵,初始化模型,保存模型,写checkpoint以及恢复模型号令


·      Spark Worker:读取计较数据,同时从PS上拉取模型参数和网络结构等信息,然后将这些训练数据参数和网络结构传给PyTorch,PyTorch负责具体的计较并且返回梯度,最后Spark Worker将梯度推送到PS更新模型


 


当然,这些细节都是封装好的,算法开发人员和用户并不需要打听。在PyTorch On Angel平台上开发新算法,只需要关注算法逻辑即可,与开发单机的PyTorch算法并无太大区别。下面给出一个2层GCN算法的实现例子:


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


算法开发实现后,将代码保存为pt文件,然后将pt文件提交给PyTorch On Angel平台就可以实现分布式训练了。


我们已经在PyTorch On Angel上实现了许多算法:包括推荐平台常见的算法(FM,DeepFM,Wide & Deep,xDeepFM,AttentionFM, DCN和PNN等)和GNN算法(GCN和GraphSAGE)。在后续的版本迭代中,我们将会进一步丰富PyTorch On Angel的算法库。


由于结合了PyTorch和Angel的优点,PyTorch On Angel在算法性能方面有很大的优势:对于推荐平台常见的深度学习算法,性能可以到达TensorFlow的4倍以上;对于GNN算法,性能也远好于目前业界开源的同类型平台(具体的性能数据会在开源社区陆续公开)。下图是在公开的数据集criteo kaggle2014(4500万训练样本,100w特性)上做的对比测试:


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


 


除了性能方面的优势,PyTorch On Angel另有一个对照大的优势即是易用性好。如图12所示:PyTorch运行在Spark的Executor中,可以实现Spark图数据预处理和PyTorch模型训练的无缝对接,在一个程序中实现整个计较过程。


 


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


·      网格搜索:网格搜索将整个搜索空间切分为网格,假设超参数是同等重要的。这种方式虽然直观,但有两个明显的缺点:1)计较代价随参数数量的增长而呈指数增长;2)超参数的重要程度常常是不同的,网格搜索可能会花费太多精力来优化不太重要的超参数


·      随机搜索:随机采样超参数组合,并评估抽样组合。虽然这种方法有可能关注更重要的超参数,但是仍无法保证找到最佳组合


图15网格搜索和随机搜索


 


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


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


代理函数。除了常用的两种模型(高斯过程和随机森林),也实现了EM + LBFGS优化高斯过程内核函数中的超参数


效用函数:实现了PI(Probability of improvement),EI(Expected Improvement)和UCB(Upper Confidence Bound)


 


由于每次评估目标函数的计较开支可能较大,如果观察到候选的超参数组合在开始的若干轮迭代中表现不佳,可以提前停止这些候选超参数组合。Angel 3.0版本中实现了这种早停策略。


表2是在逻辑回归算法的实验,调节的超参数是学习速度和学习速度衰减率,结果显示贝叶斯优化的性能优于随机搜索和网格搜索,而随机搜索的结果略优于网格搜索


Random


Grid


GP


AUC


0.926


0.924


0.933


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


 


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


图16 Angel Serving架构


 


Angel Serving主要特性包括:


1)支持多种类型的API走访服务,包括gRPC和Restful 接口;


2)Angel Serving是一个通用的机器学习服务框架,可插拔机制设计使得来自其他第三方机器学习平台的模型可以很容易使用Angel Serving来服务,目前已经支持三种平台的模型:Angel,PyTorch和支持PMML模型格式的平台(Spark、XGBoost等);


3)受TensorFlow Serving的启发,Angel Serving还提供细粒度版本控制策略:包括使用模型的最早,最新以及指定版本进行服务;


4)Angel Serving还提供丰富的的模型服务监控指标,包括:


QPS: 每秒请求数


图17短视频推荐数据处理流程上图所示是腾讯短视频部分的一个使用案例。用户的视频播放日志和上下文信息被及时转发给Kafka,流数据引擎Storm订阅Kafka的数据。Storm是一个及时的特性生成器,它从一个离线的key-value存储中获得用户画像和视频信息,将两者拼接起来生成特性。生成的特性被传输到在线训练系统中来更新在线模型;同时,这些特性也被转存到HDFS作为离线训练的输入。离线模型通常用来初始化在线训练系统,当出现异常时,离线模型还可以用来重置在线系统。本案例用到的推荐算法是FM,训练样本24亿条,特性维度为63611,在Spark上训练耗时10多个小时,应用Angel后减少至1小时。 案例二:金融反欺诈


腾讯里面:用户数和任务数增加1.5倍


腾讯外部:超过100多家公司和机构使用Angel


开源贡献:4200多个star, 8个子项目,1100多个fork,2000多次commits


Angel 3.0新特性:


新的计较引擎:


Angel开源地点:


https://github.com/Angel-ML


空包网 http://www.119kb.cn

上一篇:v8空包网黑产:华为发布AI处理器昇腾910全场景AI计算框架MindSpore

下一篇:拼多多快递空包网浅析:小米半年报发布后 "业绩向左、股价向右"到底啥原因

最新文章

最热文章

收缩
  • 电话咨询

  • 020.66658086