本發(fā)明涉及深度學(xué)習(xí)的,具體而言,涉及一種神經(jīng)網(wǎng)絡(luò)的算子消除方法、系統(tǒng)、電子設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中的算子是構(gòu)成神經(jīng)網(wǎng)絡(luò)的基本計算單元,算子負(fù)責(zé)對輸入數(shù)據(jù)進行各種數(shù)學(xué)運算和處理。而隨著神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的快速發(fā)展,大量的算子計算操作會使得神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)較為復(fù)雜,也會增加內(nèi)存、片上系統(tǒng)的緩存讀寫需求。因此,可以通過對非必要的算子進行算子消除,實現(xiàn)對神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中的計算量、內(nèi)存和緩存等進行優(yōu)化。
2、目前一般可以基于修改算子的shape信息(算子的維度或大小信息)來消除重塑算子(如reshape/transpose/split等算子),或者也可以通過特殊的數(shù)據(jù)搬移邏輯來消除內(nèi)存拼接算子(如concat算子),以降低算法的復(fù)雜度,進而可以減算子配置、調(diào)度和在內(nèi)存緩存上的交互時間,從而加速了運行推理時間。
3、但發(fā)明人發(fā)現(xiàn),基于復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),目前的算子消除方法無法根據(jù)硬件的特性進行深度的算子優(yōu)化。例如,目前的算子消除方法無法結(jié)合模型圖結(jié)構(gòu)最佳內(nèi)存分配方法(best?filt)進行算子消除,從而無法實現(xiàn)運行推理時間的深度加速。
技術(shù)實現(xiàn)思路
1、本發(fā)明提供了一種神經(jīng)網(wǎng)絡(luò)的算子消除方法、系統(tǒng)、電子設(shè)備和存儲介質(zhì),用于解決目前的算子消除方法無法根據(jù)硬件的特性進行深度的算子優(yōu)化的問題。
2、根據(jù)本發(fā)明的一方面,本發(fā)明提供了一種神經(jīng)網(wǎng)絡(luò)的算子消除方法,包括:在神經(jīng)網(wǎng)絡(luò)模型中確定出存在算子消除需求的目標(biāo)子圖結(jié)構(gòu);將目標(biāo)子圖結(jié)構(gòu)中的可消除狀態(tài)的算子確定為目標(biāo)消除算子;遍歷所有的子圖結(jié)構(gòu),直至確定出所有存在算子消除需求的目標(biāo)子圖結(jié)構(gòu)及對應(yīng)的目標(biāo)消除算子;在目標(biāo)消除算子的所有輸入之前,計算目標(biāo)消除算子的輸入和輸出的緩沖區(qū)內(nèi)存總和;根據(jù)緩沖區(qū)內(nèi)存總和確定目標(biāo)消除算子的目標(biāo)緩存區(qū),以將目標(biāo)消除算子分配至目標(biāo)緩存區(qū),目標(biāo)緩存區(qū)至少包括片上緩存區(qū)或全局內(nèi)存緩存區(qū);將所有的目標(biāo)消除算子的輸出配置同一緩存地址;確定目標(biāo)消除算子的跳躍偏移量;基于跳躍偏移量對目標(biāo)消除算子進行編譯,以完成算子消除。
3、根據(jù)本發(fā)明的一些實施例,在目標(biāo)消除算子的所有輸入之前,計算目標(biāo)消除算子的輸入和輸出的緩沖區(qū)內(nèi)存總和包括:基于預(yù)設(shè)規(guī)則對所有的目標(biāo)消除算子進行排序;依次計算每一目標(biāo)消除算子的輸入和輸出的緩沖區(qū)內(nèi)存總和;其中,在目標(biāo)消除算子的輸入和輸出共用同一緩沖區(qū)的情況下,對目標(biāo)消除算子的輸入和輸出僅計算一次。
4、根據(jù)本發(fā)明的一些實施例,根據(jù)緩沖區(qū)內(nèi)存總和確定目標(biāo)消除算子的目標(biāo)緩存區(qū),以將目標(biāo)消除算子分配至目標(biāo)緩存區(qū)包括:判斷緩沖區(qū)內(nèi)存總和與片上緩存區(qū)的內(nèi)存的大?。辉诰彌_區(qū)內(nèi)存總和小于片上緩存區(qū)的內(nèi)存的大小的情況下,將目標(biāo)消除算子分配至片上緩存區(qū);在緩沖區(qū)內(nèi)存總和不小于片上緩存區(qū)的內(nèi)存的大小的情況下,將目標(biāo)消除算子分配至全局內(nèi)存緩存區(qū)。
5、根據(jù)本發(fā)明的一些實施例,目標(biāo)子圖結(jié)構(gòu)為網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)子圖。
6、根據(jù)本發(fā)明的另一方面,本發(fā)明提供了一種神經(jīng)網(wǎng)絡(luò)的算子消除系統(tǒng),該算子消除系統(tǒng)包括算子處理模塊、內(nèi)存處理模塊和算子消除模塊。算子處理模塊在神經(jīng)網(wǎng)絡(luò)模型中確定出存在算子消除需求的目標(biāo)子圖結(jié)構(gòu),將目標(biāo)子圖結(jié)構(gòu)中的可消除狀態(tài)的算子確定為目標(biāo)消除算子,以及遍歷所有的子圖結(jié)構(gòu),直至確定出所有存在算子消除需求的目標(biāo)子圖結(jié)構(gòu)及對應(yīng)的目標(biāo)消除算子。內(nèi)存處理模塊在目標(biāo)消除算子的所有輸入之前,計算目標(biāo)消除算子的輸入和輸出的緩沖區(qū)內(nèi)存總和;根據(jù)緩沖區(qū)內(nèi)存總和確定目標(biāo)消除算子的目標(biāo)緩存區(qū),以將目標(biāo)消除算子分配至目標(biāo)緩存區(qū),目標(biāo)緩存區(qū)至少包括片上緩存區(qū)或全局內(nèi)存緩存區(qū);以及將所有的目標(biāo)消除算子的輸出配置同一緩存地址。算子消除模塊確定目標(biāo)消除算子的跳躍偏移量;基于跳躍偏移量對目標(biāo)消除算子進行編譯,以完成算子消除。
7、根據(jù)本發(fā)明的一些實施例,內(nèi)存處理模塊基于預(yù)設(shè)規(guī)則對所有的目標(biāo)消除算子進行排序;內(nèi)存處理模塊依次計算每一目標(biāo)消除算子的輸入和輸出的緩沖區(qū)內(nèi)存總和;其中,在目標(biāo)消除算子的輸入和輸出共用同一緩沖區(qū)的情況下,內(nèi)存處理模塊對目標(biāo)消除算子的輸入和輸出僅計算一次。
8、根據(jù)本發(fā)明的一些實施例,內(nèi)存處理模塊判斷緩沖區(qū)內(nèi)存總和與片上緩存區(qū)的內(nèi)存的大?。粌?nèi)存處理模塊在緩沖區(qū)內(nèi)存總和小于片上緩存區(qū)的內(nèi)存的大小的情況下,將目標(biāo)消除算子分配至片上緩存區(qū);內(nèi)存處理模塊在緩沖區(qū)內(nèi)存總和不小于片上緩存區(qū)的內(nèi)存的大小的情況下,將目標(biāo)消除算子分配至全局內(nèi)存緩存區(qū)。
9、根據(jù)本發(fā)明的一些實施例,目標(biāo)子圖結(jié)構(gòu)為網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)子圖。
10、根據(jù)本發(fā)明的又一方面,本發(fā)明還提供了一種電子設(shè)備。電子設(shè)備包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序,當(dāng)一個或多個程序被一個或多個處理器執(zhí)行時,使得一個或多個處理器,能夠?qū)崿F(xiàn)如上文所述的算子消除方法。
11、根據(jù)本發(fā)明的又一方面,本發(fā)明還提供了一種非易失性計算機可讀存儲介質(zhì)。該存儲介質(zhì)上存儲有計算機程序,該計算機程序被處理器執(zhí)行時能夠?qū)崿F(xiàn)如上文所述的算子消除方法。
12、本發(fā)明提供的算子消除方法通過確定出目標(biāo)消除算子,通過計算目標(biāo)消除算子的輸入和輸出的緩沖區(qū)內(nèi)存總和,可以結(jié)合最佳內(nèi)存分配方法將該目標(biāo)消除算子優(yōu)先分配至片上緩存區(qū),并通過將目標(biāo)消除算子的輸出配置為同一緩存地址,基于跳躍偏移量進行算子的編譯,從而可以實現(xiàn)算子消除。
13、本發(fā)明提供的算子消除方法具有結(jié)合最佳內(nèi)存分配方法進行內(nèi)存分配的特點,可以優(yōu)先將該網(wǎng)絡(luò)結(jié)構(gòu)在片上緩存區(qū)執(zhí)行。以及該算子消除方法可以實現(xiàn)非必要算子的算子消除,可以使得網(wǎng)絡(luò)結(jié)構(gòu)更加清晰簡單,并且可以明顯減少神經(jīng)網(wǎng)絡(luò)模型的推理時間。
1.一種神經(jīng)網(wǎng)絡(luò)的算子消除方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的算子消除方法,其特征在于,所述在所述目標(biāo)消除算子的所有輸入之前,計算所述目標(biāo)消除算子的輸入和輸出的緩沖區(qū)內(nèi)存總和包括:
3.根據(jù)權(quán)利要求1所述的算子消除方法,其特征在于,所述根據(jù)所述緩沖區(qū)內(nèi)存總和確定所述目標(biāo)消除算子的目標(biāo)緩存區(qū),以將所述目標(biāo)消除算子分配至所述目標(biāo)緩存區(qū)包括:
4.根據(jù)權(quán)利要求1所述的算子消除方法,其特征在于,所述目標(biāo)子圖結(jié)構(gòu)為網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)子圖。
5.一種神經(jīng)網(wǎng)絡(luò)的算子消除系統(tǒng),其特征在于,包括:
6.根據(jù)權(quán)利要求5所述的算子消除系統(tǒng),其特征在于,所述內(nèi)存處理模塊基于預(yù)設(shè)規(guī)則對所有的目標(biāo)消除算子進行排序;
7.根據(jù)權(quán)利要求5所述的算子消除系統(tǒng),其特征在于,所述內(nèi)存處理模塊判斷所述緩沖區(qū)內(nèi)存總和與所述片上緩存區(qū)的內(nèi)存的大小;
8.根據(jù)權(quán)利要求5所述的算子消除系統(tǒng),其特征在于,所述目標(biāo)子圖結(jié)構(gòu)為網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)子圖。
9.一種電子設(shè)備,其特征在于,包括:
10.一種非易失性計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1-4任一所述的算子消除方法。