鍵.png)
使用這些基本 REST API 最佳實踐構(gòu)建出色的 API
GNN訓(xùn)練旨在找到最佳參數(shù)??*,使損失最小化。訓(xùn)練延遲主要來自感受野中的消息聚合,對于深度GNN,計算圖可能變得巨大。訓(xùn)練加速的總體思路是減少計算圖。有兩種方法:圖修改和采樣。圖修改分為兩步:首先生成一個小圖G’,然后進(jìn)行常規(guī)GNN訓(xùn)練。采樣則是選擇節(jié)點/邊的子集來構(gòu)建較小的計算圖,修改是動態(tài)且隱式的。兩種方法都能加速訓(xùn)練,但圖修改可能會創(chuàng)建新的節(jié)點和邊,而采樣則保證所有節(jié)點和邊都有機會被覆蓋。
圖修改分兩步加速 GNN 訓(xùn)練。圖修改方法包括圖粗化、圖稀疏化和圖壓縮。這些方法中的每一種都以不同的方式修改圖 G 以創(chuàng)建自己的 G ‘ ,但所有 G ‘ 都是較小的圖,可以加速 GNN 訓(xùn)練。這些圖修改方法的說明如圖2所示。
圖粗化,是一種減小圖大小同時保留其整體結(jié)構(gòu)的技術(shù)。通過將相同局部結(jié)構(gòu)中的節(jié)點合并為“超級節(jié)點”,并將連接超級節(jié)點的邊合并為“超級邊”,可以得到粗圖。圖粗化的核心步驟是圖聚類,通常與圖譜相關(guān)。一些算法如受限譜近似和逆拉普拉斯,被用于保留一些圖屬性。黃等人提出了一種使用圖粗化來加速GNN訓(xùn)練的通用框架,通過將圖劃分為K個簇,并設(shè)置超級節(jié)點特征和標(biāo)簽。還有其他相關(guān)工作,如GOREN和GraphZoom,但關(guān)注點不同。
圖稀疏化,通過刪除冗余邊來減少計算圖,加速GNN訓(xùn)練?,F(xiàn)有方法通常保留原始圖的關(guān)鍵屬性,如切割總權(quán)重、光譜特性和分層結(jié)構(gòu)。稀疏化算法可作為預(yù)處理步驟,降低全批次時間復(fù)雜度。一些相關(guān)工作執(zhí)行基于GNN的圖稀疏化以提高GNN精度或魯棒性,但通常需要解決額外的優(yōu)化問題,可能減慢訓(xùn)練速度。剪枝和圖稀疏化不同,通常指對神經(jīng)網(wǎng)絡(luò)模型的修改。
圖壓縮,通過匹配兩個GNN的訓(xùn)練梯度來生成一個壓縮圖,從而減少GNN的計算量和內(nèi)存占用。GCond是一種用于生成壓縮圖的方法,可以在保留原始圖訓(xùn)練動態(tài)的同時顯著減小圖的大小。通過在原始圖和壓縮圖上訓(xùn)練兩個具有相同架構(gòu)的GNN,GCond可以生成壓縮圖,同時保持原始GNN的性能。實驗表明,GCond可以在多個圖基準(zhǔn)上實現(xiàn)小于1%的壓縮比,同時保持原始GNN超過95%的準(zhǔn)確度。因此,GCond非常適合神經(jīng)架構(gòu)搜索等任務(wù)。然而,為了加速單個GNN的訓(xùn)練,GCond應(yīng)該與其他加速方法或更好的壓縮策略相結(jié)合。
采樣是一種加速GNN訓(xùn)練的技術(shù),通過動態(tài)選擇節(jié)點和邊的子集來減小計算圖,從而提高訓(xùn)練速度。研究發(fā)現(xiàn),通過采樣可以保持模型精度,同時減少時間和內(nèi)存消耗。需要注意的是,采樣與圖形修改不同,采樣是動態(tài)且隱式的,沒有中間修改的圖形輸出。
采樣方法分為節(jié)點方式、逐層和子圖方式三類,圖3為不同圖采樣方法的說明每種方式都有其優(yōu)缺點。實驗表明,逐層采樣方法在Reddit數(shù)據(jù)集上表現(xiàn)更好,子圖采樣方法在PPI數(shù)據(jù)集上表現(xiàn)更好。不同采樣方法在不同數(shù)據(jù)集上的性能和運行時間存在差異,如表1所示。
圖3 不同圖采樣方法的說明。節(jié)點采樣方法對每個計算層的每個節(jié)點進(jìn)行采樣,這可能會導(dǎo)致冗余節(jié)點(例如,節(jié)點E被采樣兩次)和丟失邊(例如,節(jié)點C和節(jié)點D之間的邊丟失);逐層采樣方法基于前一層中的節(jié)點對每層進(jìn)行采樣。子圖采樣方法對節(jié)點列表及其導(dǎo)出的子圖進(jìn)行采樣,然后通過采樣子圖內(nèi)的所有邊進(jìn)行消息傳遞。
表1 不同采樣方法的性能比較
節(jié)點采樣。節(jié)點采樣方法應(yīng)用于每層 ?? 的每個目標(biāo)節(jié)點 ??。采樣程序的示例如圖 3(a) 所示。
GraphSAGE是通過節(jié)點采樣來減少節(jié)點感受野的開創(chuàng)性工作,對于每一層??,GraphSAGE統(tǒng)一對每個節(jié)點的固定數(shù)量 (?? (??) ???????? )的相鄰節(jié)點進(jìn)行采樣。GraphSAGE采樣算法也可以形式化為矩陣形式,其中 ?? (??)?? (???1) 表示全鄰居聚合,?? (??) ?? (???1) 表示采樣聚合。VR-GCN提出在GraphSAGE工作流程中使用歷史嵌入來減少嵌入方差并加速訓(xùn)練收斂。除了GraphSAGE和VR-GCN之外,還有許多其他工作在探索節(jié)點采樣的不同方面。
雖然節(jié)點采樣方法可以通過減小感受野來緩解大規(guī)模GNN訓(xùn)練的可擴展性挑戰(zhàn),并且可以保證每層的每個節(jié)點都可以有合理數(shù)量的連接鄰居來更新其隱藏表示,但仍存在局限性。
逐層采樣。逐層采樣方法從同一計算層中的所有節(jié)點中選取子集,用于構(gòu)建計算圖。每個節(jié)點與下一計算層的直接鄰居和后面計算層的第二跳鄰居等相連。對于每個節(jié)點,其層采樣鄰域是層采樣節(jié)點集與原始鄰域的交集。每個計算層執(zhí)行 ?? (??) ?????????? 次采樣操作,選取 ?? (??) ?????????? 個鄰居節(jié)點。最后,當(dāng)前計算層的采樣節(jié)點用于構(gòu)造后面計算層的鄰域以進(jìn)行消息傳遞。采樣程序的示例如圖 3(b) 所示。
FastGCN通過分層重要性采樣解決節(jié)點采樣的可擴展性問題,但面臨連接性挑戰(zhàn)。AS-GCN提出了自適應(yīng)分層采樣方法,以頂層為條件對下層進(jìn)行采樣,并添加正則化減少方差。LADIES在后一層的直接鄰域內(nèi)進(jìn)行采樣,以確保信息傳遞。分層采樣方法克服了節(jié)點采樣的指數(shù)鄰域擴展限制,具有線性時間和內(nèi)存復(fù)雜度。然而,連通性問題依然存在,可能導(dǎo)致模型性能下降。子圖采樣。子圖采樣方法將整個圖作為輸入,輸出樣本子圖,用于GNN訓(xùn)練。由于子圖通常較小且只表示局部信息,訓(xùn)練時需要添加隨機性以提高準(zhǔn)確性。這些方法與圖修改方法類似,但并非真正修改圖,而是動態(tài)采樣。
ClusterGCN將圖劃分為簇,對每個子圖簇進(jìn)行全批量GNN訓(xùn)練,提高了可擴展性,但聚類結(jié)果固定。GraphSAINT提出四種不同的節(jié)點采樣算法,其中隨機游走采樣器表現(xiàn)更好。Shadow-GNN對每個目標(biāo)節(jié)點的不同子圖進(jìn)行采樣,并設(shè)計了將GNN深度與其感受野大小分開的原則。還有許多其他后續(xù)工作進(jìn)行子圖采樣,如RWT的波紋步行采樣器和曾等人的并行化版本。此外,一些分層采樣方法可用于構(gòu)建子圖。
子圖采樣方法不依賴GNN模型和嵌入,可在訓(xùn)練前或并行完成。但僅考慮圖結(jié)構(gòu),未考慮模型訓(xùn)練動態(tài),因此如何將方差減少研究納入子圖采樣過程尚待解決。
GNN推理加速的目標(biāo)是構(gòu)建一個模型~GNN??~,使其在G????????上的推理與GNN??*具有相似的精度,但速度更快。與訓(xùn)練加速不同,推理加速更以模型為中心,主要關(guān)注模型架構(gòu)、參數(shù)數(shù)值精度和參數(shù)值。常見的推理加速方法包括剪枝、量化和蒸餾,這些方法廣泛用于加速通用DNN,也可應(yīng)用于圖的GNN。主要挑戰(zhàn)是如何保存圖結(jié)構(gòu)信息并解決消息聚合引起的延遲。
GNN剪枝是一種加速GNN推理的方法,通過選擇要剪枝的GNN權(quán)重來優(yōu)化模型。最常見的方法是權(quán)重幅度剪枝,即剪枝具有較小權(quán)重的神經(jīng)元連接或降低權(quán)重的L1范數(shù)。剪枝提供了模型速度和準(zhǔn)確性之間的權(quán)衡,移除更多權(quán)重可能導(dǎo)致模型更快但準(zhǔn)確性降低。
Zhou等人提出了一種通道修剪方法,將剪枝問題表述為LASSO回歸問題,交替優(yōu)化可學(xué)習(xí)的掩碼和更新的GNN權(quán)重矩陣。彩票假設(shè)(LTH)是一種流行的剪枝研究,表明剪枝后的稀疏神經(jīng)網(wǎng)絡(luò)可以重新訓(xùn)練以達(dá)到與原始神經(jīng)網(wǎng)絡(luò)相似的精度。陳等人通過迭代幅度剪枝(IMP)測試了GNN的LTH,觀察到了速度增益和邊際精度損失。剪枝可以加速模型推理,但并不總是加速模型訓(xùn)練。
量化是一種廣泛使用的技術(shù),通過降低模型參數(shù)數(shù)值精度來加速通用機器學(xué)習(xí)模型。對于DNN,延遲主要來自矩陣乘法,量化可以減少MAC運算從而加速推理。量化的另一個好處是減少內(nèi)存訪問時間。量化研究的目標(biāo)是在保持推理精度的同時實現(xiàn)推理加速。量化可以分為訓(xùn)練后量化(PTQ)和量化感知訓(xùn)練(QAT)。PTQ易于使用,可以應(yīng)用于任何架構(gòu),但精度較低。QAT對訓(xùn)練期間的量化誤差進(jìn)行建模,通??梢哉业礁玫牧炕P?,但成本是模型訓(xùn)練時間較長,需要數(shù)據(jù)。現(xiàn)有的量化方法主要用于CNN,GNN的量化有其自身的挑戰(zhàn),需要特殊處理。
SGQuant和Degree-Quant是兩種研究GNN量化的方法。SGQuant是一種PTQ方法,主要關(guān)注節(jié)點表示的量化,通過多粒度量化優(yōu)化量化效率。Degree-Quant是一種QAT方法,主要量化GNN權(quán)重和中間節(jié)點表示,通過保護(hù)掩模提高權(quán)重更新精度。
量化是GNN加速方法中最容易應(yīng)用的一種,可顯著提升速度。與其他加速方法結(jié)合,如網(wǎng)絡(luò)架構(gòu)搜索(NAS),可進(jìn)一步提高速度。
知識蒸餾(KD)是一種將復(fù)雜模型壓縮為更小、更快的模型的技術(shù)。它通過師生方式訓(xùn)練兩個模型,教師輸出概率向量(軟標(biāo)簽),學(xué)生模型輸出與軟標(biāo)簽的距離。通過最小化這種距離,將知識從教師轉(zhuǎn)移到學(xué)生。常見的距離度量是Kullback-Leibler (KL) 散度。
大多數(shù)情況下,先單獨訓(xùn)練教師模型,再固定教師訓(xùn)練學(xué)生模型。知識蒸餾損失L??????僅用于更新學(xué)生參數(shù),不適用于教師。KD可應(yīng)用于半監(jiān)督環(huán)境,通過使用標(biāo)記數(shù)據(jù)訓(xùn)練教師并為未標(biāo)記數(shù)據(jù)生成軟標(biāo)簽來訓(xùn)練學(xué)生。KD已廣泛用于壓縮和加速CNN等DNN,最近擴展到GNN。GNN KD方法主要在兩個方面有所不同:1)教師和學(xué)生模型是什么?2)KD目標(biāo)是什么?
LSP、TinyGNN和GLNN是探索KD加速GNN的先驅(qū)工作。LSP提出了局部結(jié)構(gòu)保留損失,鼓勵學(xué)生模型保留與教師模型相似的局部結(jié)構(gòu)。TinyGNN通過添加特殊層 PAM鼓勵節(jié)點直接交互,提高蒸餾模型精度。GLNN采用純MLP學(xué)生模型,通過 KD實現(xiàn)與教師GNN競爭的性能。這些方法在不同設(shè)置下開發(fā),具有不同的適用性和速度增益。KD在GNN上的應(yīng)用仍處于早期階段,存在許多有趣的開放性問題。
推理加速技術(shù)組合可以實現(xiàn)更好的結(jié)果。比如將量化與蒸餾相結(jié)合,逐步量化GNN的權(quán)重和激活,最終實現(xiàn)二進(jìn)制GNN,可在Raspberry Pi 4B上實現(xiàn)2倍加速,僅適度損失精度。
除了高效的GNN訓(xùn)練/推理算法,優(yōu)化底層系統(tǒng)對于提高GNN的端到端吞吐量至關(guān)重要?,F(xiàn)有工作從三個方面加速GNN系統(tǒng):GPU內(nèi)核加速、用戶定義函數(shù)(UDF)優(yōu)化和可擴展訓(xùn)練系統(tǒng)。由于GNN計算遵循消息傳遞范式,需要高效的稀疏操作,人們提出了各種高效的GNN內(nèi)核和UDF優(yōu)化技術(shù)。然而,設(shè)計一個高效的可擴展GNN訓(xùn)練系統(tǒng)仍然是一個開放研究問題。目前,兩個廣泛使用的GNN框架是PyG和DGL。
GPU內(nèi)核是專門針對GPU進(jìn)行優(yōu)化的程序,可以大大提高DNN訓(xùn)練和推理的計算速度。盡管GPU在深度學(xué)習(xí)加速中廣泛應(yīng)用,但由于圖形的稀疏性和不規(guī)則性,使用GPU加速GNN仍具有挑戰(zhàn)性。
近年來,許多研究提出了新的GPU內(nèi)核以加速GNN工作負(fù)載,表2總結(jié)了這些工作。PCGCN通過節(jié)點聚集的稀疏模式提高GNN數(shù)據(jù)局部性,采用雙模式計算,利用圖聚類可能產(chǎn)生預(yù)處理開銷。fusionGNN開發(fā)了兩種GNN聚合工作負(fù)載抽象:GAS和GAR,將操作融合以減輕內(nèi)存流量,支持多GPU場景。FusedMM是可擴展到GPU加速的CPU內(nèi)核,通過融合相關(guān)操作實現(xiàn)內(nèi)存減少,采用邊緣平衡分區(qū)保證線程之間的工作負(fù)載平衡。TLPGNN通過兩級并行性提高性能,實現(xiàn)負(fù)載均衡和內(nèi)核融合。張等人將GNN操作分解為四部分,解決冗余神經(jīng)算子計算、不一致的線程映射和過多中間數(shù)據(jù)問題。
總之,工作負(fù)載重新排序?qū)τ谧R別GPU友好的處理模式至關(guān)重要。大多數(shù)工作順序計算輸出節(jié)點并并行處理特征,以實現(xiàn)內(nèi)核融合和合并的內(nèi)存訪問。然而,圖結(jié)構(gòu)可能不規(guī)則,因此一些工作利用雙模式計算和動態(tài)工作負(fù)載分配來處理不同屬性的圖。
GNN在消息傳遞范式下成功的關(guān)鍵因素是消息、聚合和更新函數(shù)的靈活性。通過使用Python中的張量運算符,用戶可以原生表達(dá)這些函數(shù)并通過系統(tǒng)提供的API執(zhí)行。這種編程范例稱為用戶定義函數(shù)(UDF),可以提高代碼模塊化和減少重復(fù)。最近開發(fā)的工作簡化了用戶定義的GNN的部署。
FeatGraph、Seastar和Graphiler是深度學(xué)習(xí)系統(tǒng)的編譯器堆棧,提供了靈活的編程接口。FeatGraph支持用戶定義函數(shù),Seastar為以頂點為中心的編程接口,Graphiler開發(fā)了一種用于分散/聚集相關(guān)任務(wù)的自動化工具。這些工具正在變得成熟,因為最近提出了幾個稀疏深度學(xué)習(xí)操作的后端,如SparseTIR,可以表示上述Seastar、FeatGraph和Graphier工作支持的運算符。
為了支持大規(guī)模圖 GNN 訓(xùn)練,最近的工作開發(fā)了可擴展訓(xùn)練的 GNN 系統(tǒng)??蓴U展性分為垂直可擴展性和水平可擴展性。垂直可擴展性利用有限資源處理擴展數(shù)據(jù),水平可擴展性通過擴展資源提高效率。
一些工作對分布式 GNN 訓(xùn)練系統(tǒng)進(jìn)行了總結(jié)和分類。我們關(guān)注可擴展的 GNN 訓(xùn)練,包括高效的分布式訓(xùn)練和大規(guī)模訓(xùn)練。根據(jù)數(shù)據(jù)加載到計算設(shè)備上的方法,我們將可擴展 GNN 訓(xùn)練系統(tǒng)分為設(shè)備上系統(tǒng)、基于交換的系統(tǒng)和基于采樣的系統(tǒng)。圖4展示了這些類別的概述,表3為這些類別的比較。
圖4 三種可擴展 GNN 訓(xùn)練系統(tǒng)的概述。(a)中的虛線表示來自不同worker的節(jié)點之間的依賴關(guān)系,而(b)中的灰色節(jié)點僅作為子圖計算的輸入節(jié)點。為了獲得更好的視覺清晰度,未顯示工作人員之間的模型同步表3?三種可擴展 GNN 訓(xùn)練系統(tǒng)的比較
設(shè)備上系統(tǒng)(圖 4(a))將圖和相關(guān)特征分布式存儲在計算設(shè)備上,主要關(guān)注全圖聚合以利用計算資源,但存在通信和內(nèi)存問題;基于交換的系統(tǒng)(圖 4(b))將所有數(shù)據(jù)存儲在共享內(nèi)存中,通過交換中間結(jié)果進(jìn)行計算,但存在工作負(fù)載調(diào)度和迭代延遲問題;基于采樣的系統(tǒng)(圖 4(c))將圖和特征保存在共享內(nèi)存中,采用鄰居采樣進(jìn)行鄰居聚合,面臨數(shù)據(jù)移動瓶頸,通過優(yōu)化通信和緩存策略來提高性能??傮w而言,基于采樣的系統(tǒng)在大規(guī)模圖GNN訓(xùn)練中具有前景。
表4總結(jié)了可擴展培訓(xùn)的系統(tǒng)。
人們對GNN的興趣日益濃厚,促使了定制加速器(FPGA或ASIC)的開發(fā),以實現(xiàn)更快的處理速度。GNN與CNN在計算復(fù)雜度和通信模式上的差異使得許多CNN加速器不適合GNN。GNN需要矩陣乘法單元,并具有不規(guī)則的內(nèi)存訪問。由于聚合和更新階段的計算和通信模式不同,僅使用密集或稀疏MM單元對于GNN應(yīng)用效率低下。此外,GNN使用分配給每個節(jié)點的向量,與傳統(tǒng)圖算法不同。這些區(qū)別促使研究人員設(shè)計專門的硬件模塊來有效處理GNN。
為GNN設(shè)計定制加速器需考慮三點:
廣泛的GNN層。除了可能合并圖/子圖池化層和非線性激活函數(shù)之外,GNN模型使用不同的聚合和更新方法,這可能會影響性能和靈活性。支持多種計算模式需要通用性,可能會阻止獲得最佳性能。
計算/通信模式和稀疏率差異。不同步驟的計算和通信要求可能不同,例如,鄰接矩陣超稀疏,權(quán)重矩陣稠密,節(jié)點嵌入通常密集,但ReLU等激活函數(shù)可能產(chǎn)生稀疏矩陣。此外,MLP等多層感知器也產(chǎn)生密集乘法單元。這些差異和訪問模式給GNN硬件設(shè)計帶來挑戰(zhàn),需要解決圖稀疏性、激活算子引入的稀疏性以及模塊之間的協(xié)調(diào)問題;
動態(tài)輸入和網(wǎng)絡(luò)結(jié)構(gòu)。GNN的架構(gòu)決策高度依賴于輸入圖的特征和模型的超參數(shù),圖的大小、稀疏程度和向量維度等因素對GNN加速器的內(nèi)存和計算要求有很大影響。不同尺度和結(jié)構(gòu)的圖可能導(dǎo)致計算資源需求的差異,以及處理節(jié)點鄰居數(shù)量變化時的工作負(fù)載不平衡。
表5比較了不同定制加速器的五個主要特征,包括圖大小、目標(biāo)GNN、層定制支持、稀疏性處理和并行化級別。相關(guān)工作根據(jù)工作量的靈活性進(jìn)行分類,包括針對多種GNN算法的加速器和專注于GCN操作的加速器。
本節(jié)概述了設(shè)計定制加速器以支持多種GNN算法的工作。這些工作要么創(chuàng)建一個處理所有計算階段的統(tǒng)一架構(gòu),要么為不同計算和通信模式開發(fā)專用引擎。
全階段統(tǒng)一架構(gòu)。該架構(gòu)通過開發(fā)一個能夠處理這些階段的單一引擎來加速計算,盡管它們在計算和通信方面有不同的要求。EnGN、Rubik、G-CoS和GCoD等框架致力于優(yōu)化圖神經(jīng)網(wǎng)絡(luò)(GNN)的性能和效率。EnGN處理多種GNN,采用神經(jīng)圖形處理單元(NGPU)作為統(tǒng)一架構(gòu),并開發(fā)了維度感知階段重新排序策略以減少操作數(shù)量。Rubik提出了一種用于訓(xùn)練GIN和GraphSage的加速器,通過預(yù)處理器對圖進(jìn)行重新排序,并使用分層加速器架構(gòu)。G-CoS是一個自動化框架,包含一次性協(xié)同搜索算法和通用加速器搜索空間,以優(yōu)化GNN的性能和效率。GCoD是一個協(xié)同設(shè)計框架,通過優(yōu)化算法和硬件加速器來解決GNN推理中的極度稀疏問題。I-GCN提出了一種稱為“孤島化”的新方法,以提高GNN的數(shù)據(jù)局部性,其硬件架構(gòu)包括孤島定位器和孤島消費者。
每級專用模塊。該類別為GNN算法的主要計算階段設(shè)計了一個專用引擎,使每個引擎都能根據(jù)各階段需求進(jìn)行定制,并支持不同階段的并發(fā)執(zhí)行。HyGCN加速器將GNN算法分為聚合和組合兩個階段,采用獨立的處理引擎以數(shù)據(jù)流方式處理。FlowGNN是一種通用數(shù)據(jù)流架構(gòu),可支持多種消息傳遞GNN算法。BlockGNN利用塊循環(huán)權(quán)重矩陣和FFT/IFFT加速GNN模型更新階段的計算。DeepBurning-GL是一個自動化框架,用于生成GNN硬件加速器,并提供了三個模板。
該領(lǐng)域的研究專注于更專業(yè)的算法,特別是GCN。第一個子組開發(fā)了一個具有自定義層修改的深層管道,而第二個子組則采用固定硬件方法處理所有層。
可分層定制的深層管道。GCN加速器的基本優(yōu)化應(yīng)減少與內(nèi)存事務(wù)相關(guān)的費用。為此,構(gòu)建了一個深度管道,避免了不同GCN層之間的片外內(nèi)存事務(wù)。同時,根據(jù)每一層的單獨工作負(fù)載定制硬件參數(shù)。AWB-GCN 和 StreamGCN 是兩種高效的 GCN 加速器架構(gòu),旨在利用圖卷積網(wǎng)絡(luò)的稀疏性。AWB-GCN 提出了自動調(diào)整工作負(fù)載平衡技術(shù),包括分布平滑、邪惡行重新映射和遠(yuǎn)程切換,以克服負(fù)載不平衡問題。StreamGCN 則提出了一種高效且靈活的 GCN 加速器,用于從 DRAM、主機 CPU 和網(wǎng)絡(luò)傳輸小圖,并利用所有可用的稀疏性。這兩種架構(gòu)都支持層內(nèi)和層間并行,并且都基于內(nèi)積矩陣乘法。
全層統(tǒng)一架構(gòu)。GCN算法由多個層組成,每層具有不同特征。該類別的研究提出了跨層構(gòu)建適應(yīng)性更強的架構(gòu),并為所有層使用相同引擎。這些作品專注于特定的工作負(fù)載(GCN)而具有更大的定制可能性。GraphACT 開發(fā)了一種用于訓(xùn)練針對 CPUFPGA 異構(gòu)系統(tǒng)上小圖的 GCN 的加速器,通過創(chuàng)建小圖和定義三種類型的乘法來加速訓(xùn)練。張等人的方法專注于加速大圖的 GCN 推理,通過將輸入數(shù)據(jù)劃分為更小的尺寸,應(yīng)用冗余減少方案和節(jié)點重新排序階段來減少全局內(nèi)存訪問。BoostGCN 提出了一個旨在優(yōu)化 FPGA 上的 GCN 推理的框架,通過分區(qū)為中心的特征聚合和兩種類型的特征更新模塊來減少內(nèi)存流量并解決工作負(fù)載不平衡問題。
表6回顧了加速器,重點關(guān)注驗證方法和報告的加速。
本文討論了針對特殊圖類型(異構(gòu)圖和動態(tài)圖)和特殊GNN架構(gòu)(異構(gòu)GNN和注意力GNN)的加速技術(shù)。
異構(gòu)圖是一種新的數(shù)據(jù)結(jié)構(gòu),用于表示現(xiàn)實世界中的復(fù)雜圖,其中節(jié)點和邊具有不同類型,彼此具有顯著不同的含義。例如,在引文圖中,節(jié)點可以是作者、地點和論文,邊可以表示作者發(fā)表的論文、在地點發(fā)表的論文等。
許多 GNN 是為異構(gòu)圖設(shè)計的,面臨可擴展性挑戰(zhàn),需要加速。在異構(gòu)圖上,更好的采樣算法應(yīng)該執(zhí)行加權(quán)采樣以包括所有類型的鄰居節(jié)點。HetGNN 引入了一種新穎的異構(gòu)鄰居采樣器,克服了異構(gòu)圖上的特殊挑戰(zhàn)。HGT 是一種基于 Transformer 的異構(gòu)圖 GNN,引入了高效的采樣器,使模型能夠處理具有數(shù)十億條邊的 Web 規(guī)模圖數(shù)據(jù)。Pigeon 是一種中間表示和代碼生成器,用于異構(gòu)圖上的關(guān)系圖神經(jīng)網(wǎng)絡(luò)的端到端訓(xùn)練和推理,通過解耦模型語義、數(shù)據(jù)布局和特定于操作員的時間表來解決 RGNN 帶來的性能挑戰(zhàn)。
時空數(shù)據(jù)在科學(xué)研究和實際應(yīng)用中廣泛使用,動態(tài)圖在解決此類問題時表現(xiàn)出色。動態(tài)圖是隨時間變化的圖,其學(xué)習(xí)與推理面臨額外挑戰(zhàn)。因此,研究人員開發(fā)了時空GNN,對空間和動態(tài)演化進(jìn)行聯(lián)合建模。時空GNN應(yīng)用于大規(guī)模動態(tài)系統(tǒng)模擬,面臨與靜態(tài)圖上常規(guī)GNN類似的可擴展性問題,需要加速。時空GNN加速面臨特殊挑戰(zhàn),因為模型訓(xùn)練需要按時間順序進(jìn)行,圖操作需要同時考慮空間和時間鄰居。本節(jié)總結(jié)了最新的時空GNN加速工作,通常應(yīng)用于大規(guī)模動態(tài)圖的學(xué)習(xí)和推理。
TGL提出了一種加速連續(xù)時間GNN訓(xùn)練的統(tǒng)一框架,包括時間CSR數(shù)據(jù)結(jié)構(gòu)、并行采樣器和新型隨機塊調(diào)度技術(shù)。MTGNN通過圖學(xué)習(xí)模塊自動提取節(jié)點關(guān)系,并應(yīng)用集群減少內(nèi)存使用。GraphODE將GNN表達(dá)能力與學(xué)習(xí)動態(tài)系統(tǒng)ODE建模相結(jié)合,采用自適應(yīng)ODE求解器和耦合的ODE函數(shù)。GN-ETA提出了一種大規(guī)模GNN模型,用于實時估計到達(dá)時間(ETA),采用基于超路段的加速和MetaGradients方法。
動態(tài)圖的時空GNN是靜態(tài)GNN的擴展,對時間方面進(jìn)行了特殊處理。傳統(tǒng)方法采用循環(huán)神經(jīng)網(wǎng)絡(luò),但耗時且無法捕獲長期依賴性。最新進(jìn)展如位置編碼和神經(jīng)常微分方程加速了動態(tài)GNN。硬件加速器支持各種圖形拓?fù)?,但動態(tài)圖和異構(gòu)圖面臨挑戰(zhàn)。為解決此問題,可擴展軟件-硬件協(xié)同設(shè)計,包括開發(fā)分析器評估圖和目標(biāo)算法的要求,以及轉(zhuǎn)向更通用的設(shè)計架構(gòu)或支持多種專用架構(gòu)。
盡管GNN加速研究已取得進(jìn)展,但仍處于早期階段,未能跟上圖數(shù)據(jù)擴張速度。近期COTS系統(tǒng)和定制硬件加速開始受到關(guān)注,需探索針對異構(gòu)和動態(tài)圖的定制加速技術(shù)。下面介紹幾個值得進(jìn)一步探索的研究方向。
更好的圖修改算法。提高圖修改算法效率,如粗化、稀疏化和壓縮,有助于加速GNN訓(xùn)練。在預(yù)處理階段刪除冗余鄰居可提高效率,稀疏化保留局部性,壓縮提高訓(xùn)練效率。早期識別最佳壓縮圖將使該技術(shù)更有用。好的圖修改方法有利于GNN架構(gòu)的自動化設(shè)計和調(diào)整,簡化預(yù)處理可顯著加速GNN開發(fā)。
更好的采樣算法。GNN采樣方法未來可改進(jìn),如分層采樣,利用圖的多尺度結(jié)構(gòu)提高效率并捕獲多尺度特征,對大規(guī)模圖特別有用。動態(tài)圖的采樣方法也可進(jìn)一步研究,如節(jié)點和邊隨時間變化,單獨在每個時間戳應(yīng)用采樣效果不佳。
推理加速方法。如剪枝、量化和蒸餾可以組合使用,以提高速度。例如,可以將權(quán)重量化為二進(jìn)制,同時利用蒸餾。由于推理階段更靈活,這些方法可以更容易地以各種方式組合,如結(jié)合剪枝和量化實現(xiàn)低精度的稀疏模型,或結(jié)合剪枝和蒸餾進(jìn)一步細(xì)化蒸餾后的學(xué)生模型。
系統(tǒng)。現(xiàn)有研究主要關(guān)注提高GNN的運行時效率,但內(nèi)存需求仍是瓶頸。可采用重新物化、量化和數(shù)據(jù)修剪等技術(shù)減少內(nèi)存開銷。由于GNN模型不規(guī)則計算和數(shù)據(jù)訪問模式,高級訓(xùn)練/推理算法可能對系統(tǒng)不友好,系統(tǒng)友好的GNN算法協(xié)同設(shè)計有前景?,F(xiàn)有文獻(xiàn)缺乏GNN系統(tǒng)全棧開發(fā),結(jié)合不同級別技術(shù)形成超高效GNN系統(tǒng)是研究主題。
定制硬件。GNN加速的關(guān)鍵在于減少片外存儲器的數(shù)據(jù)獲取量。除了數(shù)據(jù)重用、緩存和優(yōu)化等技術(shù),還可以探索修剪、量化和壓縮等方法。為促進(jìn)GNN加速器設(shè)計,需要開發(fā)更先進(jìn)的自動化設(shè)計生成器,如神經(jīng)架構(gòu)搜索、基于學(xué)習(xí)的硬件設(shè)計評估模型和智能設(shè)計空間探索等技術(shù)。?
文章轉(zhuǎn)自微信公眾號@算法進(jìn)階