
使用這些基本 REST API 最佳實踐構建出色的 API
圖2 本文內容組織
圖結構能描述復雜的關系,圖計算能挖掘結構信息,但缺乏節點特征處理能力。神經網絡擅長處理普通數據,但難以應對圖數據。圖神經網絡結合了兩者優點,能處理圖數據并預測鏈接、推薦和分析交通等。然而,大規模圖數據帶來存儲和計算挑戰。
挑戰主要來自四個方面:圖數據結構不規則、稀疏、動態,節點鄰居數量分布不均;節點特征維度高,增加計算和內存開銷;數據規模龐大,導致內存不足和復雜的數據劃分與迭代更新;硬件結構限制,難以滿足靈活讀取不規則數據和高效計算的需求。
為應對這些挑戰,研究者提出各種策略。針對應用場景,提高處理效率;在算法模型方面,研究分批訓練等解決內存問題;在編程框架方面,推出DGL、PyG等解決訓練樣本依賴;在硬件結構方面,結合CPU、GPU、FPGA等提出優化策略或專用加速結構。這些努力有助于更好地應對和緩解圖神經網絡在大數據應用中的挑戰。
圖1 GNN 整體框架圖
表1是這篇文章的相關綜述列表。其中,綜述[29-32]主要關注的是圖神經網絡模型的全圖訓練模式以及它的應用。當圖中的節點或邊的數量變得非常大時,整個訓練過程可能會受到單塊GPU內存的限制。為了解決這個問題,我們有了采樣算法。這些算法就像是拼圖游戲的助手,讓我們能夠在分批次的情況下進行訓練,處理大規模的數據,而不會讓GPU的內存爆掉。這就像我們把一個大拼圖游戲分成幾個小部分,然后分別玩,最后再組合起來。
而圖神經網絡編程框架呢,它們結合了深度學習框架和圖結構的特點,提高了存儲的利用率和計算的效率,讓我們能更方便地處理大規模的數據。這就像我們用一個更聰明的辦法去玩拼圖游戲,能更快地完成它。
綜述[33-34]主要總結了圖神經網絡編程框架的發展情況。而綜述[36-38]則更關注于分布式平臺,它們分析了分布式GNN在算法模型、軟件框架和硬件平臺等方面的進步。這就像我們不僅在一張桌子上玩拼圖游戲,還在多張桌子上同時玩,大家互相合作,一起完成這個巨大的拼圖。
這篇文章研究了大規模圖神經網絡,主要從算法模型和框架優化兩個方面進行了深入的了解、歸納和分析。首先,文章給大家普及了一下GNN的基礎知識和一些常見的算法。然后,總結了不同粒度采樣策略的圖神經網絡模型,還有主流加速框架以及相關的技術。這些都是為了給以后在大規模數據應用中,圖神經網絡在框架和算法上如何協同優化提供一些想法和方向。
圖神經網絡是專門處理圖結構數據的神經網絡,能結合圖計算和神經網絡的優勢,將圖結構信息抽象為節點特征。圖計算模型擅長捕捉拓撲結構,但處理不了高維特征。傳統神經網絡處理的是歐氏空間數據,而圖數據是非歐氏空間的,因此需要新的處理機制。
消息傳播模式是圖神經網絡中流行的處理方式,包括鄰居聚合和節點更新兩個步驟,可獲取節點的高階鄰居信息。
圖神經網絡的常見模型有:圖卷積神經網絡(GCN)、圖注意力網絡(GAT)、循環圖神經網絡(GGNN)和基于自編碼器的圖神經網絡(SDNE)。這些模型在大規模數據訓練中都會面臨內存不足和鄰居爆炸等問題。
GCN通過卷積操作實現鄰居節點聚合,分為譜域和空間域兩類。GAT引入注意力機制處理圖數據,為每個節點分配不同權重。GGNN基于RNN處理圖結構數據,針對時間演化圖。SDNE應用自編碼器學習節點表示,考慮節點間的相似性。
盡管存在挑戰,但隨著研究和探索的深入,相信未來會有更多解決方案出現。
(* 表示產生相關挑戰的主要原因)
針對圖神經網絡在大規模數據訓練中面臨的挑戰,已經開展了一些有意義的算法優化工作。大部分的工作都集中在數據的優化上,其中最主要的方法是使用不同粒度的采樣算法實現分批訓練。這些算法主要可以按照采樣粒度分為以下三類:基于節點的采樣算法、基于層的采樣算法以及基于子圖的采樣算法。
GraphSage通過節點采樣進行表示學習,優化模型參數。它隨機采樣目標節點的固定數目鄰居,使用聚合函數進行特征聚合,并通過反向傳播學習。這種方法實現了新數據表示,并將不規則圖結構數據規則化,實現參數共享。
PinSage結合隨機游走和圖卷積操作,用于大規模推薦系統。它通過節點采樣構建計算圖,捕捉圖結構特征,提高圖卷積神經網絡在大規模數據上的可擴展性。PinSage使用基于重要性的節點采樣算法,利用隨機游走策略評估節點重要性,并進行重要性加權。
VR-GCN是一種新的采樣算法,解決了大規模圖神經網絡參數共享問題。它僅采樣兩個節點,利用歷史激活節點減小方差,顯著減小估計梯度的偏置和方差。這種方法大大減小了模型訓練的時間和內存開銷。
LGCL將圖數據結構化以滿足卷積操作要求,將不規則圖結構數據轉化為歐氏空間,便于利用CNN算法優化。然而,這種基于顯著特征的重組方式可能破壞節點特征多樣性,加劇節點表示過度平滑問題。
總結來說,GraphSage使用基于節點的采樣算法,適應歸納式任務。PinSage使用基于重要性的采樣算法,并進行重要性加權。VR-GCN關注采樣算法的收斂性,減小梯度估計的偏置和方差。LGCL從特征粒度進行篩選重組為新的節點進行聚合。這些算法各具特色,解決了圖神經網絡中不同的問題。
圖3 基于節點的采樣算法
FastGCN:將圖卷積操作轉化為概率分布積分,并用蒙特卡洛法估計,減少GCN大規模訓練的時間和內存消耗。利用層級采樣防止鄰居節點爆炸,并結合重要性采樣提升性能。
AS-GON:采用自適應層級采樣,固定每層采樣節點數來防止鄰居節點爆炸。通過連接跳躍捕捉二階相似性,傳播高階鄰居特征,無需額外采樣開銷。
LADIES:新的采樣算法,構建二分圖計算重要性分數作為采樣概率,迭代構建整個計算圖以降低計算和內存開銷。
總結:PastGCN通過層級采樣避免鄰居節點爆炸,但存在連接稀疏和冗余節點問題。AS-GCN保證收斂性并捕捉二階關聯性。LADIDS緩解鄰居節點爆炸,但全局節點復用有限。
圖4 基于層的采樣算法
Cluster-GCN使用子圖采樣算法,通過Metis聚類算法將節點分為c塊,轉換鄰接矩陣為對角矩陣A和B,然后將GCN函數分解到不同聚類中,以隨機組合分塊來減少遺漏和誤差。在分批訓練中,選擇多個聚類分塊作為訓練數據。
RWT是逐層游走的訓練策略,旨在減少Cluster-GCN的時間和空間開銷。通過子圖采樣實現分批,綜合考慮隨機性和圖結構連接性,逐層擴張采樣并更新子圖至達到閾值。RWT在GCN和GAT上驗證有效。
GraphSAINT基于采樣,先采樣子圖再構建網絡模型,消除分批訓練偏差,降低方差。它估計節點和邊的采樣概率,在每個訓練批次中采樣子圖,構建完整GON模型進行訓練。通過歸一化消除偏差,用隨機游走策略優化采樣。Zeng等提出的GraphSAINT提高了精度,并提出了并行訓練框架,提高程序并行性,減小通信開銷。
SHADOW-GNN旨在解決大規模數據挑戰和過度平滑問題。通過解耦節點接受區域與圖神經網絡深度,實現深層網絡表達能力,同時避免過度平滑。它采用子圖采樣策略,形成不同子圖,并在子圖上應用任意深度的圖神經網絡模型。
總結:Cluster-GCN通過節點聚類提高利用率;RWT逐層擴張子圖;GraphSAINT減小估計偏差與方差;SHADOW-GNN增強模型可拓展性,緩解過度平滑問題。
圖5 基于子圖的采樣算法
Zeng等人在5個數據集上(表4)比較了4種采樣算法在節點分類任務上的準確性性能對比結果如表 5所示,基于子圖的采樣算法在不同數據集上表現更好,micro E1指數更高且方差較小。GraphSage在數據集Flickr、Reddit、Yelp和Amazon上的節點分類準確性與基于子圖的采樣算法接近,但訓練時間較長。
針對大規模數據訓練中存在的挑戰,本節總結了不同粒度的采樣算法(如表6所示),如節點級、層級和子圖級采樣算法。這些算法在一定程度上緩解了大規模數據訓練中存在的內存限制問題,增加了模型的可拓展性,并通過重要性采樣、方差消減、隨機組合等方式提高模型收斂性。然而,目前的采樣算法主要基于靜態的同構圖進行優化,忽略了現實應用中圖數據的異構性、動態性、冪律分布等復雜特征。
表 6 采樣算法總結
圖神經網絡計算過程涉及不規則訪存和復雜特征計算,傳統框架在圖計算上性能較差。針對此問題,研究者提出面向圖神經網絡的編程框架并探索優化技術,為大規模圖神經網絡模型運行和優化奠定基礎。
本節將對 Deep Graph Library、PyTorchGeometric、Graph-Learn 等主流的編程框架進行總結, 如表 7所示:
表7 圖神經網絡編程框架
將圖神經網絡編程框架相關的優化技術按照其優化方面分為 5 個部分, 分別是數據劃分、任務調度、并行執行、內存管理和其他方面, 總結如表8所示:
表8 圖神經網絡框架相關優化技術
圖神經網絡模型及其在大數據下的挑戰
這篇文章先給我們介紹了四種常見的圖神經網絡模型,它們分別是圖卷積神經網絡、圖注意力神經網絡、圖循環神經網絡和基于自編碼器的圖神經網絡。然后,文章分析了這些模型在處理大數據時面臨的挑戰,并把這些挑戰分成了幾類。接著,文章從算法模型和編程框架兩個方面,對現有的研究進行了總結和分析。
先來說說算法模型。為了應對大數據在圖神經網絡訓練中的挑戰,很多優化工作都集中在采樣算法上。根據采樣的方式,文章把這些工作分成了三類:基于節點的采樣、基于層的采樣和基于子圖的采樣。對于每一類采樣算法,文章都介紹了相關的模型,并進行了詳細的分析。最后,文章做了一個全面的總結。
再來說說編程框架。文章列舉了DGL、PyG等主流的編程框架,并把這些框架的優化技術分成了五類:數據劃分、任務調度、并行執行、內存管理和其他方面。對于每一類優化技術,文章都簡要介紹了其目標,并列舉了一些具體的策略。最后,文章也做了一個全面的總結。
展望未來,文章總結了圖神經網絡在大數據優化方面的進展,包括模型優化和框架加速兩個方面。接下來,我們將從這兩個方面來展望未來的工作方向,具體可以參考圖6。
圖6 未來工作展望
本文章轉載微信公眾號@Python人工智能前沿