本發(fā)明屬于圖數(shù)據(jù)分析處理,具體涉及一種面向大規(guī)模圖神經(jīng)網(wǎng)絡(luò)的高效微批次訓(xùn)練方法及裝置。
背景技術(shù):
1、gnn已成為學(xué)習(xí)和分析圖結(jié)構(gòu)數(shù)據(jù)的有力工具,已在多種與圖相關(guān)的任務(wù)中取得了顯著的預(yù)測性能,例如鏈接預(yù)測、節(jié)點(diǎn)分類和圖分類。然而,在大型圖上訓(xùn)練復(fù)雜的gnn模型面臨著巨大的挑戰(zhàn),特別是在內(nèi)存可擴(kuò)展性和計(jì)算效率方面。例如,gnn通過迭代地聚合來自鄰近節(jié)點(diǎn)的特征來學(xué)習(xí)節(jié)點(diǎn)向量表示。增加聚合的深度會(huì)導(dǎo)致必須加載到內(nèi)存中進(jìn)行聚合的特征向量數(shù)量呈指數(shù)增長??紤]現(xiàn)有主流硬件加速器(如gpu)的設(shè)備內(nèi)存是一種稀缺資源,像深度聚合這樣的提高模型質(zhì)量的方法很容易出現(xiàn)內(nèi)存不足(out?of?memory,oom)。這種內(nèi)存容量限制阻礙了使用更復(fù)雜的gnn架構(gòu)在大型圖上訓(xùn)練gnn的能力,例如使用更深的聚合深度、更大的采樣率和更先進(jìn)的聚合器(例如,lstm),這對(duì)于捕獲圖數(shù)據(jù)中的細(xì)微模式至關(guān)重要。
2、為了打破大規(guī)模gnn訓(xùn)練的gpu內(nèi)存容量限制,近年來在算法和系統(tǒng)優(yōu)化方面都涌現(xiàn)了大量的研究努力。在算法方面,研究人員已經(jīng)提出了多種抽樣技術(shù)(例如,按節(jié)點(diǎn)抽樣、按層抽樣和按子圖抽樣),通過在應(yīng)用gnn模型之前對(duì)原始圖進(jìn)行下采樣,使數(shù)據(jù)能夠適應(yīng)設(shè)備內(nèi)存。雖然抽樣使gnn能夠在更大的圖上進(jìn)行訓(xùn)練,但已有研究表明這可能會(huì)以犧牲模型精度為代價(jià)。在系統(tǒng)方面,研究人員已經(jīng)開發(fā)了專門的gnn框架,如dgl(minjie?wang,dazheng,zihao?ye,quan?gan,mufei?li,xiang?song,jinjing?zhou,chao?ma,lingfan?yu,yu?gai,et?al.deep?graph?library:a?graph-centric,highly-performant?package?forgraph?neural?networks.arxiv?preprint?arxiv:1909.01315,2019)、pyg(matthias?feyand?jan?eric?lenssen.fast?graph?representation?learning?with?pytorchgeometric.arxiv?preprint?arxiv:1903.02428,2019)和neugraph(lingxiao?ma,zhiyang,youshan?miao,jilong?xue,ming?wu,lidong?zhou,and?yafei?dai.neugraph:parallel?deep?neural?network?computation?on?large?graphs.in?2019usenix?annualtechnical?conference,pages?443-458,2019),通過實(shí)現(xiàn)高效的圖操作原語來提高gnn訓(xùn)練效率。然而,這些框架在處理大型圖或復(fù)雜的gnn架構(gòu)時(shí)遇到了內(nèi)存可擴(kuò)展性的挑戰(zhàn)。另一種選擇是使用分布式框架如distdgl(da?zheng,chao?ma,minjie?wang,jinjing?zhou,qidong?su,xiang?song,quan?gan,zheng?zhang,and?george?karypis.distdgl:distributed?graph?neural?network?training?for?billion-scale?graphs.in2020ieee/acm?10th?workshop?on?irregular?applications:architectures?andalgorithms,pages?36-44.ieee,2020)以分布式方式劃分和處理大型圖,利用多個(gè)gpu和/或計(jì)算節(jié)點(diǎn)的組合內(nèi)存來擴(kuò)展模型訓(xùn)練。這種方法雖然有效,但通常涉及的硬件成本顯著更高,這對(duì)于硬件預(yù)算有限的許多模型科學(xué)家來說變得不切實(shí)際。
3、在眾多方法中,微批次訓(xùn)練在深度學(xué)習(xí)中已成為一種有前景的技術(shù)。它涉及將一個(gè)小批量劃分為k個(gè)更小的微批次,并累積這些微批次的梯度來更新模型權(quán)重,如圖1所示。這種方法能夠在保持模型收斂性和質(zhì)量的同時(shí),降低內(nèi)存占用。與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)(nn)模型相比,gnn在批次內(nèi)輸出/標(biāo)簽和輸入特征之間表現(xiàn)出更復(fù)雜的依賴關(guān)系(例如n:m),而不是簡單的1:1映射。將微批次訓(xùn)練應(yīng)用于gnn模型存在節(jié)點(diǎn)冗余、負(fù)載不平衡和數(shù)據(jù)準(zhǔn)備開銷等方面挑戰(zhàn)。盡管最近的工作如betty(shuangyan?yang,minjia?zhang,wenqian?dong,and?dong?li.betty:enabling?large-scale?gnn?training?with?batch-level?graphpartitioning.in?proceedings?of?the?28th?acm?international?conference?onarchitectural?support?for?programming?languages?and?operating?systems,volume2,pages?103-117,2023)已經(jīng)探索了基于gnn的微批次訓(xùn)練,但它仍然存在以下缺陷:
4、(1)冗余減少不足,(2)計(jì)算不友好的負(fù)載均衡策略,(3)數(shù)據(jù)準(zhǔn)備開銷高,這些缺陷導(dǎo)致了在內(nèi)存消耗減少和訓(xùn)練效率方面的性能不夠理想,限制了微批次訓(xùn)練方法應(yīng)用于大規(guī)模gnn模型訓(xùn)練的實(shí)用性和性能潛力,從而導(dǎo)致大規(guī)模cnn模型在計(jì)算機(jī)設(shè)備應(yīng)用上適用度受限。
技術(shù)實(shí)現(xiàn)思路
1、為了解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提供了一種面向大規(guī)模圖神經(jīng)網(wǎng)絡(luò)的高效微批次訓(xùn)練方法。本發(fā)明要解決的技術(shù)問題通過以下技術(shù)方案實(shí)現(xiàn):
2、第一方面,本發(fā)明提供了一種面向大規(guī)模圖神經(jīng)網(wǎng)絡(luò)的高效微批次訓(xùn)練方法,包括:
3、s100,利用圖神經(jīng)網(wǎng)絡(luò)gnn對(duì)輸入圖進(jìn)行特征聚合,并確定gnn在消息傳遞過程中所涉及的源節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)以及目標(biāo)節(jié)點(diǎn)之間的邊;
4、s200,利用所述源節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)和所述目標(biāo)節(jié)點(diǎn)之間的邊構(gòu)建全局消息傳遞圖;
5、s300,基于出度的劃分方法將所述全局消息傳遞圖劃分為對(duì)應(yīng)于各個(gè)微批次的子圖,并將各個(gè)子圖中的節(jié)點(diǎn)構(gòu)成批次訓(xùn)練節(jié)點(diǎn)列表;
6、s400,遍歷所述批次訓(xùn)練節(jié)點(diǎn)列表為每個(gè)微批次創(chuàng)建對(duì)應(yīng)的微批次加載器mbl,以用于微批次的數(shù)據(jù)訓(xùn)練。
7、第二方面,本發(fā)明提供了一種面向大規(guī)模圖神經(jīng)網(wǎng)絡(luò)的高效微批次訓(xùn)練裝置,包括:
8、確定模塊,被配置為利用圖神經(jīng)網(wǎng)絡(luò)gnn對(duì)輸入圖進(jìn)行特征聚合,并確定gnn在消息傳遞過程中所涉及的源節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)以及目標(biāo)節(jié)點(diǎn)之間的邊;
9、構(gòu)建模塊,被配置為利用所述源節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)和所述目標(biāo)節(jié)點(diǎn)之間的邊構(gòu)建全局消息傳遞圖;
10、劃分模塊,被配置為基于出度的劃分方法將所述全局消息傳遞圖劃分為對(duì)應(yīng)于各個(gè)微批次的子圖,并將各個(gè)子圖中的節(jié)點(diǎn)構(gòu)成批次訓(xùn)練節(jié)點(diǎn)列表;
11、遍歷模塊,被配置為遍歷所述批次訓(xùn)練節(jié)點(diǎn)列表為每個(gè)微批次創(chuàng)建對(duì)應(yīng)的微批次加載器mbl,以用于微批次的數(shù)據(jù)訓(xùn)練。
12、第三方面,本發(fā)明提供了一種計(jì)算機(jī)設(shè)備包括:存儲(chǔ)器和處理器、所述存儲(chǔ)器和所述處理器耦合;
13、所述存儲(chǔ)器用于存儲(chǔ)一條或多條計(jì)算機(jī)指令;
14、所述處理器用于執(zhí)行所述一條或多條計(jì)算機(jī)指令,以實(shí)現(xiàn)如第一方面所述的面向大規(guī)模圖神經(jīng)網(wǎng)絡(luò)的高效微批次訓(xùn)練方法。
15、本發(fā)明至少具備以下有益效果:
16、1、本發(fā)明引入了消息傳遞流圖來輔助實(shí)現(xiàn)圖的劃分,通過為邊分配權(quán)重,基于源節(jié)點(diǎn)的出度,wenger能夠有效地將共享相同源節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)分入同一微批次,同時(shí)通過盡可能均勻地分布出度高的節(jié)點(diǎn)到不同微批次,來維持負(fù)載平衡。
17、2、本發(fā)明對(duì)子圖的劃分方法可以減少微批次中的冗余節(jié)點(diǎn),并且通過智能地分配高連接度的節(jié)點(diǎn),減少了訓(xùn)練過程中的負(fù)載不平衡問題。
18、3、本發(fā)明通過使用全局消息傳遞流圖,優(yōu)化了出度中心圖劃分過程,避免了每個(gè)訓(xùn)練周期都需要重新劃分的開銷。
19、4、本發(fā)明引入了一種針對(duì)微批次的數(shù)據(jù)加載機(jī)制,提高了數(shù)據(jù)加載的效率,減少了數(shù)據(jù)準(zhǔn)備的開銷。
20、5、本發(fā)明結(jié)合消息傳遞流圖、出度中心圖劃分方法和微批次的數(shù)據(jù)加載機(jī)制,使得wenger能夠在內(nèi)存容量限制之外,高效地訓(xùn)練大型圖上的gnn,使得訓(xùn)練更加可行和高效。本發(fā)明盡管采用了微批次訓(xùn)練,但仍然保持了與全批次訓(xùn)練相當(dāng)?shù)哪P褪諗啃院蜏?zhǔn)確性。與現(xiàn)有最先進(jìn)方法相比,本發(fā)明的訓(xùn)練方法在內(nèi)存消耗和訓(xùn)練時(shí)間上都實(shí)現(xiàn)了顯著的減少。
21、以下將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。