十亿节点大规模图计算降至「分钟」级,腾讯开源图计算框架柏拉图

机器之心报道

参与:蛋酱

11 月 14 日,腾讯正式宣布开源高性能图计算框架 Plato,据介绍,Plato 可满足十亿级节点的超大规模图计算需求,将算法计算时间从「天」级缩短到「分钟」级,性能全面领先于其它主流分布式图计算框架,并且打破了原本动辄需要数百台服务器的资源瓶颈。

Plato 开源地址:https://github.com/tencent/plato

伴随着人工智能领域技术的发展,「图计算」的应用场景也越来越广泛。熟悉的人都知道,图计算的「图」并不是指普通的图像和照片,而是用于表示对象之间关联关系的一种抽象数据结构。图计算可以将不同来源、不同类型的数据融合到同一个图里进行分析,得到原本独立分析难以发现的结果,因此成为社交网络、推荐系统、网络安全、文本检索和生物医疗等领域至关重要的数据分析和挖掘工具。

最强性能的图计算框架 Plato

Plato 是腾讯内部图计算 TGraph 团队整合内部资源自主研发的一款高性能图计算框架,取名 Plato 是为了致敬伟大的数学家柏拉图。目前腾讯云大数据团队正在封装 Plato,即将对所有开发者开放使用。

相对于目前全球范围内其它的图计算框架,Plato 可满足十亿级节点的超大规模图计算需求,将算法计算时间从天级缩短到分钟级,性能全面领先于其它主流分布式图计算框架,并且打破了原本动辄需要数百台服务器的资源瓶颈。现在,最少只需要十台服务器即可完成计算。

综合来说,Plato 在计算性能方面极其强悍,主要有以下贡献:

  • Plato 能高效地支撑腾讯超大规模社交网络图数据的各类计算,且性能达到了学术界和工业界的顶尖水平,比 Spark GraphX 高出 1-2 个数量级,使得许多按天计算的算法可在小时甚至分钟级别完成,也意味着腾讯图计算全面进入了分钟级时代;
  • Plato 的内存消耗比 Spark GraphX 减少了 1-2 个数量级,意味着只需中小规模的集群(10 台服务器左右)即可完成腾讯数据量级的超大规模图计算,打破了动辄需要上百台服务器的资源瓶颈,同时也极大地节约了计算成本;
  • Plato 隶属腾讯图计算 TGraph,起源于超大规模社交网络图数据,但可以完美适配其他类型的图数据,同时,Plato 作为高性能、可扩展、易插拔的工业级图计算框架,推动了业界超大规模图计算框架的技术进步。

两大核心能力

目前,Plato 主要提供两大核心能力:腾讯数据量级下的离线图计算和腾讯数据量级下的图表示学习。同时,Plato 可运行在通用的 X86 集群,如 Kubernetes 集群、Yarn 集群等。在文件系统层面,Plato 提供了多种接口支持主流的文件系统,如 HDFS、Ceph 等。

腾讯 Plato 整体架构图

在架构设计上,Plato 框架的核心是自适应图计算引擎,它能够根据不同类型的图算法,提供多种计算模式供开发者灵活选择,包括自适应计算模式、共享内存计算模式和流水线计算模式等。另外,还设计了良好的接口支持接入新的计算通信模式。

在计算引擎之上,Plato 为算法设计者或具体的业务提供多层次接口:从底层的 API,到图算法库,再到为具体业务量身打造的「解决方案」——图工具集。通过这些应用层的接口和工具,Plato 还可以把离线计算结果与其他机器学习算法相结合,共同支撑顶层的不同业务。

值得一提的是,目前 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 与 Spark GraphX 在 PageRank 和 LPA 这两个 benchmark 算法中的性能对比(受限于篇幅原因,其他 benchmark 算法性能对比不再赘述,性能对比和上述两个算法类似)。从下图可以看到,Plato 的性能比 Spark GraphX 高出 1-2 个数量级。

除了计算性能不足,内存占用过大也是限制大规模图计算的主要因素。Plato 的另一个巨大优势则是它的内存开销远小于主流图计算框架。从下图可以看出,Plato 的内存消耗比 Spark GraphX 减少了 1-2 个数量级,为超大规模图计算创造了更大的想象空间。

Plato 不仅在 benchmark 算法中独树一帜,在真实的业务算法中也同样成效卓著。在腾讯数据量级下,Plato 的计算性能也非常优秀。下图给出了 Plato 在腾讯数据量级下的共同类计算、Node2Vec、LINE、GraphSage 等典型业务算法的性能(受限于篇幅原因,其他算法性能不再赘述,性能和上述算法类似)。

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iTesting

测试框架实践--多线程

前面几次的分享,我从一个数据驱动的实现展开去,先后讨论了什么是数据驱动,如何实现数据驱动,数据驱动在自动化框架里如何应用。 Python数据驱动实践(一)–dd...

6310
来自专栏芋道源码1024

【RPC 专栏】深入理解 RPC 之集群篇

摘要: 原创出处 https://www.cnkirito.moe/rpc-cluster/ 「老徐」欢迎转载,保留摘要,谢谢!

6610
来自专栏芋道源码1024

分布式消息队列 RocketMQ 源码分析 —— RPC 通信(二)

摘要: 原创出处 https://mp.weixin.qq.com/s/iJww26xFSwEytoz8NjpFRw 「胡宗棠」欢迎转载,保留摘要,谢谢!

7210
来自专栏iTesting

一小时学会接口测试

接口测试最近几年越来越流行了,特别是随着微服务的兴起,系统和系统之间,甚至系统内部模块之间的互相调用都开始大量使用接口了(一般采用RESTFUL风格的http调...

10320
来自专栏网络交换FPGA

Python3实现ICMP远控后门(下)之“Boss”出场

熬到最后一篇了,本系列的Boss要出场了,实现了一个有意思的ICMP后门,暂时使用pyinstaller打包成了一个win32和64版本,如下图所示。

7110
来自专栏iTesting

测试框架实践--TestFixture

前面几期分享我实现了一个可以并发运行的”框架“, 其实只能叫半成品, 但好歹可以并发运行, 测试用例动态挑选了。那么还少了什么呢?

8420
来自专栏芋道源码1024

分布式消息队列 RocketMQ 源码分析 —— RPC 通信(一)

摘要: 原创出处 https://mp.weixin.qq.com/s/V_nOevq_2cbrH2_zgOSP-w 「胡宗棠」欢迎转载,保留摘要,谢谢!

6320
来自专栏芋道源码1024

前后端 API 交互如何保证数据安全性?

摘要: 原创出处 https://juejin.im/post/5b149754f265da6e155d4748 「猿天地」欢迎转载,保留摘要,谢谢!

5520
来自专栏iTesting

自研测试框架ktest介绍(适用于UI和API)

在自动化测试的过程中,测试框架是我们绕不过去的一个工具,无论你是不需要写代码直接改动数据生成脚本,还是你需要检查测试结果甚至持续集成,测试框架都在发挥它的作用。...

6910
来自专栏芋道源码1024

完整的一次 HTTP 请求响应过程(二)

摘要: 原创出处 https://juejin.im/post/5b152061e51d4506a269a34f 「YangAM」欢迎转载,保留摘要,谢谢!

8520

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励