近日,騰訊開源再次迎來重磅項目。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
來源 | 雷鋒網
作者 | 楊鯉萍