十億節點大規模圖計算降至「分鐘」級,騰訊開源圖計算框架柏拉圖

杜佳豪發表於2019-11-15
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 等典型業務演算法的效能(受限於篇幅原因,其他演算法效能不再贅述,效能和上述演算法類似)。

十億節點大規模圖計算降至「分鐘」級,騰訊開源圖計算框架柏拉圖


騰訊開源藍圖


Plato 高效能、可擴充套件、易插拔的特性在社交網路、推薦系統、生物醫療等領域應用前景廣闊,例如定期對網頁進行影響力排序以提升使用者的搜尋體驗、分析龐大的社交網路結構以便精準地為使用者推薦服務、透過子圖匹配等方式瞭解蛋白質間的相互作用從而研製更有效的臨床醫藥等。


在上週的 Techo 開發者大會上,騰訊也正式宣佈 TubeMQ、Tencent Kona JDK、TBase、TKEStack 四大重點專案的開源。統計下來,騰訊已經在 GitHub 上開源了 86 個專案,位列 Github 全球公司貢獻榜的 Top 10。據瞭解,在騰訊內部推開源協同的戰略推動下,目前尚未開源的 SuperSQL 等也將會陸續開源。

相關文章