開發 | 繼 XDL 之後,阿里媽媽開源大規模分散式圖表徵學習框架 Euler

  • 2019 年 11 月 1 日
  • 筆記

AI 科技評論按:繼去年 11 月開源面向高維稀疏數據場景的深度優化工具 X-Deep Learning(開源地址:https://github.com/alibaba/x-deeplearning,截至發稿,GitHub Star 數已達到 1972)之後,阿里媽媽團隊於今日正式開源大規模分散式圖表徵學習框架 Euler,這一框架具有四大特點:
  • 大規模圖的分散式學習

支援圖分割和高效穩定的分散式訓練,可以輕鬆支撐數十億點、數百億邊的計算規模。

  • 支援複雜異構圖的表徵

在圖結構存儲和圖計算的抽象上均良好的支援異構點、異構邊類型的操作,並支援豐富的異構屬性,可以很容易的在圖學習演算法中進行異構圖的表徵學習。

  • 圖學習與深度學習的結合

支援基於深度學習樣本的 mini-batch 訓練,把圖表徵直接輸入到深度學習網路中聯合訓練。

  • 分層抽象與靈活擴展

Euler 系統抽象為圖引擎層、圖操作運算元層、演算法實現層三個層次,可以快速的在高層擴展一個圖學習演算法,同時,Euler 內置了大量演算法實現可供直接使用。

阿里媽媽團隊表示,近年來隨著在圖深度學習技術的突破,有希望通過圖引入知識結構和推理能力,與深度學習的結合,進一步提升模型能力。

2017 年 3 月,阿里媽媽團隊在探索使用深度學習來刻畫用戶與廣告的連接關係時,他們意識到圖深度學習是一個非常重要的技術方向,且業界沒有成熟的解決方案。2017 年 5 月,阿里媽媽開發完成第一個單機版本的圖學習系統,支援他們基於隨機遊走類的圖學習演算法,並在阿里媽媽深度匹配業務上取得不錯的效果。2018 年初,Euler 支援大規模分散式圖學習能力,支援在數十億點、數百億邊的大規模圖上進行業務迭代。2018 年中,Euler 全面支援 GCN 類演算法,並且創新的提出 LasGNN 模型與 Scalable-GCN 訓練加速演算法。2018 年 9 月,阿里媽媽正式決定把 Euler 的能力與業界分享,啟動 Euler 的開源準備。而今天,在做了詳盡準備之後,這一工具正式與所有開發者見面。

阿里媽媽團隊也詳述了 Euler 系統設計:

Euler 系統架構圖

Euler 系統整體可以分為三層:最底層的分散式圖引擎,中間層圖語義的運算元,高層的圖表示學習演算法。

各個層次的核心功能如下:

一、分散式圖引擎

分散式圖引擎針對海量圖存儲,分散式並行圖計算及異構圖進行了優化設計,確保了工業場景下的有效應用。

  • 首先為了存儲超大規模圖(數十億點,數百億邊),Euler 必須突破單機的限制,從而採用了分散式的存儲架構。在圖載入時,整張圖在引擎內部被切分為多個子圖,每個計算節點被分配 1 個或幾個子圖進行載入。
  • 為了充分利用各個計算節點的能力,在進行圖的操作時,頂層操作被分解為多個對子圖的操作由各個節點並行執行。這樣隨著更多節點的加入,可以得到更好的服務能力。然後,引入多 replica 的支援,用戶從而可以靈活平衡 shard 與 replica 的數量,取得更佳的服務能力。最後,針對圖表示學習優化了底層的圖存儲數據結構與操作演算法,單機的圖操作性能獲得了數倍的提升。
  • 多種不同類型的邊,點與屬性所組成的異構圖,對很多複雜的業務場景必不可少。為了支援異構圖計算能力,底層存儲按照不同的節點與邊的類型分別組織。這樣可以高效支援異構的圖操作。

二、中間圖操作運算元

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

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

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

按照功能分類,Euler 的核心系統提供的 API 可以分類如下:

  • 全局帶權取樣點和邊的能力。主要用於 mini-batch 樣本的隨機生成以及 Negative Sampling。
  • 基於給定節點的鄰居操作。這個是圖計算的核心能力包括鄰居帶權取樣,取 Top 權重的鄰居等。
  • 點/邊的屬性查找。這個能力使得演算法可以使用更豐富的特徵,而不僅限於點/邊的 ID 特徵。

三、高層演算法實現

目前,Euler 內置的演算法如下。除了 LINE 演算法,Euler 實現的演算法可以分為隨機遊走與鄰居匯聚兩大類演算法,其中也有阿里媽媽團隊自研的開創性演算法。

以下是對阿里媽媽內部三個創新演算法 Scalable-GCN、LsHNE、LasGNN 的詳細介紹:

Scalable-GCN

它是一種高效的 GCN 訓練演算法。GCN 以及更一般的 Graph Neural Network (GNN)類的方法由於能有效的提取圖結構資訊,在許多任務上均取得了超過以往方法的效果。但是 GCN 的模型會引入巨大的計算量,導致模型的訓練時間不可接受。Scalable-GCN 在保證優秀效果的前提下,把 mini-batch GCN 的計算複雜度從層數的指數函數壓到線性。這使得在阿里媽媽的海量數據下應用三層 GCN 成為可能,廣告匹配的效果獲得了顯著提升。

LsHNE

LsHNE 是技術團隊結合阿里媽媽搜索廣告場景創新地提出一種無監督的大規模異構網路 embedding 學習方法。區別於 DeepWalk 類演算法,LsHNE 的特點包括:a) 採用深度神經網路學習表達,可以有效融合 Attribute 資訊;b)考慮 embedding 表示的距離敏感需求,提出兩個負取樣原則:分布一致性原則和弱相關性原則;c)支援異構網路。

LasGNN

LasGNN 是一種半監督的大規模異構圖卷積神經網路學習方法, 它有效融合了圖結構知識資訊和海量用戶行為資訊,大幅提升了模型精度,是工業界廣告場景下首次應用半監督圖方法。該方法有多處創新,例如將 metapath 的思想應用於圖卷積網路中,並提出了 metapathGCN 模型,有效解決了異構網路的卷積問題;提出了 metapathSAGE 模型,在模型中設計高效的鄰居取樣的方法,使得大規模的多層鄰居卷積成為可能。

以上便是阿里媽媽技術團隊對 Euler 的詳細解讀,未來這一工具是否會帶給我們更多驚喜?拭目以待。

GitHub 地址:

https://github.com/alibaba/euler