本發(fā)明涉及圖神經(jīng)網(wǎng)絡(luò),特別是涉及圖神經(jīng)網(wǎng)絡(luò)模型的編譯。
背景技術(shù):
1、在當(dāng)前大數(shù)據(jù)時代,越來越多的數(shù)據(jù)以非結(jié)構(gòu)化的方式進(jìn)行存儲。在這種背景下,圖作為一種通用的數(shù)據(jù)表示格式,具有天然的優(yōu)勢,能夠很好地表達(dá)數(shù)據(jù)本身以及數(shù)據(jù)之間的聯(lián)系。通過將實體抽象為頂點,將頂點間的關(guān)系表示為邊,圖的數(shù)據(jù)結(jié)構(gòu)可以較好地描述復(fù)雜數(shù)據(jù)之間的關(guān)聯(lián)和交互。這種趨勢也對現(xiàn)代神經(jīng)網(wǎng)絡(luò)提出了更高的要求,需要處理的數(shù)據(jù)形式變得更加復(fù)雜。同時也促進(jìn)了針對不規(guī)則數(shù)據(jù)的算子為核心的神經(jīng)網(wǎng)絡(luò)模型的快速新興與發(fā)展。
2、近年來,圖神經(jīng)網(wǎng)絡(luò)(graph?neural?network,gnn)作為一種具備強(qiáng)大圖學(xué)習(xí)和推理能力的模型,已經(jīng)成為了學(xué)術(shù)界和工業(yè)界的研究熱點。gnn的出現(xiàn)使得機(jī)器學(xué)習(xí)可以應(yīng)用于非歐幾里得空間的圖結(jié)構(gòu)中,并具有對圖進(jìn)行學(xué)習(xí)的能力。gnn的概念最初由gori等人于2005年提出,并由scarselli等人于2009年進(jìn)一步闡明。這些早期的研究主要探索以迭代的方式,通過循環(huán)神經(jīng)架構(gòu)傳播鄰近信息來學(xué)習(xí)目標(biāo)頂點的表示。受到卷積網(wǎng)絡(luò)在機(jī)器學(xué)習(xí)領(lǐng)域獲得巨大成功的激勵,近來出現(xiàn)了許多為圖數(shù)據(jù)重新定義卷積概念的方法。bruna等人于2013年提出了關(guān)于圖卷積網(wǎng)絡(luò)(gcn)的首項重要研究,他們基于譜圖論開發(fā)了一種圖卷積的變體]。這項研究后期發(fā)展為圖卷積領(lǐng)域的譜方法。最初的譜方法具有時空復(fù)雜度較高的弊端。在gcn的啟發(fā)下,空間方法應(yīng)運而生。其主要特點是更側(cè)重于考慮圖的空間結(jié)構(gòu)的信息提取。后續(xù)也有研究工作在頂點域用注意力機(jī)制、序列化模型等建模頂點間的權(quán)重,探究進(jìn)一步的信息提取。由于圖神經(jīng)網(wǎng)絡(luò)具備較好的性能和可解釋性,使得其最近已成為一種廣泛應(yīng)用的圖分析方法。目前,圖神經(jīng)網(wǎng)絡(luò)已在社交網(wǎng)絡(luò)、推薦系統(tǒng)、交通等多個應(yīng)用領(lǐng)域展示出良好的效果。
3、圖1展示了圖神經(jīng)網(wǎng)絡(luò)模型計算的一個典型流程。圖神經(jīng)網(wǎng)絡(luò)模型在計算時,會同時把圖拓?fù)鋽?shù)據(jù)(如節(jié)點和邊的信息),以及輸入特征張量(如節(jié)點和邊的屬性)作為輸入,在經(jīng)過不同的gnn模型層計算后得到對應(yīng)的輸出特征張量。這些輸出的特征張量會在不同的下游計算任務(wù)中被進(jìn)一步使用。在每一個圖神經(jīng)網(wǎng)絡(luò)的模型層中,圖神經(jīng)網(wǎng)絡(luò)的計算會同時結(jié)合圖算子(如聚合、傳播、更新等)與神經(jīng)網(wǎng)絡(luò)算子(如卷積、池化、全連接等)。由于圖神經(jīng)網(wǎng)絡(luò)模型需要同時處理不規(guī)則的圖拓?fù)鋽?shù)據(jù)和規(guī)則的特征張量數(shù)據(jù),因此其計算過程同時具有不規(guī)則與規(guī)則相互交織、混合執(zhí)行模式。這種混合執(zhí)行模式給針對圖神經(jīng)網(wǎng)絡(luò)的計算優(yōu)化帶來了新的挑戰(zhàn)和機(jī)遇。一方面,針對不規(guī)則部分,計算策略需要考慮到圖數(shù)據(jù)的稀疏性和非均勻性帶來的訪存和計算效率問題;另一方面,針對規(guī)則部分,計算策略需要考慮到傳統(tǒng)神經(jīng)網(wǎng)絡(luò)計算所具有的高并行度和高計算強(qiáng)度特性。因此,在設(shè)計高效可擴(kuò)展的圖神經(jīng)網(wǎng)絡(luò)計算優(yōu)化方案時,既需要充分利用現(xiàn)有硬件平臺提供的并行資源和內(nèi)存層次結(jié)構(gòu),也需要針對包括算子層和模型層在內(nèi)的不同抽象層級類型和粒度之間進(jìn)行協(xié)同優(yōu)化。
4、面對日益迭代的神經(jīng)網(wǎng)絡(luò)模型和百花齊放的硬件平臺,如何有效執(zhí)行神經(jīng)網(wǎng)絡(luò)模型算法計算,充分發(fā)揮硬件的算力,成為了人工智能領(lǐng)域面臨的一個新的挑戰(zhàn)。針對特定領(lǐng)域的硬件加速平臺,往往需要設(shè)計新的架構(gòu),其中包括新的指令集和編程模型,從而需要全棧支持的軟硬件實現(xiàn)。然而,算法模型的不斷迭代以及硬件平臺的碎片化,給神經(jīng)網(wǎng)絡(luò)的快速高效部署帶來了巨大挑戰(zhàn)。
5、為了應(yīng)對這些挑戰(zhàn),神經(jīng)網(wǎng)絡(luò)編譯優(yōu)化成為備受關(guān)注的研究領(lǐng)域。編譯優(yōu)化的研究工作可以分為算子層級和模型層級兩大類。算子層級的工作針對單個計算操作進(jìn)行優(yōu)化,而模型層級則從整體上考慮如何提高神經(jīng)網(wǎng)絡(luò)性能。這兩種方法都具有重要意義,可以顯著提升神經(jīng)網(wǎng)絡(luò)的性能表現(xiàn)。
6、對于算子層級的編譯優(yōu)化,現(xiàn)有的方案主要依托嵌套循環(huán)的代碼抽象表示,支持的優(yōu)化以循環(huán)變換為主。針對稠密算子和稀疏算子,目前都有不少研究工作取得了進(jìn)展。針對稠密算子的編譯優(yōu)化的研究工作中,facebook推出了tensor?comprenension,提供了一系列編程原語,并使用多面體模型對程序中的循環(huán)進(jìn)行優(yōu)化,以實現(xiàn)深度學(xué)習(xí)應(yīng)用的計算優(yōu)化。華盛頓大學(xué)借鑒halide[]語言的計算和調(diào)度分離定義的設(shè)計方法,推出了將深度學(xué)習(xí)工作負(fù)載部署到硬件的端到端框架tvm,用于優(yōu)化深度學(xué)習(xí)模型在cpu、gpu、arm等任意目標(biāo)硬件平臺下的快速部署和高效推理執(zhí)行。針對稀疏算子的編譯優(yōu)化的研究工作中,taco能夠為通用稀疏代數(shù)計算自動生成高效且精簡的代碼,graphit則是一種針對圖數(shù)據(jù)處理的典型工作,它遵循了調(diào)度與計算解耦的設(shè)計原則,能夠為不同大小和結(jié)構(gòu)的圖上運行的不同的圖算法實現(xiàn)針對cpu硬件平臺上的代碼優(yōu)化和自動生成。
7、針對模型層級的編譯優(yōu)化,現(xiàn)有的方案主要基于計算圖抽象表示來進(jìn)行分析與優(yōu)化。計算圖是當(dāng)今主流的神經(jīng)網(wǎng)絡(luò)模型層級的表示方法。計算圖是一個有向無環(huán)圖,其中的節(jié)點對應(yīng)著神經(jīng)網(wǎng)絡(luò)模型中的算子,邊則用于表示算子之間的數(shù)據(jù)依賴關(guān)系。目前計算圖的抽象表達(dá)已被廣泛應(yīng)用于諸如tensorflow和pytorch等神經(jīng)網(wǎng)絡(luò)框架中?;谟嬎銏D可以進(jìn)行模型層級的分析和優(yōu)化。算子融合是一種典型的算子之間優(yōu)化方法,通過將一些連續(xù)的算子融合成一個大的算子,以消除不必要的中間結(jié)果的存儲開銷,并減少不必要的輸入讀取。目前,許多神經(jīng)網(wǎng)絡(luò)框架和編譯器都支持算子融合的優(yōu)化。計算圖重寫是另一種典型的模型層級的優(yōu)化方法。該方法利用算子的特性,在滿足計算等價性的前提下,對滿足特定模式的算子組合進(jìn)行映射和更換,使得神經(jīng)網(wǎng)絡(luò)模型以更低的訪存或計算開銷模式進(jìn)行計算。
8、seastar是一個具有頂點中心的gnn編程模型框架。它在計算圖上使用圖信息標(biāo)簽來描述和跟蹤模型的算子和數(shù)據(jù)特征。基于這種特征信息,seastar結(jié)合固定的靜態(tài)模板實現(xiàn)了算子融合和代碼自動生成在內(nèi)的gnn模型的編譯優(yōu)化,從而提高gnn模型執(zhí)行的計算性能。
9、雖然seastar實現(xiàn)了一些針對gnn模型的編譯優(yōu)化,但是仍然存在一些缺點與限制。首先,seastar沒有實現(xiàn)計算圖重寫的模型層優(yōu)化,這使得對于模型的優(yōu)化不完全,不能夠最大程度地發(fā)揮計算資源的潛力。其次,seastar針對算子層級的代碼生成是通過人為提供少量的靜態(tài)模板所實現(xiàn),這種方式會導(dǎo)致代碼執(zhí)行的策略空間受到很大的限制,這樣就限制了算子級別優(yōu)化的能力。
10、graphiler是一個專門為dgl所設(shè)計的gnn編譯器。它提供了gnn模型層級的優(yōu)化能力。針對gnn的用戶自定義輸入的模型代碼,graphiler能夠基于模式匹配的方式,實現(xiàn)模型層級的算子重排序和算子融合在內(nèi)的優(yōu)化。在優(yōu)化后的計算圖中,算子會再次映射到dgl的復(fù)合算子中,從而實現(xiàn)更加高效的計算。雖然graphiler具有計算圖重構(gòu)和模型層級算子優(yōu)化等優(yōu)點,但其存在一些缺陷和限制。其中最顯著的問題是它缺乏針對算子級別代碼生成和優(yōu)化的能力。優(yōu)化后的計算圖中的算子只能和dgl所提供的算子完成映射,由于無法對個別算子進(jìn)行優(yōu)化,算子層級的執(zhí)行效率無法得到最大化的提升。同時,也限制了編譯器的優(yōu)化空間,無法最大程度地發(fā)揮計算資源的潛力。
11、隨著gnn模型變得越來越復(fù)雜,如何高效執(zhí)行g(shù)nn模型,已成為了一個備受關(guān)注的任務(wù)。然而,當(dāng)前已有的gnn編譯優(yōu)化的技術(shù)方案存在諸多限制,無法實現(xiàn)完備的編譯優(yōu)化,這給模型廣泛的應(yīng)用部署實現(xiàn)造成了嚴(yán)重的阻礙。
技術(shù)實現(xiàn)思路
1、鑒于以上所述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種圖神經(jīng)網(wǎng)絡(luò)模型的編譯優(yōu)化方法、編譯器及存儲介質(zhì),用于優(yōu)化圖神經(jīng)網(wǎng)絡(luò)模型的編譯,從而實現(xiàn)圖神經(jīng)網(wǎng)絡(luò)模型的高性能執(zhí)行。
2、為實現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種圖神經(jīng)網(wǎng)絡(luò)模型的編譯優(yōu)化方法,包括:獲取輸入的圖神經(jīng)網(wǎng)絡(luò)模型,通過配置計算圖重寫規(guī)則和張量的圖級語義對所述圖神經(jīng)網(wǎng)絡(luò)模型的第一層級中間表示進(jìn)行優(yōu)化;對所述第一層級的優(yōu)化輸出進(jìn)行計算圖切分;基于切分的計算圖和圖感知嵌套循環(huán)體對所述圖神經(jīng)網(wǎng)絡(luò)模型的第二層級中間表示進(jìn)行優(yōu)化。
3、于本發(fā)明的一種具體實施方式中,所述通過配置計算圖重寫規(guī)則對所述圖神經(jīng)網(wǎng)絡(luò)模型的第一層級中間表示進(jìn)行優(yōu)化中包括:將所述圖神經(jīng)網(wǎng)絡(luò)模型的復(fù)合圖算子分解成基本圖算子和神經(jīng)網(wǎng)絡(luò)算子,并為所述基本圖算子配置重寫規(guī)則。
4、于本發(fā)明的一種具體實施方式中,通過張量的圖級語義對所述圖神經(jīng)網(wǎng)絡(luò)模型的第一層級中間表示進(jìn)行優(yōu)化中包括:使用所述基本圖算子的分散函數(shù)和聚集函數(shù)建立所述基本圖算子的相關(guān)屬性傳播規(guī)則;其中,所述分散函數(shù)將頂點張量轉(zhuǎn)換為邊張量,所述聚集函數(shù)將邊張量轉(zhuǎn)換為頂點張量。
5、于本發(fā)明的一種具體實施方式中,還包括:基于與所述基本圖算子的相關(guān)的張量類型獲取對應(yīng)的張量形狀的圖語義,并基于所述圖語義估算計算開銷;其中,通過不同的維度標(biāo)記符號標(biāo)記所述定點張量和所述邊張量。
6、于本發(fā)明的一種具體實施方式中,所述對所述第一層級的優(yōu)化輸出進(jìn)行計算圖切分包括:對輸入的圖神經(jīng)網(wǎng)絡(luò)模型生成所有不同的有效的計算圖變換輸出版本;通過不同版本之間的計算量的對比,輸出最優(yōu)的候選輸出;對所述第一層級的最優(yōu)的候選輸出進(jìn)行計算圖切分。
7、于本發(fā)明的一種具體實施方式中,所述圖感知嵌套循環(huán)體包括:每個循環(huán)元素都具有頂點的圖語音信息的頂點圖感知嵌套循環(huán)體和每個循環(huán)元素都具有邊的圖語音信息的邊圖感知嵌套循環(huán)體。
8、于本發(fā)明的一種具體實施方式中,所述基于切分的計算圖和圖感知嵌套循環(huán)體對所述圖神經(jīng)網(wǎng)絡(luò)模型的第二層級中間表示進(jìn)行優(yōu)化中包括:構(gòu)建對基本圖算子進(jìn)行調(diào)度變換的圖遍歷相關(guān)原語和用于所述圖感知嵌套循環(huán)體融合的算子融合相關(guān)原語。
9、于本發(fā)明的一種具體實施方式中,還包括:將所述第一層級中間表示劃分為水平分區(qū)和豎直分區(qū);所述豎直分區(qū)中,以scatter操作作為起始邊界,并在下一個scatter操作或具有依賴關(guān)系和多個輸出的節(jié)點結(jié)束;所述水平分區(qū)中,在線程級別上合并具有相同計算形狀的圖元素操作。
10、為實現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明還提供一種計算機(jī)存儲介質(zhì),存儲有程序指令,其中,所述程序指令被執(zhí)行時實現(xiàn)如上所述的圖神經(jīng)網(wǎng)絡(luò)模型的編譯優(yōu)化方法的步驟。
11、為實現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明還提供一種編譯器,應(yīng)用如上所述的圖神經(jīng)網(wǎng)絡(luò)模型的編譯優(yōu)化方法進(jìn)行編譯。
12、如上所述,本發(fā)明的圖神經(jīng)網(wǎng)絡(luò)模型的編譯優(yōu)化方法、編譯器及存儲介質(zhì)具有以下有益效果:
13、本發(fā)明實現(xiàn)了算子的動態(tài)代碼程序自適應(yīng)自動生成的編譯優(yōu)化。本發(fā)明提供的編譯器不僅能夠?qū)崿F(xiàn)基于模型層級和算子層級的編譯優(yōu)化,而且采用了全新的中間表示方法,使得優(yōu)化效果更加顯著。在確保計算等價性的前提下,本發(fā)明能夠大幅度提升gnn模型的計算性能。為基于gnn模型的廣泛應(yīng)用提供高性能的計算支持。