近日,騰訊開(kāi)源再次迎來(lái)重磅項(xiàng)目。14 日,騰訊正式宣布開(kāi)源高性能圖計(jì)算框架 Plato,這是在近一周之內(nèi),開(kāi)源的第五個(gè)重大項(xiàng)目。前面依次開(kāi)源了 TubeMQ、Tencent Kona JDK、TBase、TKEStack 四個(gè)開(kāi)源項(xiàng)目。
- 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
據(jù)介紹,Plato 可滿足十億級(jí)節(jié)點(diǎn)的超大規(guī)模圖計(jì)算需求,并將算法計(jì)算時(shí)間從天級(jí)縮短到分鐘級(jí);而且在性能方面也處于領(lǐng)先,并打破了原本動(dòng)輒需要數(shù)百臺(tái)服務(wù)器的資源瓶頸。現(xiàn)雷鋒網(wǎng) AI 開(kāi)發(fā)者將本次開(kāi)源項(xiàng)目 Plato 相關(guān)內(nèi)容整理如下。
先導(dǎo):什么是圖計(jì)算?
盡管現(xiàn)在圖像識(shí)別很火,但圖計(jì)算的「圖」并不是指普通的圖像和照片,而是用于表示對(duì)象之間關(guān)聯(lián)關(guān)系的一種抽象數(shù)據(jù)結(jié)構(gòu)。簡(jiǎn)單來(lái)講,圖計(jì)算就是研究在這些大量數(shù)據(jù)中,如何高效計(jì)算、存儲(chǔ)并管理圖數(shù)據(jù)等問(wèn)題的領(lǐng)域。
傳統(tǒng)的關(guān)系型數(shù)據(jù)暴露出了建模缺陷、水平伸縮等問(wèn)題,于是具有更強(qiáng)大表達(dá)能力的圖數(shù)據(jù)受到業(yè)界極大的重視。圖計(jì)算就是以圖作為數(shù)據(jù)模型來(lái)表達(dá)問(wèn)題并予以解決的過(guò)程。
它可以將不同來(lái)源、不同類型的數(shù)據(jù)融合到同一個(gè)圖里進(jìn)行分析,得到原本獨(dú)立分析難以發(fā)現(xiàn)的結(jié)果,因此也成為了社交網(wǎng)絡(luò)、推薦系統(tǒng)、網(wǎng)絡(luò)安全、文本檢索和生物醫(yī)療等領(lǐng)域至關(guān)重要的數(shù)據(jù)分析和挖掘工具。
Plato 圖計(jì)算框架
Plato 是騰訊內(nèi)部圖計(jì)算 TGraph 團(tuán)隊(duì)整合內(nèi)部資源自主研發(fā)的一款圖計(jì)算框架,而 Plato 這一命名正是為了致敬數(shù)學(xué)家柏拉圖。
- 在計(jì)算性能方面,Plato 它能夠?qū)⑺惴ㄓ?jì)算時(shí)間從天級(jí)縮短到分鐘級(jí),不僅讓當(dāng)前的圖計(jì)算性能提升數(shù)十倍,也將圖計(jì)算帶進(jìn)了分鐘級(jí)計(jì)算時(shí)代。
- 在內(nèi)存消耗方面,Plato 也遠(yuǎn)小于主流的圖計(jì)算框架。具體而言,僅需 10 臺(tái)服務(wù)器左右的中小規(guī)模集群,即可完成原本需要上百臺(tái)服務(wù)器支持的超大規(guī)模圖計(jì)算。
- 架構(gòu)設(shè)計(jì)方面,Plato 框架的核心是自適應(yīng)圖計(jì)算引擎,它能夠根據(jù)不同類型的圖算法,提供多種計(jì)算模式供開(kāi)發(fā)者靈活選擇,包括自適應(yīng)計(jì)算模式、共享內(nèi)存計(jì)算模式和流水線計(jì)算模式等。另外,還設(shè)計(jì)了接口支持接入新的計(jì)算通信模式。
Plato 整體架構(gòu)圖
- 在計(jì)算引擎上,Plato 則為算法設(shè)計(jì)者或具體的業(yè)務(wù)提供了多層次接口:從底層的 API,到圖算法庫(kù),再到為具體業(yè)務(wù)量身打造的「解決方案」——圖工具集。通過(guò)這些應(yīng)用層的接口和工具,Plato 還可以把離線計(jì)算結(jié)果與其他機(jī)器學(xué)習(xí)算法相結(jié)合,共同支撐頂層的不同業(yè)務(wù)。
- 目前,Plato 主要提供兩大核心能力,包括:騰訊數(shù)據(jù)量級(jí)下的離線圖計(jì)算和騰訊數(shù)據(jù)量級(jí)下的圖表示學(xué)習(xí);同時(shí),Plato 可在通用的 X86 集群中運(yùn)行,包括: Kubernetes、YARN 等資源調(diào)度平臺(tái);在文件系統(tǒng)方面,Plato 提供了多種接口支持主流的文件系統(tǒng),如 HDFS、Ceph 等。
性能對(duì)比
據(jù)官方數(shù)據(jù)展示,Plato 的計(jì)算性能領(lǐng)先于主流的分布式圖計(jì)算框架。
下圖(左)為 Plato 與 Spark GraphX 在 PageRank 和 LPA 這兩個(gè) benchmark 算法的性能對(duì)比,可以看到,Plato 的性能比 Spark GraphX 高出 1-2 個(gè)數(shù)量級(jí)。
左圖為計(jì)算性能對(duì)比,右圖為內(nèi)存占用對(duì)比
Plato 的另一個(gè)優(yōu)勢(shì)則是它的內(nèi)存開(kāi)銷遠(yuǎn)小于主流圖計(jì)算框架。從上圖(右)看到,Plato 的內(nèi)存消耗比 Spark GraphX 減少了 1-2 個(gè)數(shù)量級(jí)。
除此之外,在真實(shí)的業(yè)務(wù)算法下,Plato 的計(jì)算性能也很好。下圖給出了 Plato 在騰訊數(shù)據(jù)量級(jí)下的共同類計(jì)算、Node2Vec、LINE、GraphSage 等典型業(yè)務(wù)算法的性能。
Plato 在騰訊數(shù)據(jù)量級(jí)下計(jì)算性能
Plato 主要貢獻(xiàn)
圖作為一種表示和分析大數(shù)據(jù)的有效方法,已成為眾多領(lǐng)域至關(guān)重要的數(shù)據(jù)分析和挖掘工具。而圖數(shù)據(jù)是高維度數(shù)據(jù);圖算法的計(jì)算性能是決定圖挖掘能否成功的關(guān)鍵因素之一。對(duì)于目前大量的超過(guò)十億級(jí)節(jié)點(diǎn)大規(guī)模社交網(wǎng)絡(luò)數(shù)據(jù),計(jì)算性能顯得尤為重要。
Plato 的出現(xiàn),則將算法計(jì)算時(shí)間從天級(jí)縮短到分鐘級(jí),并且打破了動(dòng)輒需要數(shù)百臺(tái)服務(wù)器的資源瓶頸;使得現(xiàn)有計(jì)算框架能夠在有限資源和有限時(shí)間內(nèi)完成對(duì)于一些大規(guī)模社交網(wǎng)絡(luò)基礎(chǔ)統(tǒng)計(jì)特征的計(jì)算。
在這次開(kāi)源中,騰訊 Plato 團(tuán)隊(duì)負(fù)責(zé)人于東海也表示:「Plato 已經(jīng)支持騰訊內(nèi)部包括微信在內(nèi)的眾多核心業(yè)務(wù),尤其是為騰訊超大規(guī)模社交網(wǎng)絡(luò)圖數(shù)據(jù)的各類計(jì)算提供支撐,解決了現(xiàn)有其他計(jì)算框架無(wú)法在有限資源和有限時(shí)間內(nèi)完成計(jì)算的難點(diǎn)。」
截止目前,騰訊已經(jīng)在 GitHub 上已經(jīng)開(kāi)源了 86 個(gè)項(xiàng)目。而 Plato 的算法庫(kù)中的圖特征、節(jié)點(diǎn)中心性指標(biāo)、連通圖和社團(tuán)識(shí)別等多種算法都已經(jīng)開(kāi)源,未來(lái)還將進(jìn)一步開(kāi)源更多的算法。
其中,已經(jīng)開(kāi)源的算法包括:
樹(shù)深度/寬度
圖特征打包計(jì)算:節(jié)點(diǎn)數(shù)/邊數(shù)/密度/節(jié)點(diǎn)度分布
N-階度
HyperANF
KCore
Pagerank
Closeness
Betweenness
Connected-Component
LPA
HANP
Node2Vec-Randomwalk
Metapath-Randomwalk
LDA
FastUnfolding
BFS
共同類計(jì)算
Plato 開(kāi)源地址:
https://github.com/tencent/plato
來(lái)源 | 雷鋒網(wǎng)
作者 | 楊鯉萍