腾讯高性能图计算框架Plato - 腾讯图计算TGraph正式开源高性能图计算框架Plato,达到业界领先水平,超大规模图计算全面进入分钟级时代。
Plato开源地址:https://github.com/tencent/plato
Plato高性能图计算框架主要有以下贡献:
Plato能高效地支撑腾讯超大规模社交网络图数据的各类计算,且性能达到了学术界和工业界的顶尖水平,比Spark GraphX高出1-2个数量级,使得许多按天计算的算法可在小时甚至分钟级别完成,也意味着腾讯图计算全面进入了分钟级时代。
Plato的内存消耗比Spark GraphX减少了1-2个数量级,意味着只需中小规模的集群(10台服务器左右)即可完成腾讯数据量级的超大规模图计算,打破了动辄需要上百台服务器的资源瓶颈,同时也极大地节约了计算成本。
Plato隶属腾讯图计算TGraph,起源于超大规模社交网络图数据,但可以完美适配其他类型的图数据,同时,Plato作为高性能、可扩展、易插拔的工业级图计算框架,推动了业界超大规模图计算框架的技术进步。
图作为一种表示和分析大数据的有效方法,已成为社交网络、推荐系统、网络安全、文本检索和生物医疗等领域至关重要的数据分析和挖掘工具。例如,定期对网页进行影响力排序以提升用户的搜索体验;分析庞大的社交网络结构以便精准地为用户推荐服务;通过子图匹配等方式了解蛋白质间的相互作用从而研制更有效的临床医药。
图数据是高维度数据,图算法的计算性能是决定图挖掘能否成功的关键因素之一。对于腾讯超过十亿级节点的超大规模社交网络数据,计算性能显得尤为重要。遗憾的是,工业界和学术界的各种分布式图计算框架,对于腾讯超大规模社交网络图数据,性能达不到可用的要求,例如,对于社交网络的某些基础统计特征,现有计算框架都无法在有限资源和有限时间内完成计算。
腾讯图计算TGraph,整合腾讯内部图计算资源,致力于打造业界领先的超大规模图计算平台。针对十亿级节点的超大规模图计算,TGraph涌现出了自研的高性能图计算框架Plato,将算法计算时间从天级缩短到分钟级,性能提升数十倍,达到业界领先水平,并且打破了动辄需要数百台服务器的资源瓶颈,最少只需十台服务器即可完成计算。高性能图计算框架Plato赋能腾讯内部包括微信在内的众多核心业务,极大的创造了业务价值。
相对于目前全球范围内其它的图计算框架,Plato可满足十亿级节点的超大规模图计算需求,将算法计算时间从天级缩短到分钟级,性能全面领先领先于其它主流分布式图计算框架,并且打破了原本动辄需要数百台服务器的资源瓶颈,现在,最少只需要十台服务器即可完成计算。
腾讯Plato团队负责人于东海表示:“Plato已经支持腾讯内部包括微信在内的众多核心业务,尤其是为腾讯超大规模社交网络图数据的各类计算提供支撑,解决了现有其他计算框架无法在有限资源和有限时间内完成计算的难点。Plato不仅为腾讯创造了巨大的业务价值,开源后还将持续推动图计算技术和行业的协同发展,加速创新。”
Plato目前主要提供两方面的能力:
腾讯数据量级下的离线图计算
腾讯数据量级下的图表示学习
Plato的整体架构如下图所示。Plato可运行在通用的X86集群,如Kubernetes集群、Yarn集群等。在文件系统层面,Plato提供了多种接口支持主流的文件系统,如HDFS、Ceph等等。
Plato高性能图计算框架的核心是Plato自适应图计算引擎。目前Plato计算引擎针对不同类型的图算法,提供了稀疏稠密自适应计算模式、共享内存计算模式和流水线计算模式等,还设计了良好的接口支持接入新的计算通信模式。此外,Plato自适应图计算引擎还包含了图划分、图表示以及多层级计算通信协同调度等模块。
计算引擎之上,Plato为算法设计者或具体的业务提供多层次接口:从底层的API,到图算法库,再到为具体业务量身打造的“解决方案”——图工具集。通过这些应用层的接口和工具,Plato还可以把离线计算结果与其他机器学习算法相结合,共同支撑顶层的不同业务。
已开源的算法:
图特征
树深度/宽度
图特征打包计算:节点数/边数/密度/节点度分布
N-阶度
HyperANF
节点中心性指标
KCore
Pagerank
Closeness
Betweenness
连通图 & 社团识别
Connected-Component
LPA
HANP
图表示学习
Node2Vec-Randomwalk
Metapath-Randomwalk
聚类/分圈算法
LDA
FastUnfolding
其他图相关算法
BFS
共同类计算
即将开源的算法:
Network Embedding
LINE
Word2Vec
GraphVite
GNN
GCN
GraphSage
Plato的计算性能遥遥领先于主流的分布式图计算框架。下图选取了Plato与Spark GraphX在PageRank和LPA这两个benchmark算法的性能对比(受限于篇幅原因,其他benchmark算法性能对比不再赘述,性能对比和上述两个算法类似)。从下图可以看到,Plato的性能比Spark GraphX高出1-2个数量级。
除了计算性能不足,内存占用过大也是限制大规模图计算的主要因素。Plato的另一个巨大优势则是他的内存开销远小于主流图计算框架。从下图看到,Plato的内存消耗比Spark GraphX减少了1-2个数量级,为超大规模图计算创造了更大的想象空间。
Plato不仅在benchmark算法中独树一帜,在真实的业务算法中也同样成效卓著。在腾讯数据量级下,Plato的计算性能也非常优秀。下图给出了Plato在腾讯数据量级下的共同类计算、Node2Vec、LINE、GraphSage等典型业务算法的性能(受限于篇幅原因,其他算法性能不再赘述,性能和上述算法类似)。
腾讯自主研发物联网实时操作系统TencentOStiny github开源地址。
https://github.com/Tencent/TencentOS-tiny
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。