阿里開源大規模分佈式圖學習框架:專爲Graph嵌入,無縫對接TF/PyTorch

阿里媽媽開源大規模分佈式圖表徵學習框架Euler,面向工業級用戶和高級研究者,結合TF/XDL/PyTorch等深度學習基礎工具,支持超大規模複雜異構圖的模型訓練。

 

阿里媽媽宣佈開源大規模分佈式的圖表示學習框架Euler,Euler內置DeepWalk、Node2Vec等業界常見的Graph Embedding算法,以及3種阿里媽媽自研創新算法,可以支持數十億點和數百億邊的複雜異構圖上進行模型訓練。

 

日前,Euler開源框架開發團隊的幾位成員接受了新智元的採訪。(受訪人詳細信息請見文末)

 

在採訪中,他們對Euler框架與現在流行的TensorFlow和PyTorch框架的一些區別做了闡述,比如“圖”這一概念在定義和指代對象上的區別。並指出了Euler框架主要面向的兩類目標用戶。

 

640?wx_fmt=png

 

 

概述

 

過去幾年隨着數據規模和硬件計算力的迅速增長,深度學習技術在工業界被廣泛應用併產生了巨大的技術紅利。當前應用已經相對成熟,下一步的技術紅利在哪裏還在積極探索之中。圖神經網絡將端到端學習與歸納推理相結合,有望解決深度學習無法處理的關係推理、可解釋性等一系列問題。

 

對結構知識的表達、計算和組合泛化是實現具備human-like AI的關鍵,圖神經網絡有希望在這些方面形成突破,使得機器能力進一步提升,因此對圖神經網絡的深入應用有希望形成下一波技術紅利。

 

圖(Graph)作爲表達能力很強的通用的數據結構,可以用來刻畫現實世界中的很多問題,例如社交場景的用戶網絡、電商場景的用戶和商品網絡、電信場景的通信網絡、金融場景的交易網絡和醫療場景的藥物分子網絡等等。相比文本、語音和圖像領域的數據比較容易處理成歐式空間的Grid-like類型,適合現有的深度學習模型處理,圖是一種非歐空間下的數據,並不能直接應用現有方法,需要專門設計的圖神經網絡系統。

 

1.1 Euler的核心能力

 

大規模圖的分佈式學習

 

工業界的圖往往具有數十億節點和數百億邊,有些場景甚至可以到數百億節點和數千億邊,在這樣規模的圖上單機訓練是不可行的。Euler支持圖分割和高效穩定的分佈式訓練,可以輕鬆支撐數十億點、數百億邊的計算規模。

 

支持複雜異構圖的表徵

 

工業界的圖關係大都錯綜複雜,體現在節點異構、邊關係異構,另外節點和邊上可能有非常豐富的屬性,這使得一些常見的圖神經網絡很難學到有效的表達。Euler在圖結構存儲和圖計算的抽象上均良好的支持異構點、異構邊類型的操作,並支持豐富的異構屬性,可以很容易的在圖學習算法中進行異構圖的表徵學習。

 

圖學習與深度學習的結合

 

工業界有很多經典場景,例如搜索/推薦/廣告場景,傳統的深度學習方法有不錯效果,如何把圖學習和傳統方法結合起來,進一步提升模型能力是很值得探索的。Euler支持基於深度學習樣本的mini-batch訓練,把圖表徵直接輸入到深度學習網絡中聯合訓練。

 

分層抽象與靈活擴展

 

Euler系統抽象爲圖引擎層、圖操作算子層、算法實現層三個層次,可以快速的在高層擴展一個圖學習算法。實際上,Euler也內置了大量的算法實現供大家直接使用。

 

1.2  Euler內置的算法實現

 

考慮到框架的易用性,我們內置了多種知名算法以及幾種我們內部的創新算法。所有實現,我們仔細進行了測試,保證了算法運行效率,且算法效果與原論文對齊。用戶無需進行開發,注入數據到平臺後,可以直接使用。我們內置的算法列表見下表。鑑於公開算法知名度很高,我們不做出詳細描述,請參見原始論文。有關我們內部算法的詳細信息請見2.3節。

 

 

算法類型

是否自研

特點

DeepWalk

隨機遊走

經典無偏的隨機遊走無監督算法。

Node2Vec

隨機遊走

