近日,腾讯开源再次迎来重磅项目。14 日,腾讯正式宣布开源高性能图计算框架 Plato,这是在近一周之内,开源的第五个重大项目。前面依次开源了 TubeMQ、Tencent Kona JDK、TBase、TKEStack 四个开源项目。
- TubeMQ:https://github.com/Tencent/TubeMQ
- Tencent Kona JDK:https://github.com/Tencent/TencentKona-8
- TBase:https://github.com/Tencent/TBase
- TKEStack:https://github.com/tkestack
据介绍,Plato 可满足十亿级节点的超大规模图计算需求,并将算法计算时间从天级缩短到分钟级;而且在性能方面也处于领先,并打破了原本动辄需要数百台服务器的资源瓶颈。现雷锋网 AI 开发者将本次开源项目 Plato 相关内容整理如下。
先导:什么是图计算?
尽管现在图像识别很火,但图计算的「图」并不是指普通的图像和照片,而是用于表示对象之间关联关系的一种抽象数据结构。简单来讲,图计算就是研究在这些大量数据中,如何高效计算、存储并管理图数据等问题的领域。
传统的关系型数据暴露出了建模缺陷、水平伸缩等问题,于是具有更强大表达能力的图数据受到业界极大的重视。图计算就是以图作为数据模型来表达问题并予以解决的过程。
它可以将不同来源、不同类型的数据融合到同一个图里进行分析,得到原本独立分析难以发现的结果,因此也成为了社交网络、推荐系统、网络安全、文本检索和生物医疗等领域至关重要的数据分析和挖掘工具。
Plato 图计算框架
Plato 是腾讯内部图计算 TGraph 团队整合内部资源自主研发的一款图计算框架,而 Plato 这一命名正是为了致敬数学家柏拉图。
- 在计算性能方面,Plato 它能够将算法计算时间从天级缩短到分钟级,不仅让当前的图计算性能提升数十倍,也将图计算带进了分钟级计算时代。
- 在内存消耗方面,Plato 也远小于主流的图计算框架。具体而言,仅需 10 台服务器左右的中小规模集群,即可完成原本需要上百台服务器支持的超大规模图计算。
- 架构设计方面,Plato 框架的核心是自适应图计算引擎,它能够根据不同类型的图算法,提供多种计算模式供开发者灵活选择,包括自适应计算模式、共享内存计算模式和流水线计算模式等。另外,还设计了接口支持接入新的计算通信模式。
Plato 整体架构图
- 在计算引擎上,Plato 则为算法设计者或具体的业务提供了多层次接口:从底层的 API,到图算法库,再到为具体业务量身打造的「解决方案」——图工具集。通过这些应用层的接口和工具,Plato 还可以把离线计算结果与其他机器学习算法相结合,共同支撑顶层的不同业务。
- 目前,Plato 主要提供两大核心能力,包括:腾讯数据量级下的离线图计算和腾讯数据量级下的图表示学习;同时,Plato 可在通用的 X86 集群中运行,包括: Kubernetes、YARN 等资源调度平台;在文件系统方面,Plato 提供了多种接口支持主流的文件系统,如 HDFS、Ceph 等。
性能对比
据官方数据展示,Plato 的计算性能领先于主流的分布式图计算框架。
下图(左)为 Plato 与 Spark GraphX 在 PageRank 和 LPA 这两个 benchmark 算法的性能对比,可以看到,Plato 的性能比 Spark GraphX 高出 1-2 个数量级。
左图为计算性能对比,右图为内存占用对比
Plato 的另一个优势则是它的内存开销远小于主流图计算框架。从上图(右)看到,Plato 的内存消耗比 Spark GraphX 减少了 1-2 个数量级。
除此之外,在真实的业务算法下,Plato 的计算性能也很好。下图给出了 Plato 在腾讯数据量级下的共同类计算、Node2Vec、LINE、GraphSage 等典型业务算法的性能。
Plato 在腾讯数据量级下计算性能
Plato 主要贡献
图作为一种表示和分析大数据的有效方法,已成为众多领域至关重要的数据分析和挖掘工具。而图数据是高维度数据;图算法的计算性能是决定图挖掘能否成功的关键因素之一。对于目前大量的超过十亿级节点大规模社交网络数据,计算性能显得尤为重要。
Plato 的出现,则将算法计算时间从天级缩短到分钟级,并且打破了动辄需要数百台服务器的资源瓶颈;使得现有计算框架能够在有限资源和有限时间内完成对于一些大规模社交网络基础统计特征的计算。
在这次开源中,腾讯 Plato 团队负责人于东海也表示:「Plato 已经支持腾讯内部包括微信在内的众多核心业务,尤其是为腾讯超大规模社交网络图数据的各类计算提供支撑,解决了现有其他计算框架无法在有限资源和有限时间内完成计算的难点。」
截止目前,腾讯已经在 GitHub 上已经开源了 86 个项目。而 Plato 的算法库中的图特征、节点中心性指标、连通图和社团识别等多种算法都已经开源,未来还将进一步开源更多的算法。
其中,已经开源的算法包括:
树深度/宽度
图特征打包计算:节点数/边数/密度/节点度分布
N-阶度
HyperANF
KCore
Pagerank
Closeness
Betweenness
Connected-Component
LPA
HANP
Node2Vec-Randomwalk
Metapath-Randomwalk
LDA
FastUnfolding
BFS
共同类计算
Plato 开源地址:
https://github.com/tencent/plato
来源 | 雷锋网
作者 | 杨鲤萍