当前位置: 首页 > 文档资料 > Angel 中文文档 >

图计算

优质
小牛编辑
132浏览
2023-12-01

Angel-Graph

如今,我们身处万物互连的复杂网络世界,人和人、人和物、物和物之间的关系也变得更加复杂多样化,现实中许多问题都可以抽象为图来表达,通过传统图挖掘、图表示学习和图神经网络等图技术,我们可以从海量关系结构的数据中挖掘丰富的信息,以弥补单点分析的不足,最终对金融支付、安全风控、推荐广告等诸多业务场景产生助力。

概览

Angel Graph吸收了Angel参数服务器以及Spark、PyTorch优势,使得传统图计算、图表示学习和图神经网络“三位一体”,实现了高性能、高可靠、易用的大规模分布式图计算框架。

Angel Graph有以下核心能力:

  • 复杂异构网络。工业界的图数据组成复杂多样,数据规模往往具有十亿级顶点、百亿甚至千亿级边。Angel Graph通过Spark On Angel或Pytorch进行分布式训练,可以轻松支持十亿级顶点、千亿级边的大规模图计算。
  • 端到端的图计算。工业界的大数据生态多为Spark、Hadoop。Angel Graph基于Spark On Angel的架构,可以无缝衔接Spark,以便利用Spark 的ETL能力,支持端到端的图学习。
  • 传统图挖掘。支持十亿级顶点、千亿级边的传统图算法,如PageRank、Kcore分析节点重要性,Louvain进行社区发现等。提供对顶点的测度分析和丰富的图特征,以便应用到机器学习或推荐风控等业务模型中。
  • 图表示学习。支持十亿级顶点,千亿级边的Graph Embedding算法,如LINE、Word2Vec等。
  • 图神经网络。支持十亿级顶点,数百亿边的图神经网络算法,利用顶点或边上丰富的属性信息进行深度学习。

系统介绍

如下图所示,Angel Graph利用Spark和Pytorch,下层Spark Worker,上层为Angel参数服务。

angel-graph

Angel Graph中的Spark On Angel模块将Angel灵活的参数服务器插件式地赋能给原生Spark,为Spark提供了高效的数据存储/更新/共享服务,因而非常适用于分布式图计算框架。同时Spark On Angel又沿用了原生Spark的变成接口,使得在该框架上的算法开发可以利用Spark的能力。

Spark组件

  • Spark Driver:负责控制整体计算逻辑

  • Spark Executor:在进行传统图计算和图表示学习时,Spark Executor存储图邻接表/边表等不可变的数据结构,在每轮迭代中从PS拉取(pull)所需的节点属性等数据,在本地完成计算后将结果推送(push)回PS,交由PS进行更新。在图神经网络算法训练时,Pytorch C++后端作为实际的计算引擎以native的方式运行在Spark Executor中

Angel组件

  • Angel Master:管理参数服务器的生命周期
  • Angel PS(Parameter Server):将节点属性等可变数据以向量的抽象形式储存(支持存储自定义的元素数据结构,支持负载均衡分区),通过Angel特有的PS函数实现节点属性in-place更新及其他根据特定算法定制的灵活计算
  • Angel Agent:作为代理桥接Spark Executor和Parameter Server

Pytorch组件

  • Python Client:利用TorchScript语法编写算法模型,交给Spark Executor加载,并通过Angel PS完成模型的分布式训练和预测。

内置图算法

为了方便使用图计算框架,我们实现了许多常用图算法,并且在内部业务中进行了充分测试,保证了算法的运行效率和正确性。用户使用时无需过多调整,便可快速使用。

算法名称算法类型说明
PageRank节点重要性计算经典的传统图算法
Hindex节点重要性计算混合量化指标,参考H指数
Kcore节点特征提取网络中关键子结构
Louvain社区发现通过优化模块度指标达到社区划分的目的
Closeness接近中心性度量顶点在图中的中心程度
CommonFriends共同好友计算计算两个顶点的共同好友数
TriangleCountingUndirected三角计数计算每个顶点所在的三角结构个数
LPA标签传播一种社区发现或传播算法
ConnectedComponents弱连通分量挖掘图的弱连通分量
LINE表示学习可利用1阶,2阶邻居信息进行表示学习
Word2Vec表示学习一种经典的表征学习算法
GraphSage图神经网络算法通过聚合节点邻居的特征进行表示学习
GCN图神经网络算法类似CNN操作,并应用到图非欧空间的算法
DGI图神经网络算法DIM应用到复杂网络领域

BenchMark性能测试

我们在两份真实的数据集下对比Graphx和Angel Graph的性能,其中DS1为8亿顶点,110亿边金融支付网络;DS2为20亿顶点,1400亿边的社交网络,性能测试结果如下所示:

angel-graph-benchmark

有关Angel Graph的详细介绍,可以参考这篇论文 PSGraph: How Tencent trains extremely large-scale graphs with Spark?

项目地址:https://github.com/Angel-ML/angel
官网:https://angelml.ai/