本發(fā)明屬于神經(jīng)網(wǎng)絡(luò)的加速器,具體涉及一種基于邏輯門神經(jīng)網(wǎng)絡(luò)的加速器的構(gòu)建方法。
背景技術(shù):
1、隨著神經(jīng)網(wǎng)絡(luò)應(yīng)用場景的不斷擴展,神經(jīng)網(wǎng)絡(luò)模型需要處理更加細(xì)致和復(fù)雜的數(shù)據(jù)。為滿足這些不斷提高的性能要求,網(wǎng)絡(luò)的規(guī)模也因此呈現(xiàn)出不斷增長的趨勢,然而,這也帶來了一系列的挑戰(zhàn),包括訓(xùn)練和推斷的計算復(fù)雜度增加、大規(guī)模模型參數(shù)的存儲和傳輸成本上升等。運算效率和功耗等瓶頸對更高效的硬件實現(xiàn)提出需求,以加速大規(guī)模神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和推斷。因此,應(yīng)運而生的專用神經(jīng)網(wǎng)絡(luò)加速器能夠以更高的能效執(zhí)行計算任務(wù),降低功耗和運行成本,這對于大規(guī)模的神經(jīng)網(wǎng)絡(luò)應(yīng)用具有重要的經(jīng)濟(jì)意義。
2、目前,在神經(jīng)網(wǎng)絡(luò)算法領(lǐng)域,很大一部分研究主要集中于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型,例如cnn、rnn、snn等神經(jīng)網(wǎng)絡(luò)算法。這些傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型在計算時,主要使用數(shù)值運算,這就導(dǎo)致它們在處理邏輯推理和二進(jìn)制數(shù)據(jù)時效率比較低下。而邏輯門神經(jīng)網(wǎng)絡(luò)使用最基本的與或非等邏輯門作為神經(jīng)網(wǎng)絡(luò)的基本神經(jīng)元,如圖1所示,在執(zhí)行二進(jìn)制或者邏輯推理任務(wù)時更高效。
3、由于基本邏輯門的操作更容易被理解,可以提高了神經(jīng)網(wǎng)絡(luò)模型的可解釋性。相比傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),邏輯門神經(jīng)網(wǎng)絡(luò)更加稀疏,有助于減少神經(jīng)元之間的連接,降低模型計算的復(fù)雜度。此外,與bnn相比,該神經(jīng)網(wǎng)絡(luò)的規(guī)模不受算法本身限制,由訓(xùn)練模型轉(zhuǎn)化為推理模型時,不存在精度損失,且在對同一數(shù)據(jù)集進(jìn)行推理時,邏輯門神經(jīng)網(wǎng)絡(luò)需要的操作數(shù)更少。因此,目前亟待設(shè)計針對邏輯門神經(jīng)網(wǎng)絡(luò)設(shè)計的加速器。
技術(shù)實現(xiàn)思路
1、針對以上問題,本發(fā)明提出了一種基于邏輯門神經(jīng)網(wǎng)絡(luò)的加速器構(gòu)建方法。
2、本發(fā)明的技術(shù)方案如下:
3、一種基于邏輯門神經(jīng)網(wǎng)絡(luò)的加速器構(gòu)建方法,具體包括如下步驟:
4、1)根據(jù)邏輯門神經(jīng)網(wǎng)絡(luò)的輸入神經(jīng)元數(shù)量,確定中間神經(jīng)網(wǎng)絡(luò)的層數(shù),以及每層神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的數(shù)量,針對邏輯門神經(jīng)網(wǎng)絡(luò)的算子之間的控制邏輯,建立邏輯門神經(jīng)網(wǎng)絡(luò)信息的有向無環(huán)圖dag;
5、2)通過使用計算圖調(diào)度方式實現(xiàn)對邏輯門神經(jīng)網(wǎng)絡(luò)合理地調(diào)度,基于調(diào)度后的dag編譯生成目標(biāo)代碼,并且對其時序進(jìn)行優(yōu)化;其中,所述調(diào)度包括如下具體步驟:
6、2-1)標(biāo)記邏輯門神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的入度值;
7、2-2)遍歷整個dag,尋找入度為0的節(jié)點,將這些節(jié)點保存在第一層,同時存入入度等于0的節(jié)點列表;
8、2-3)遍歷入度等于_0的節(jié)點列表,如果該節(jié)點存在子節(jié)點,則子節(jié)點的入度減1;如果子節(jié)點的入度等于0,則將該子節(jié)點存入當(dāng)前層;
9、2-4)重復(fù)步驟2-1)—步驟2-3),直到當(dāng)前層不存在子節(jié)點,調(diào)度結(jié)束;
10、2-5)通過插入寄存器來提升電路時序,對于需要跨流水級插入寄存器的節(jié)點,記錄該節(jié)點目前的最長流水線級數(shù),如果子節(jié)點所在流水線級小于該節(jié)點目前的最長流水線級,則從目前的寄存器鏈中獲取數(shù)據(jù);否則需要插入新的寄存器延長該節(jié)點的寄存器鏈;
11、3)采用基于門控時鐘握手協(xié)議的流水線,完成加速器的構(gòu)建。
12、進(jìn)一步,步驟1)中采用鄰接表和逆鄰接表數(shù)據(jù)結(jié)構(gòu)保存邏輯門神經(jīng)網(wǎng)絡(luò)信息,加快編譯速度。
13、進(jìn)一步,步驟1)中采用常量折疊(constant?folding,cf)、常量傳播(constantpropagation,cp)、死代碼消除(dead?code?elimination,dce)、移動消除(mobileelimination,me)對邏輯門神經(jīng)網(wǎng)絡(luò)信息進(jìn)行處理,實現(xiàn)減小邏輯門神經(jīng)網(wǎng)絡(luò)規(guī)模。
14、進(jìn)一步,步驟2-5)中采用華萊士樹加法器對時序進(jìn)行進(jìn)一步優(yōu)化,如果當(dāng)前華萊士樹單元樹的輸入數(shù)據(jù)數(shù)目不大于2,則不生成華萊士樹單元樹;如果輸入數(shù)據(jù)的數(shù)目大于2,則生成華萊士樹單元樹。
15、進(jìn)一步,在華萊士樹單元樹中每隔n層劃分一次流水線,并插入寄存器。
16、進(jìn)一步,步驟3)采用fifo并行架構(gòu),該fifo可參數(shù)化配置,采用axi?crossbar總線架構(gòu)。
17、本發(fā)明的有益效果如下:
18、本發(fā)明可以減小交換文件的大小,降低硬件資源開銷,節(jié)省成本。實驗結(jié)果證明,采用本發(fā)明構(gòu)建的加速器具有低功耗、高效率、低延遲等特點。在處理二進(jìn)制數(shù)據(jù)和簡單圖像識別方面具有較高的準(zhǔn)確率和較快的速度。
1.一種基于邏輯門神經(jīng)網(wǎng)絡(luò)的加速器構(gòu)建方法,具體包括如下步驟:
2.如權(quán)利要求1所述的加速器構(gòu)建方法,其特征在于,步驟1)中采用鄰接表和逆鄰接表數(shù)據(jù)結(jié)構(gòu)保存邏輯門神經(jīng)網(wǎng)絡(luò)信息。
3.如權(quán)利要求1所述的加速器構(gòu)建方法,其特征在于,步驟1)中采用常量折疊、常量傳播、死代碼消除和移動消除對邏輯門神經(jīng)網(wǎng)絡(luò)信息進(jìn)行處理。
4.如權(quán)利要求1所述的加速器構(gòu)建方法,其特征在于,步驟2-5)中采用華萊士樹加法器對時序進(jìn)行優(yōu)化,如果當(dāng)前華萊士樹單元樹的輸入數(shù)據(jù)數(shù)目不大于2,則不生成華萊士樹單元樹;如果輸入數(shù)據(jù)的數(shù)目大于2,則生成華萊士樹單元樹。
5.如權(quán)利要求4所述的加速器構(gòu)建方法,其特征在于,在華萊士樹單元樹中每隔n層劃分一次流水線,并插入寄存器。
6.如權(quán)利要求1所述的加速器構(gòu)建方法,其特征在于,步驟2)中使用硬件描述語言生成輸出層,完成對最后一層中間層輸出結(jié)果求和并且輸出計算結(jié)果。
7.如權(quán)利要求1所述的加速器構(gòu)建方法,其特征在于,步驟3)采用fifo并行架構(gòu),該fifo可參數(shù)化配置,采用axi?crossbar總線架構(gòu)。