利用可配置參數在遊走時可傾向BFS或DFS

LINE

其它

靈活利用1階,2階鄰居信息的無監督算法

GCN

鄰居匯聚

CNN操作類似推廣到非歐空間的算法

GraphSAGE

鄰居匯聚

GCN改進,提出鄰居採樣,多種匯聚函數等

GAT

鄰居匯聚

將Attention技術用於鄰居匯聚

Scalable-GCN

鄰居匯聚

加速GCN訓練的一種方法

LsHNE

隨機遊走

異構圖中隨機遊走,利用深度網絡編碼

LasGNN

鄰居匯聚

半監督大規模異構圖卷積網絡學習方法

 

系統設計

 

Euler系統整體可以分爲三層:最底層的分佈式圖引擎,中間層圖語義的算子,高層的圖表示學習算法。

 

下邊我們分開描述各個層次的核心功能。

 

640?wx_fmt=png

圖1 Euler架構總覽

 

2.1 分佈式圖引擎

 

爲了支持我們的業務,我們不僅面臨超大規模圖存儲與計算的挑戰,還需要處理由多種不同類型的點,邊及其屬性構成異構圖的複雜性。我們的分佈式圖引擎針對海量圖存儲,分佈式並行圖計算及異構圖進行了優化設計,確保了工業場景下的有效應用。

 

  • 首先爲了存儲超大規模圖(數十億點,數百億邊),Euler必須突破單機的限制,從而採用了分佈式的存儲架構。在圖加載時,整張圖在引擎內部被切分爲多個子圖,每個計算節點被分配1個或幾個子圖進行加載。

 

  • 爲了充分利用各個計算節點的能力,在進行圖的操作時,頂層操作被分解爲多個對子圖的操作由各個節點並行執行。這樣隨着更多節點的加入,我們可以得到更好的服務能力。其次,我們引入了多replica的支持。從而用戶可以靈活平衡shard與replica的數量,取得更佳的服務能力。最後,我們針對圖表示學習優化了底層的圖存儲數據結構與操作算法,單機的圖操作性能獲得了數倍的提升。

 

  • 多種不同類型的邊,點與屬性所組成的異構圖,對很多複雜的業務場景必不可少。爲了支持異構圖計算能力,底層存儲按照不同的節點與邊的類型分別組織。這樣我們可以高效支持異構的圖操作。

 

2.2 中間圖操作算子

 

由於圖學習算法的多樣性以及業務的複雜性,固定的某幾種甚至幾十種算法實現無法滿足客戶的所有需求。所以在Euler設計中,我們圍繞底層系統的核心能力着重設計了靈活強大的圖操作算子,且所有算子均支持異構圖操作語義。用戶可以利用它來快速搭建自己的算法變體,滿足獨特的業務需求。

 

首先,Euler分佈式圖引擎提供了C++的API來提供所有圖操作。基於這個API,我們可以方便的基於某個深度學習框架添加圖操作的算子,從而利用Euler C++接口訪問底層圖引擎的能力。我們支持廣泛使用的深度學習框架,比如阿里巴巴的X-DeepLearning與流行的TensorFlow。後繼我們也會考慮支持其它的深度學習框架,比如PyTorch。

 

利用靈活的圖操作算子,機器學習框架可以在每個mini-batch與Euler交互,動態擴充與組織訓練樣本。這樣,Euler不僅支持傳統的以圖爲中心的學習模式,且可以把圖學習的能力注入傳統的學習任務,實現端到端訓練。

 

按照功能分類,我們的核心繫統提供的API可以分類如下:

 

  • 全局帶權採樣點和邊的能力。主要用於mini-batch樣本的隨機生成以及Negative Sampling。

  • 基於給定節點的鄰居操作。這個是圖計算的核心能力包括鄰居帶權採樣,取Top權重的鄰居等。

  • 點/邊的屬性查找。這個能力使得算法可以使用更豐富的特徵,而不僅限於點/邊的ID特徵。

640?wx_fmt=png

 

640?wx_fmt=png

640?wx_fmt=png

 

 

640?wx_fmt=png

圖2 DeepMatch召回框架

 

640?wx_fmt=png

圖3 離線訓練流程

 

開源信息

 

Euler已在Github開源,開源地址如下:

https://github.com/alibaba/euler

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章