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