腾讯开源全栈机器学习平台 Angel 3.0,支持三大类型图计算算法

代码模型 shijie ⋅ 于 4周前 ⋅ 483 阅读

导读:腾讯开源自研机器学习框架Angel,在稀疏数据高维模型的训练上具有独特优势,擅长推荐模型和图网络模型相关领域。本文带来详细技术解读,来一起讨论吧~

腾讯大数据推动了腾讯从Oracle数据库到自研大数据平台的迁移, 如今已能实现秒级的采集、监控和报表;开源自研机器学习框架Angel,它由腾讯与北京大学联合研发,兼顾了工业界的高可用性和学术界的创新性。

作为面向机器学习的第三代高性能计算平台,腾讯Angel在稀疏数据高维模型的训练上具有独特优势,擅长推荐模型和图网络模型相关领域。当前业界主流的大规模图计算系统主要有Facebook的Big Graph、Power graph、Data bricks的 Spark GraphX等,但这些系统并不都支持图挖掘、图表示学习、图神经网络的三大类型算法。

近日,腾讯大数据团队分享了Angel在图计算领域应用。
file

Angel:
https://github.com/Angel-ML/angel

Angel专注图计算场景

图(Graph)是一个表达能力非常强的结构, 几乎无处不在。图计算就是研究在大规模图数据下,如何高效计算,存储和管理图数据。如微信、QQ是社交网络的图,支付是红包网络、面对面网络、转帐网络等支付网络的图。图计算在QQ上的典型应用则是好友推荐,依据共同好友个数进行判断,共同好友越多,更有可能成为好友。

目前业界的大规模图计算系统主要有Facebook的Big Graph, Power graph, Data bricks的 Spark GraphX, Gemini, 以及阿里的Euler,但这些系统并不都支持三大类型算法,例如图挖掘、图表示学习、图神经网络。

file

在此行业背景之下,专注于复杂图计算场景的腾讯Angel应运而生。Angel是腾讯开源的大规模分布式机器学习平台,专注于稀疏数据高维模型的训练。从性能上来看,Angel优于现有图计算系统,能够支持十亿级节点、千亿级边的传统图挖掘算法,以及百亿边的图神经网络算法需求。Angel可运行于多任务集群以及公有云环境,具备高效容错恢复机制,能够进行端到端的训练,新算法容易支持,同时,Angel能够支持图挖掘、图表示、图神经网络算法,具备图学习的能力。

file

Angel的PS是针对高维稀疏模型设计的, 而大图是非常高维、有多达十亿的节点,也是稀疏的, 因此PS架构也适合处理图数据。图算法有多种类型,如图挖掘算法、图表示学习、图神经网络。由于Angel的PS有自定义接口, 可以灵活地应对这几类算法,整个平台不需要改动,只要实现所需接口即可。关于可靠性问题,Angel从一开始就是针对共享集群、公有云环境设计的, 并与Spark的结合. Spark也具有很强的稳定性。易用性主要指与上下游是否完整配套。Spark On Angel可以与大数据处理结合,PyTorch On Angel可以跟深度学习结合,将把大数据计算、深度学习统一起来,用户不用借助第三方平台就能完成整个流程, 易用性好。

Angel可以运行在Yarn/Kubernetes环境上,它上面现在支持三类算法

  • 图挖掘: PageRank、Kcore、Closeness,共同好友、三角结构、社团发现、其他;
  • 图神经网络: GCN、GraphSage、DGI等神经网络算法;
  • 图表示学习: LINE、Node2Vec算法。

Angel的架构,最上面是一个参数服务器,下面分别是PyTorch on Angel和Spark on Angel。图计算前期有繁锁的预处理,用户偏好Spark或者GraphX。Angel将PS和Spark结合,整合Spark大数据能力和PS服务器能力,统一了图计算流程。PyTorch on Angel是为图神经网络而设计的,运行在Spark on Angel之上。图神经网络最近发展迅速, 但大规模的图神经网络会遇到大数据问题,也会遇到机器学习问题. 将Angel和PyTorch结合起来,就可以同时应对大数据与机器学习问题. 右边是PyTorch on Angel的架构。上面是所支持的算法,包括GCN、GraphSage、R-GCN和一些无监督算法。

