AliGraph:一个工业级的图神经网络平台
簡介: 2019年12月8日,神經網絡和深度學習領域的頂會NeurIPS 在加拿大溫哥華召開,阿里巴巴計算平臺PAI團隊和達摩院智能計算實驗室開發的Aligraph在Expo Day 現場進行展示。
?
?
?
為什么專注于GNN
在大數據的背景下,利用高速計算機去發現數據中的規律似乎是最有效的手段。為了讓機器計算的有目的性,需要將人的知識作為輸入。我們先后經歷了專家系統、經典機器學習、深度學習三個階段,輸入的知識由具體到抽象,由規則到特征再到模式,越來越宏觀。相對來說,抽象的層次變高了,覆蓋面變廣了,但我們對底層的感知變弱了,模型的可解釋程度變差了。深度學習的應用已經讓我們看到了非常可觀的價值,但其背后的可解釋性工作進展緩慢,也因為如此,當我們用深度學習去解決涉及人身財產安全、法律等敏感問題時,只有數字效果不足以支撐這項技術的應用,我們更需要知道結果后面的原因。
Graph是知識的載體,其間的實體聯系蘊含了很強的因果關系。重要的是,這是一種直觀的、人們能夠讀懂的結構。把Graph作為知識支撐,利用深度學習的泛化技術,看上去是一個可行的方向,在某些問題上,離我們的可解釋性目標更近了一步。各種深度學習相關的頂會在近年來的paper分布上,圖神經網絡(GNN)一直處于蓬勃態勢。GNN提供了一種解決問題的思路,覆蓋范圍很廣,很多搜索推薦類算法,都可以納入到GNN范式,因此無論從未來技術儲備,還是當下應用擴展的角度,GNN都是一個非常值得投入的方向。
AliGraph定位
相比CNN、RNN等成熟技術而言,GNN還處于探索階段,Graph之于GNN,不如圖像之于CNN、自然語言之于RNN那樣理所當然。即便有Graph數據,如何使用GNN沒有可遵循的固定模式,更沒有沉淀下來的類似卷積一樣的算子可直接調用。GNN的有效性需要更多的場景去驗證,而每一個場景都需要開發者的深入理解,開發者有能力處理Graph數據和編寫之上的深度學習模型。有了百花齊放的應用場景做鋪墊,才有可能抽象出共性的GNN算子和算法,再將這些相對成熟的能力賦給使用者,GNN才會真正的推廣開來。出于這些考慮,比起開發一個成熟算法供用戶使用,平臺當前階段會更側重提供API給開發者,讓開發者有能力貼近自己的場景去實現GNN。
另一方面,工業場景中的Graph數據十分復雜,而且數據量巨大。平臺不能脫離場景而獨立存在,必須以業務為驅動,才最可能孵化出有實際價值的產品。以阿里巴巴的電商推薦場景為例,每天的產生的圖數據多達幾百TB,而且高度異構(多種類型的頂點、多種類型的邊),頂點和邊具有豐富的屬性,諸如商品的名稱、類目、價格區間,甚至是其關聯的圖像、視頻等,這些屬性以明文存在而非已經向量化好的結構化信息。以這樣的數據為輸入,如何高效的進行GNN訓練是一個非常有挑戰的問題。如果使用數據預處理、預訓練等手段把Graph數據結構化、向量化,會耗費大量的計算資源、存儲資源和人力成本。真正對GNN開發者友好的平臺,應該是端到端的,在一套IDE里,用戶既可以操作復雜的Graph數據,又可以將數據與深度神經網絡對接,自由編寫上層模型。平臺提供簡單靈活的接口,滿足GNN高速發展所需的可擴展性與生態的兼容性,和針對復雜的分布式環境的大規模與穩定性。
技術棧
層次化架構
AliGraph涵蓋了從原始圖數據到GNN應用的整體鏈路,把GNN算法的探索成本降低到和傳統深度學習算法同等水平。平臺可以分層來看:數據層,引擎層,應用層。
?
數據層,支持大規模同構圖、異構圖、屬性圖。數據無需提前build好,平臺提供API來簡化數據解析和建圖的過程。數據層接口易擴展,方便對接不同格式、不同介質的Graph數據。
引擎層,包含Graph Engine和Tensor Engine。Graph Engine又可分為邏輯對象層與算子層。邏輯對象層,描述的是把原始數據加載到系統后展現給用戶的形態是什么。每一個對象實體都會提供相關的語義接口,比如對于一個Graph對象而言,可以獲取圖的拓撲信息、異構程度、點邊數量等。對于用戶而言,實際使用中只需要聲明一個邏輯對象并指定其數據源即可。
?
算子層,在邏輯對象之上可以進行的計算操作。比如對于Graph對象而言,支持各種Sampler算子,用于對上層GNN算法提供輸入。算子層具有很強的擴展性,以滿足場景多樣化對算子種類的需求。目前,內置支持的算子圍繞GNN算法及生態展開,包括圖查詢、圖采樣、負采樣、KNN等。
?
Tensor Engine指深度學習引擎,如TensorFlow、PyTorch,或者其他支持Python接口的Library。GraphEngine的輸出為格式對齊的NumPy對象,可無縫與深度學習引擎對接。GNN開發者可自由編寫Graph之上的NN邏輯,并可與業務需求相結合,組成一個深度網絡模型進行端到端訓練。
應用層,強調與業務端到端結合,而非把Graph Embedding的結果割裂開使用。經場景打磨的成熟算法,也會沉淀到應用層,以算法組件的形式提供給用戶。
一體化實現
由GCN框架引申,典型的GNN編程范式可概括如下,系統是為了高效支持該范式而設計。
?
其中,向量化和聚合操作可以利用深度學習引擎的表達能力,因此,為實現上述計算模式,主要在于圖相關的操作以及這些操作如何與深度學習引擎對接。我們將技術棧細化成如下圖所示,其中Storage、Sampler、Operator是系統要解決的主要問題。信息自底向上在層與層之間前向傳播,梯度則自頂向下更新每一層的參數,整個GNN應用在一張深度網絡里描述。Storage層的Graph對象是邏輯存儲,在其之下有一層抽象的文件接口,可適配多種數據源,這是系統具備可遷移性的前提。Sampler提供豐富的算子,且可獨立擴展,不依賴系統框架,滿足多樣化的需求。Operator進行圖語義操作的封裝,把性能優化、數據對接隱藏在簡潔的接口之下。
?
高效圖引擎
再具體的,圖引擎是連接圖數據與深度學習框架的橋梁,保證數據傳遞的高效與穩定。這里的圖操作是面向GNN的,和一般意義的圖計算有很大區別。Graph Engine是一個分布式服務,具有高性能和高可用的特點,支持百億級邊的異構圖在2分鐘以內完成構建、十毫秒級按batch多跳跨機采樣,支持從失敗中狀態無損的failover。Graph Engine內部深度優化了RPC過程,實現了數據零拷貝,并且Server間的連接是線程級的,在最大化帶寬利用率的同時,每個線程可獨立無鎖的處理請求。這也是系統性能優異的主要原因。此外,我們通過有效的Cache、去中心化等手段來加速采樣和負采樣,性能具有明顯提升。
?
算子可擴展
為支持GNN的快速發展需求,系統允許算子自由擴展。系統框架包括用戶接口、分布式運行時、分布式存儲 3大部分。通過用戶接口調用某個算子,算子讀取數據并完成分布式計算。我們把分布式運行時和存儲的接口進行提煉,將編程接口控制在安全范圍內,用戶可以基于這些接口開發一個自定義的算子。自定義算子可以統一注冊到用戶接口上,無需新增用戶API。具體的,每種Operator都是一個分布式算子,計算所需的數據會分布在Service的各個Server上,我們抽象了Map()和Reduce()語義,Map()用于把計算請求拆分并轉發到對應的Server上,保證數據和計算colocate從而避免數據搬遷的代價,Reduce()則把每個Server的結果進行整合。Operator還需實現Process(),用于本地計算,數據序列化、分布式通信等則無需關心。
?
取得成果
系統
- 數據種類:支持同構圖、異構圖、屬性圖,有向圖、無向圖,可方便與任意分布式文件系統對接。
- 數據規模:支持千億級邊、十億級頂點的超大規模圖(原始存儲TB級)。
- 算子種類:支持幾十種可與深度學習相結合的圖查詢、采樣算子,支持向量檢索,支持算子按需自定義。
- 性能指標:支持分鐘級超大規模圖構建,毫秒級多跳異構圖采樣,毫秒級大規模向量檢索。
- 用戶接口:純Python接口,與TensorFlow構成一體化IDE,開發成本相比一般TF模型無異。
算法
已支持業界主流的GraphEmbedding算法,包括:DeepWalk、Node2Vec、GraphSAGE、GATNE等。多種自研算法正在計劃公開,已發表的相關paper參考如下。
- Representation Learning for Attributed Multiplex Heterogeneous Network.KDD, 2019.
- Is a Single Vector Enough? Exploring Node Polysemy for Network Embedding.KDD, 2019.
- Towards Knowledge-Based Personalized Product Description Generation inE-commerce. KDD, 2019.
- Sequential Scenario-Specific Meta Learner for Online Recommendation. KDD,2019.
- AliGraph: A Comprehensive Graph Neural Network Platform. VLDB, 2019.
- Large Scale Evolving Graphs with Burst Detection. IJCAI, 2019.
- Hierarchical Representation Learning for Bipartite Graphs. IJCAI, 2019.
- Cognitive Graph for Multi-Hop Reading Comprehension at Scale. ACL, 2019.
- Bayes EMbedding (BEM): Refining Representation by Integrating KnowledgeGraphs and Behavior-specific Networks. CIKM 2019.
- Towards Knowledge-Based Recommender Dialog System. EMNLP, 2019.
- Learning Disentangled Representations for Recommendation. NeurIPS, 2019.
業務
在阿里巴巴集團內,已覆蓋淘寶推薦、淘寶搜索、新零售、網絡安全(反恐、垃圾或異常檢測、反作弊)、線上支付、優酷、阿里健康等相關業務。典型場景效果如下:
手機淘寶首頁猜你喜歡,云主題推薦(每天5500w PV)
相比其他系統實現的GE模型,在百億級邊、十億級頂點規模的用戶-商品二部構圖上,AliGraph的實現能使單任務節省300TB存儲、萬CPU時算力,訓練時間縮短2/3,CTR提升12%。
安全相關,反恐、垃圾檢測、異常識別等5個場景
單天三十億級邊、億級頂點的異構圖,訓練時間縮短1/2,模型覆蓋準確率提升6%-41%不等。
此外,AliGraph已在阿里云公共云平臺發布,我們會保持持續更新,希望看到GNN為更多的場景帶去更優的解決方案,也希望更多的研究者愿意投入到這個方向。
結語
本文對AliGraph平臺做了概況介紹,在傳遞我們背后思考的同時,希望給更多GNN方向的研究者帶去便利,也希望感興趣的同學加入我們,共同打造GNN的影響力并落地到實際應用。
總結
以上是生活随笔為你收集整理的AliGraph:一个工业级的图神经网络平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何快速上手 AB Testing ?阿
- 下一篇: 阿里巴巴大规模应用Flink的踩坑经验: