本發(fā)明屬于神經(jīng)網(wǎng)絡(luò)加速,提出了一種低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法與加速器。
背景技術(shù):
1、隨著人工智能技術(shù)的快速發(fā)展,神經(jīng)網(wǎng)絡(luò)模型在各種應(yīng)用中的使用日益廣泛。這些模型通常需要大量的計(jì)算資源。在移動(dòng)設(shè)備和嵌入式系統(tǒng)中,計(jì)算資源成為了限制模型應(yīng)用的關(guān)鍵因素。為了解決這一問題,研究者們提出了多種神經(jīng)網(wǎng)絡(luò)壓縮和加速技術(shù)。
2、在現(xiàn)有的技術(shù)中,主要有兩種方法來降低神經(jīng)網(wǎng)絡(luò)的計(jì)算復(fù)雜度:一種是網(wǎng)絡(luò)剪枝,通過去除網(wǎng)絡(luò)中不重要的連接來減少計(jì)算量;另一種是量化,即降低網(wǎng)絡(luò)中權(quán)重的比特?cái)?shù),從而減少存儲(chǔ)需求和計(jì)算復(fù)雜度。
3、盡管現(xiàn)有的量化技術(shù)能夠在一定程度上降低神經(jīng)網(wǎng)絡(luò)的計(jì)算復(fù)雜度,但這些方法普遍存在以下問題:現(xiàn)有量化技術(shù)往往會(huì)導(dǎo)致神經(jīng)網(wǎng)絡(luò)性能的顯著下降,特別是在低比特量化(如四比特以下)時(shí);現(xiàn)有的神經(jīng)網(wǎng)絡(luò)計(jì)算單元設(shè)計(jì)復(fù)雜,難以在保持低功耗的同時(shí)實(shí)現(xiàn)高計(jì)算效率;現(xiàn)有技術(shù)在硬件實(shí)現(xiàn)上存在局限性,如靈活性差、擴(kuò)展性不足等。
4、針對(duì)上述問題,本技術(shù)致力于提出一種低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法與加速器。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于解決現(xiàn)有的低比特卷積神經(jīng)網(wǎng)絡(luò)精度較低以及卷積神經(jīng)網(wǎng)絡(luò)計(jì)算單元設(shè)計(jì)復(fù)雜,難以在保持低功耗的同時(shí)實(shí)現(xiàn)高計(jì)算效率的問題,提出了一種低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法與加速器。所述方法在將神經(jīng)網(wǎng)絡(luò)量化為較低比特位寬的同時(shí),避免神經(jīng)網(wǎng)絡(luò)的精度損失過多;所述加速器為所述方法提供了硬件計(jì)算支持,通過在特征通道維度展開實(shí)現(xiàn)了卷積計(jì)算的靈活性,能適應(yīng)不同尺寸的卷積計(jì)算;一種可配置的加法樹,實(shí)現(xiàn)了運(yùn)行時(shí)可配置計(jì)算并行度,提高了所述加速器的通用性和靈活性;所述加速器也提出了一種全加法卷積的設(shè)計(jì),避免了傳統(tǒng)卷積對(duì)于乘法器的需求,降低了所述加速器對(duì)于硬件平臺(tái)的需求,實(shí)現(xiàn)了計(jì)算邏輯簡(jiǎn)單、低功耗、高效率、高靈活性的低比特卷積加速器,部分解決了小資源平臺(tái)難以部署神經(jīng)網(wǎng)絡(luò)的問題。
2、為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
3、作為本發(fā)明的第一方面,提出了一種低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法,包括如下步驟:
4、s1、對(duì)嵌入量化塊的全精度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行參數(shù)初始化,包括:使用全精度神經(jīng)網(wǎng)絡(luò)模型的參數(shù)初始化嵌入量化塊的全精度神經(jīng)網(wǎng)絡(luò)模型;使用隨機(jī)數(shù)初始化量化塊的可訓(xùn)練參數(shù);
5、所述量化塊,包括第一量化塊和第二量化塊且均包括除法、取整及乘法;
6、s2、對(duì)嵌入量化塊的全精度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行前向推理,針對(duì)某一層的操作過程具體為:每一卷積層的權(quán)重通過第一量化塊量化后再與輸入特征圖進(jìn)行卷積;卷積結(jié)果再通過第二量化塊進(jìn)行量化得到輸出特征圖;
7、s3、反向傳播并計(jì)算嵌入量化塊的全精度神經(jīng)網(wǎng)絡(luò)模型中所有層參數(shù)的梯度;s3,具體實(shí)施時(shí),針對(duì)某一層的操作過程如下:
8、s31、求損失函數(shù)的梯度并反向傳播,得到該卷積層輸出特征圖的梯度;
9、s32、對(duì)第二量化塊中的乘法求梯度得到量化步長(zhǎng)的部分梯度和取整后結(jié)果的梯度;
10、s33、使用取整函數(shù)梯度近似函數(shù)代替求第二量化塊中取整函數(shù)的梯度,求出除法后結(jié)果的梯度;
11、s34、對(duì)第二量化塊中的除法求梯度得到量化步長(zhǎng)的完整梯度和第二量化塊的輸入的梯度;
12、s35、計(jì)算第二量化塊量化位寬和量化范圍的梯度;
13、s36、將s32到s35中的第二量化塊替換為第一量化塊,重復(fù)s32到s35,得到第一量化塊輸入的梯度與及第一量化塊量化位寬和量化范圍的梯度;
14、s4、對(duì)所有的可訓(xùn)練參數(shù)根據(jù)計(jì)算得到的梯度進(jìn)行更新。
15、所述方法能將神經(jīng)網(wǎng)絡(luò)量化為較低比特位寬;避免神經(jīng)網(wǎng)絡(luò)的精度損失過多;
16、s1所述嵌入量化塊的全精度神經(jīng)網(wǎng)絡(luò)模型,包括網(wǎng)絡(luò)結(jié)構(gòu)和各網(wǎng)絡(luò)層的權(quán)重;所述量化塊的可訓(xùn)練參數(shù),包括量化位寬和量化范圍。
17、s1所述嵌入量化塊的全精度神經(jīng)網(wǎng)絡(luò)模型中的每一卷積層均嵌入第一量化塊和第二量化塊。
18、所述第一量化塊將輸入權(quán)重進(jìn)行量化,得到量化后輸入權(quán)重,此權(quán)重再與輸入特征圖進(jìn)行卷積,得到輸入量化卷積結(jié)果;所述第二量化塊,將輸入量化卷積結(jié)果進(jìn)行量化,得到輸出特征圖,該輸出特征圖即該卷積層的輸出。
19、s2所述量化,包括如下子過程:
20、s21、由可訓(xùn)練參數(shù)計(jì)算得到量化步長(zhǎng);
21、s22、將量化塊的輸入除以量化步長(zhǎng),所得結(jié)果進(jìn)行取整,再乘以量化步長(zhǎng),得到量化后參數(shù)。
22、所述量化塊的輸入,對(duì)于第一量化塊而言對(duì)應(yīng),是卷積層的權(quán)重;對(duì)于第二量化塊而言,是該卷積層的權(quán)重量化后再與輸入特征圖進(jìn)行卷積的卷積結(jié)果。
23、s36所述第一量化塊的輸入,即該卷積層的權(quán)重;s4所述所有的可訓(xùn)練參數(shù),包括嵌入量化塊的全精度神經(jīng)網(wǎng)絡(luò)模型的參數(shù)以及量化塊的訓(xùn)練參數(shù)。
24、一種全加法低比特神經(jīng)網(wǎng)絡(luò)加速器,與統(tǒng)一內(nèi)存和通用處理器相連,包括硬件數(shù)據(jù)重排模塊、緩存調(diào)度模塊、輸入特征圖緩存、并行計(jì)算陣列及輸出特征圖緩存;所述硬件數(shù)據(jù)重排模塊與統(tǒng)一內(nèi)存及緩存調(diào)度模塊相連;所述緩存調(diào)度模塊與硬件數(shù)據(jù)重排模塊、通用處理器、輸入特征圖緩存及輸出特征圖緩存相連;所述輸入特征圖緩存與統(tǒng)一內(nèi)存、緩存調(diào)度模塊和并行計(jì)算陣列相連;所述輸出特征圖緩存與統(tǒng)一內(nèi)存、緩存調(diào)度模塊和并行計(jì)算陣列相連;所述并行計(jì)算陣列與緩存調(diào)度模塊、輸入特征圖緩存和輸出特征圖緩存相連。
25、所述硬件數(shù)據(jù)重排模塊接收來自所述緩存調(diào)度模塊的每層輸入特征圖的尺寸及數(shù)據(jù)地址信息,根據(jù)所述尺寸及數(shù)據(jù)地址信息從統(tǒng)一內(nèi)存中讀取當(dāng)前層輸入特征圖的數(shù)據(jù)信息,將數(shù)據(jù)的排列方式轉(zhuǎn)換成高、寬、特征通道數(shù)的順序后存回統(tǒng)一內(nèi)存中;
26、所述緩存調(diào)度模塊接收來自通用處理器的輸入特征圖尺寸、輸入特征圖數(shù)據(jù)地址、權(quán)重尺寸、權(quán)重?cái)?shù)據(jù)地址、輸出特征圖尺寸、輸出特征圖數(shù)據(jù)地址及當(dāng)前層計(jì)算類型信息,在每層計(jì)算開始時(shí),將輸入特征圖尺寸和輸入特征圖數(shù)據(jù)地址發(fā)送給所述硬件數(shù)據(jù)重排模塊;根據(jù)輸入特征圖尺寸、權(quán)重尺寸計(jì)算得到并行計(jì)算陣列的并行度劃分信息發(fā)送給并行計(jì)算陣列;根據(jù)并行度劃分信息、輸入特征圖尺寸、輸入特征圖數(shù)據(jù)地址、權(quán)重尺寸和權(quán)重?cái)?shù)據(jù)地址計(jì)算得到不同的輸入緩存讀入地址和輸入緩存讀取長(zhǎng)度,發(fā)送給輸入特征圖緩存;根據(jù)并行度劃分信息、輸出特征圖尺寸、輸出特征圖數(shù)據(jù)地址計(jì)算得到不同的輸出緩存寫入地址和輸出緩存寫入長(zhǎng)度,發(fā)送給輸出特征圖緩存;
27、所述輸入特征圖緩存接收來自所述緩存調(diào)度模塊的輸入緩存讀入地址和輸入緩存讀取長(zhǎng)度等信息,從統(tǒng)一內(nèi)存中讀取分塊的輸入特征圖數(shù)據(jù)和權(quán)重?cái)?shù)據(jù),發(fā)送給所述并行計(jì)算陣列;
28、所述輸出特征圖緩存接受來自所述緩存調(diào)度模塊的輸出緩存寫入地址和輸出緩存寫入長(zhǎng)度等信息,將來自并行計(jì)算陣列的分塊的輸出特征圖數(shù)據(jù)發(fā)送給統(tǒng)一內(nèi)存;
29、所述并行計(jì)算陣列接收來自緩存調(diào)度模塊的并行度劃分信息,根據(jù)所述并行度劃分信息配置在輸入通道和輸出通道并行計(jì)算的并行度;從輸入特征圖緩存讀入分塊的輸入特征圖數(shù)據(jù)和權(quán)重?cái)?shù)據(jù)進(jìn)行卷積計(jì)算,計(jì)算完畢后得到輸出特征圖存入輸出特征圖緩存中;
30、所述并行計(jì)算陣列,包含權(quán)重緩存陣列、一級(jí)加法樹陣列、二級(jí)加法樹單元、累加器陣列及量化單元陣列;所述權(quán)重緩存陣列與輸入特征圖緩存和一級(jí)加法樹陣列相連,所述一級(jí)加法樹陣列與輸入特征圖緩存和權(quán)重緩存陣列相連;所述二級(jí)加法樹單元與一級(jí)加法樹陣列和累加器陣列相連;所述累加器陣列與二級(jí)加法樹單元和量化單元陣列相連;所述量化單元陣列與累加器陣列和輸出特征圖緩存相連。
31、所述權(quán)重緩存陣列包含若干個(gè)權(quán)重緩存;每個(gè)一級(jí)加法樹陣列,包括若干一級(jí)加法樹;每個(gè)一級(jí)加法樹,又包括三個(gè)加法器,可實(shí)現(xiàn)低比特乘法計(jì)算;所述二級(jí)加法樹單元,包括加法器級(jí)數(shù)控制器和若干級(jí)加法器;所述加法器級(jí)數(shù)控制器用于使能加法器的級(jí)數(shù);所述累加器陣列,包括若干累加器;所述量化單元陣列,包括若干個(gè)量化單元;所述累加器陣列接收來自二級(jí)加法樹單元的加法結(jié)果,在進(jìn)行指定周期數(shù)的累加之后,將累加結(jié)果傳遞給量化單元陣列;所述量化單元陣列接收來自累加器陣列的累加結(jié)果,進(jìn)行量化操作后,得到輸出特征圖結(jié)果,發(fā)送給輸出特征圖緩存。
32、所述權(quán)重緩存陣列接收由輸入特征圖緩存?zhèn)鬟f的權(quán)重?cái)?shù)據(jù),將權(quán)重?cái)?shù)據(jù)暫存于權(quán)重緩存中,待需要時(shí)傳遞給一級(jí)加法樹陣列;所述一級(jí)加法樹陣列從輸入特征圖緩存和權(quán)重緩存中讀取輸入特征圖數(shù)據(jù)和權(quán)重?cái)?shù)據(jù),計(jì)算得到乘法結(jié)果后將乘法結(jié)果傳遞給二級(jí)加法樹單元;所述二級(jí)加法樹單元接收來自一級(jí)加法樹陣列的乘法結(jié)果,根據(jù)配置信息進(jìn)行指定級(jí)數(shù)的加法運(yùn)算后,將加法結(jié)果傳遞給累加器陣列;
33、所述加速器為所述方法提供硬件計(jì)算支持,通過在特征通道維度展開實(shí)現(xiàn)了卷積計(jì)算的靈活性,能適應(yīng)不同尺寸的卷積計(jì)算;所述加速器也提出了一種全加法卷積的設(shè)計(jì),避免了傳統(tǒng)卷積對(duì)于乘法器的需求,降低了所述加速器對(duì)于硬件平臺(tái)的需求,實(shí)現(xiàn)了計(jì)算邏輯簡(jiǎn)單、低功耗、高效率、高靈活性的低比特卷積加速器,部分解決了小資源平臺(tái)難以部署神經(jīng)網(wǎng)絡(luò)的問題。一種可配置的加法樹設(shè)計(jì),實(shí)現(xiàn)了運(yùn)行時(shí)可配置計(jì)算并行度,提高了所述加速器的通用性和靈活性。
34、有益效果:
35、本發(fā)明提出了一種低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法和加速器,相對(duì)比于現(xiàn)有的低比特神經(jīng)網(wǎng)絡(luò),具有以下有益效果:
36、1.所述低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法提出了取整函數(shù)梯度近似函數(shù),改善了傳統(tǒng)低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法中使用近似直通估計(jì)法產(chǎn)生的梯度失配問題,提高了低比特神經(jīng)網(wǎng)絡(luò)訓(xùn)練精度;
37、2.所述低比特神經(jīng)網(wǎng)絡(luò)加速器可在運(yùn)行時(shí)配置卷積計(jì)算在輸入通道維度和輸出通道維度的并行度,改善了傳統(tǒng)神經(jīng)網(wǎng)絡(luò)加速器通用性較低的問題,使得所述低比特神經(jīng)網(wǎng)絡(luò)加速器可同時(shí)計(jì)算不同特征圖通道數(shù)、不同分組的卷積,提高了神經(jīng)網(wǎng)絡(luò)加速器的通用性和計(jì)算速度;
38、3.所述低比特神經(jīng)網(wǎng)絡(luò)加速器的卷積計(jì)算的輸入特征圖數(shù)據(jù)、權(quán)重?cái)?shù)據(jù)和輸出特征圖數(shù)據(jù)的位寬均為四比特。相比于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)加速器使用八比特,所述低比特神經(jīng)網(wǎng)絡(luò)加速器可以消耗更少的資源,實(shí)現(xiàn)更高的并行度;
39、4.所述低比特神經(jīng)網(wǎng)絡(luò)加速器使用全加法運(yùn)算計(jì)算卷積,降低了神經(jīng)網(wǎng)絡(luò)加速器對(duì)于計(jì)算能力的需求,使得所述低比特神經(jīng)網(wǎng)絡(luò)加速器可以部署在更廣泛的硬件設(shè)備上,增大了神經(jīng)網(wǎng)絡(luò)的使用范圍。