从平台的易用性角度考虑。图计算任务的执行流程复杂,通常包括数据预处理, 如去除重复边、过滤异常点,图划分等。在某些场景下还会计算节点的特征、计算结点或边的权重/测度,如PageRank。另一些场景需要对图做拼接、生成等。最后才是图神经网络的训练。在做图神经网络训练时,训练只是其中很小的一部分,需要在上下游花费比较多的精力。其他图计算引擎,只是关心图计算这一个核心步骤; 而Angel将整个流程整合在一套系统里,一个任务把这个事情都做完,避免这些任务之间衔接的开销,也不用中间结果落地。这是Angel跟大数据生态、深度学习生态结合带来的好处。

从可靠性的角度,图算法对错误的容忍度较低,不应该发生错误。但因为节点多,维度高, 大规模图计算容错成本很高。Spark有一套容错机制,任务如果挂掉,可以重起。Angel PS也有一套容错机制,即写checkpoint。在图算法里,不同的数据结构的使用或访问方式不一样,有些数据是不变的, 如图结构, 但有些数据会改变, 比如模型、消息。对于不同的数据,Angel采取不同的容错方法。对于图神经网络与图表示学习,可以稍微的容忍它出现一些错误。但图挖掘算法,可能错误容忍度比较低,需要一些高的容错。

Angel 中的图计算算法

图算法比较多,先将这些算法分类,每一类采取不同的优化方式去实现和优化。

file

第一类是三角结构类,数三角形。这类算法是暴力算法, 没有捷径可走。例如共同好友就是三角结构。基于三角结构可以实现一系列算法, 如Cluster Rank, Clustering coefficient, Ego Network.

第二类算法是连通分量,有WCC和SCC。这类算法核心的思想是要做图的折叠或者图的压缩。这类算法有一定的捷径可走,发现连通结点后,就可以进行合并,迭代时图在会不断变小,就可以加快迭代速度。

第三类算法是节点的排序。比如PageRank、KCore、Closeness,这类算法的迭代轮数较多,可能好几百轮。有一些方法加速它,主要有两种,一种是有没有办法让它的迭代变得少一点,另一种是有没有办法让它每一轮迭代越来越快。

第四类算法是图表示学习的算法, 也是没有捷径可走, 主要考虑一些图的划分策略。像GNN,也归为一类

最后一类算法是图神经网络。图有很多节点,每个节点都有自己的特征。经过一层层的图卷积,每个节点上的特征就输出一个表示,再经过一层图卷积,又输出另外一层表示,不断的改变图每一个节点的表示,最后根据任务类型需求,对每一个节点的表示把它都加起来,再做softmax,对全图做分类。对任何两个节点,算他们俩俩相交,计算它们的概率,预测它们俩是不是有边。它的核心是一个图,一层卷积,两层卷积,然后输出。图神经网络的问题是图数据规模比较大,需要做深度学习。

Angel 图计算性能

效果对比,跟GraphX做了对比,也与其他系统做过对比。

file
▲PageRank性能是GraphX的8倍左右

(数据集:8亿节点120亿网络;机器配置:E5-2680v42/16G16/4T12/10GE2)

图神经网络/图表示学习性能对比:

file
▲(数据集:8亿节点120亿网络;机器配置:E5-2680v42/16G16/4T12/10GE2)

雅虎有一篇论文,按照论文实现了一遍,性能不好,优化后性能大概提升了5-6倍。图神经网络,用Angel,跟阿里的Euler系统对比,在比较小的网络,(1亿边),性能差距还是比较大的,如果在100亿的图,因为它消耗的资源比较多,就没有跑出来,Angel每一轮都跑出来了。


来源:新智元@微信公众号


推荐阅读:
轻松看懂机器学习十大常用算法
机器学习算法部署平台 Cortex 更新,支持 TensorFlow、Pytorch 等主流框架
论文推荐 | 谷歌模型部署新论文;神经网络不确定性估计新方法;将量子电路转为机器学习模型

file
△ 关注极市平台
获得最新CV干货

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!