本發(fā)明涉及超大規(guī)模集成電路設(shè)計(jì)領(lǐng)域,特別是一種針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置。
背景技術(shù):
1、softmax函數(shù)是神經(jīng)網(wǎng)絡(luò)中的重要組成部分,比如在神經(jīng)網(wǎng)絡(luò)中的歸一化層以及transformer網(wǎng)絡(luò)的注意力機(jī)制(attention)中。而softmax函數(shù)數(shù)學(xué)形式復(fù)雜,其包含冪函數(shù)和除法等操作,具有非線性的特點(diǎn),很難在硬件上進(jìn)行快速且高精度的實(shí)現(xiàn)。其次,在硬件加速中神經(jīng)網(wǎng)絡(luò)往往被量化,網(wǎng)絡(luò)中的softmax函數(shù)后通常跟有一次量化操作,這會(huì)在softmax函數(shù)輸出數(shù)據(jù)中引入大量零值。這些零值對(duì)網(wǎng)絡(luò)精度沒(méi)有影響,如果能在硬件加速時(shí)預(yù)測(cè)并跳除這些零值的計(jì)算將極大提高硬件能效。已有工作提出了很多softmax的擬合計(jì)算方法,但這些方法實(shí)現(xiàn)的softmax函數(shù)精度低,且無(wú)法預(yù)測(cè)和跳除零值操作,需要較多硬件資源開銷,硬件能效低。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有softmax函數(shù)計(jì)算方法實(shí)現(xiàn)的精度低,需要的硬件資源開銷大,能效低等不足,提供一種針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置。
2、為了實(shí)現(xiàn)以上目的,本發(fā)明的技術(shù)方案為:
3、一種針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,用于實(shí)現(xiàn)數(shù)學(xué)等價(jià)變換后的softmax函數(shù),如下式所示:其中,softmax函數(shù)的輸入數(shù)據(jù)為長(zhǎng)度為m的向量x=[x0,x1,…,xm-1],x′i=xi-xmax,i=0,1,…,m-1,xmax為向量x中的最大值;裝置包括第一模塊、第二模塊和第三模塊,第一模塊包括第一零值預(yù)測(cè)單元、第一softmax函數(shù)計(jì)算單元和第一選擇器單元,第二模塊包括第二softmax函數(shù)計(jì)算單元,第三模塊包括第二零值預(yù)測(cè)單元、第三softmax函數(shù)計(jì)算單元和第二選擇器單元,其中,將xi與xmax輸入第一零值預(yù)測(cè)單元,輸出第一零值信號(hào)或x′i,將x′i輸入第一softmax函數(shù)計(jì)算單元,得到第一內(nèi)部信號(hào),將第一零值信號(hào)或第一內(nèi)部信號(hào)輸入第一選擇器單元,第一選擇器單元用于選擇基于第一零值信號(hào)將0作為裝置的輸出數(shù)據(jù),或者將第一內(nèi)部信號(hào)作為第一模塊的輸出數(shù)據(jù)輸入第二softmax函數(shù)計(jì)算單元,得到第二內(nèi)部信號(hào),將xi、xmax和第二內(nèi)部信號(hào)輸入第二零值預(yù)測(cè)單元,輸出第二零值信號(hào)或x″i,將x″i輸入第三softmax函數(shù)計(jì)算單元,得到結(jié)果信號(hào),將第二零值信號(hào)或結(jié)果信號(hào)輸入第二選擇器單元,第二選擇器單元用于選擇基于第二零值信號(hào)將0作為裝置的輸出數(shù)據(jù),或者將結(jié)果信號(hào)作為裝置的輸出數(shù)據(jù)。
4、作為優(yōu)選,第一零值預(yù)測(cè)單元包括依次連接的第一減法器和第一判斷器,第一減法器用于對(duì)xi與xmax進(jìn)行減法操作,得到x′i,x′i=x-xmax,將x′i輸入判斷器中,判斷器用于判斷x′i是否滿足零值預(yù)測(cè)公式;若滿足,則第一零值預(yù)測(cè)單元輸出第一零值信號(hào),若不滿足,則第一零值預(yù)測(cè)單元輸出x′i。
5、作為優(yōu)選,第二零值預(yù)測(cè)單元包括依次連接的第二減法器和第二判斷器,第二減法器用于對(duì)xi、xmax和第二內(nèi)部信號(hào)進(jìn)行減法操作,得到x″i,x″i=x-xmax-ln(s),ln(s)表示第二內(nèi)部信號(hào),將x″i輸入第二判斷器中,第二判斷器用于判斷x″i是否滿足零值預(yù)測(cè)公式;若滿足,則第二零值預(yù)測(cè)單元輸出第二零值信號(hào),若不滿足,則第二零值預(yù)測(cè)單元輸出x″i。
6、作為優(yōu)選,零值預(yù)測(cè)公式為:
7、j<-n·ln(2);
8、其中,j為x′i或x″i,n為softmax函數(shù)量化后的位寬。
9、作為優(yōu)選,第一softmax函數(shù)計(jì)算單元包括第一log2常數(shù)乘法器、第一擬合計(jì)算器、第一移位器和累加器,第一log2常數(shù)乘法器用于對(duì)輸入的x′i實(shí)現(xiàn)x′i×log2(e)的常數(shù)乘法,得到第一常數(shù)乘法結(jié)果,其中,n表示第一常數(shù)乘法結(jié)果的整數(shù)部分,f表示第一常數(shù)乘法結(jié)果的小數(shù)部分;將第一常數(shù)乘法結(jié)果的小數(shù)部分輸入第一擬合計(jì)算器中,對(duì)第一常數(shù)乘法結(jié)果的小數(shù)部分進(jìn)行以2為底的冪函數(shù)計(jì)算,得到第一擬合結(jié)果a,將第一常數(shù)乘法結(jié)果的整數(shù)部分n和第一擬合結(jié)果a輸入第一移位器中,對(duì)第一擬合結(jié)果a進(jìn)行n次右移,得到第一右移結(jié)果r1,將每次計(jì)算得到的第一右移結(jié)果r1輸入累加器中進(jìn)行累加操作,得到第一內(nèi)部信號(hào)s。
10、作為優(yōu)選,第二softmax函數(shù)計(jì)算單元包括最高位檢測(cè)器、第二移位器、第二擬合計(jì)算器、ln常數(shù)乘法器和加法器,將第一內(nèi)部信號(hào)s輸入最高位檢測(cè)器中進(jìn)行最高位檢測(cè),得到最高位結(jié)果v,將第一內(nèi)部信號(hào)s和最高位結(jié)果v輸入第二移位器中,對(duì)第一內(nèi)部信號(hào)進(jìn)行v次右移,得到第二右移結(jié)果r2,將第二右移結(jié)果輸入第二擬合計(jì)算器中,對(duì)第二右移結(jié)果r2進(jìn)行以2為底的對(duì)數(shù)函數(shù)計(jì)算,得到第二擬合結(jié)果b,將最高位結(jié)果v輸入ln常數(shù)乘法器中,實(shí)現(xiàn)v×log2(e)的常數(shù)乘法,得到第二常數(shù)乘法結(jié)果c,將第二擬合結(jié)果b和第二常數(shù)乘法結(jié)果c輸入加法器中進(jìn)行加法操作,得到第二內(nèi)部信號(hào)ln(s)。
11、作為優(yōu)選,第三softmax函數(shù)計(jì)算單元包括第二log2常數(shù)乘法器、第三擬合計(jì)算器和第三移位器,第二log2常數(shù)乘法器用于對(duì)輸入的x″i實(shí)現(xiàn)x″i×log2(e)的常數(shù)乘法,得到第三常數(shù)乘法結(jié)果,其中,n’表示第三常數(shù)乘法結(jié)果的整數(shù)部分,f’表示第三常數(shù)乘法結(jié)果的小數(shù)部分;將第三常數(shù)乘法結(jié)果的小數(shù)部分輸入第三擬合計(jì)算器中,對(duì)第三常數(shù)乘法結(jié)果的小數(shù)部分進(jìn)行以2為底的冪函數(shù)計(jì)算,得到第三擬合結(jié)果a’,將第三常數(shù)乘法結(jié)果的整數(shù)部分n’和第三擬合結(jié)果a’輸入第三移位器中,對(duì)第三擬合結(jié)果a’進(jìn)行n’次右移,得到結(jié)果信號(hào)。
12、作為優(yōu)選,第一選擇單元中,若第一選擇單元的輸入數(shù)據(jù)為第一零值信號(hào),則跳過(guò)第二模塊和第三模塊的計(jì)算過(guò)程,直接將0作為裝置的輸出數(shù)據(jù);若第一選擇單元的輸入數(shù)據(jù)為第一內(nèi)部信號(hào),則將第一內(nèi)部信號(hào)作為第一模塊的輸出數(shù)據(jù)。
13、作為優(yōu)選,第二選擇單元中,若第二選擇單元的輸入數(shù)據(jù)為第二零值信號(hào),則將0作為裝置的輸出數(shù)據(jù);若第二選擇單元的輸入數(shù)據(jù)為結(jié)果信號(hào),則將結(jié)果信號(hào)作為裝置的輸出數(shù)據(jù)。
14、相比于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
15、本發(fā)明提出了一種針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,該裝置包含的第一零值預(yù)測(cè)單元和第二零值預(yù)測(cè)單元能通過(guò)與量化原理結(jié)合預(yù)測(cè)輸出零值,從而跳除softmax函數(shù)中冗余計(jì)算,進(jìn)而降低裝置資源功耗、面積等開銷且提高能效。為實(shí)現(xiàn)高精度softmax函數(shù)計(jì)算,該裝置包含的第一softmax函數(shù)計(jì)算單元、第二softmax函數(shù)計(jì)算單元和第三softmax函數(shù)計(jì)算單元通過(guò)數(shù)學(xué)等價(jià)變換方式改進(jìn)softmax函數(shù)的格式,從而降低算法復(fù)雜度;通過(guò)引入常數(shù)乘法方式降低冪函數(shù)和對(duì)數(shù)函數(shù)的計(jì)算復(fù)雜度;基于由硬件近似計(jì)算造成的誤差提出懲罰項(xiàng)并改進(jìn)數(shù)學(xué)公式,從而提高softmax函數(shù)硬件計(jì)算的精度,最終實(shí)現(xiàn)softmax函數(shù)的高精度的計(jì)算目標(biāo)。
1.一種針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,用于實(shí)現(xiàn)數(shù)學(xué)等價(jià)變換后的softmax函數(shù),如下式所示:其中,softmax函數(shù)的輸入數(shù)據(jù)為長(zhǎng)度為m的向量x=[x0,x1,...,xm-1],x′i=xi-xmax,i=0,1,...,m-1,xmax為向量x中的最大值;所述裝置包括第一模塊、第二模塊和第三模塊,所述第一模塊包括第一零值預(yù)測(cè)單元、第一softmax函數(shù)計(jì)算單元和第一選擇器單元,所述第二模塊包括第二softmax函數(shù)計(jì)算單元,所述第三模塊包括第二零值預(yù)測(cè)單元、第三softmax函數(shù)計(jì)算單元和第二選擇器單元,其中,將xi與xmax輸入所述第一零值預(yù)測(cè)單元,輸出第一零值信號(hào)或x′i,將x′i輸入所述第一softmax函數(shù)計(jì)算單元,得到第一內(nèi)部信號(hào),將所述第一零值信號(hào)或所述第一內(nèi)部信號(hào)輸入所述第一選擇器單元,所述第一選擇器單元用于選擇基于所述第一零值信號(hào)將0作為所述裝置的輸出數(shù)據(jù),或者將所述第一內(nèi)部信號(hào)作為所述第一模塊的輸出數(shù)據(jù)輸入所述第二softmax函數(shù)計(jì)算單元,得到第二內(nèi)部信號(hào),將xi、xmax和第二內(nèi)部信號(hào)輸入所述第二零值預(yù)測(cè)單元,輸出第二零值信號(hào)或x″i,將x″i輸入所述第三sofimax函數(shù)計(jì)算單元,得到結(jié)果信號(hào),將所述第二零值信號(hào)或所述結(jié)果信號(hào)輸入所述第二選擇器單元,所述第二選擇器單元用于選擇基于所述第二零值信號(hào)將0作為所述裝置的輸出數(shù)據(jù),或者將所述結(jié)果信號(hào)作為所述裝置的輸出數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述第一零值預(yù)測(cè)單元包括依次連接的第一減法器和第一判斷器,所述第一減法器用于對(duì)xi與xmax進(jìn)行減法操作,得到x′i,x′i=x-xmax,將x′i輸入所述判斷器中,所述判斷器用于判斷x′i是否滿足零值預(yù)測(cè)公式;若滿足,則所述第一零值預(yù)測(cè)單元輸出第一零值信號(hào),若不滿足,則所述第一零值預(yù)測(cè)單元輸出x′i。
3.根據(jù)權(quán)利要求2所述的針對(duì)sofimax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述第二零值預(yù)測(cè)單元包括依次連接的第二減法器和第二判斷器,所述第二減法器用于對(duì)xi、xmax和第二內(nèi)部信號(hào)進(jìn)行減法操作,得到x″i,x″i=x-xmax-ln(s),ln(s)表示第二內(nèi)部信號(hào),將x″i輸入所述第二判斷器中,所述第二判斷器用于判斷x″i是否滿足零值預(yù)測(cè)公式;若滿足,則所述第二零值預(yù)測(cè)單元輸出第二零值信號(hào),若不滿足,則所述第二零值預(yù)測(cè)單元輸出x″i。
4.根據(jù)權(quán)利要求3所述的針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述零值預(yù)測(cè)公式為:
5.根據(jù)權(quán)利要求1所述的針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述第一softmax函數(shù)計(jì)算單元包括第一log2常數(shù)乘法器、第一擬合計(jì)算器、第一移位器和累加器,所述第一log2常數(shù)乘法器用于對(duì)輸入的x′i實(shí)現(xiàn)x′i×log2(e)的常數(shù)乘法,得到第一常數(shù)乘法結(jié)果,其中,n表示第一常數(shù)乘法結(jié)果的整數(shù)部分,f表示第一常數(shù)乘法結(jié)果的小數(shù)部分;將所述第一常數(shù)乘法結(jié)果的小數(shù)部分輸入所述第一擬合計(jì)算器中,對(duì)所述第一常數(shù)乘法結(jié)果的小數(shù)部分進(jìn)行以2為底的冪函數(shù)計(jì)算,得到第一擬合結(jié)果a,將第一常數(shù)乘法結(jié)果的整數(shù)部分n和第一擬合結(jié)果a輸入所述第一移位器中,對(duì)所述第一擬合結(jié)果a進(jìn)行n次右移,得到第一右移結(jié)果r1,將每次計(jì)算得到的所述第一右移結(jié)果r1輸入所述累加器中進(jìn)行累加操作,得到第一內(nèi)部信號(hào)s。
6.根據(jù)權(quán)利要求1所述的針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述第二softmax函數(shù)計(jì)算單元包括最高位檢測(cè)器、第二移位器、第二擬合計(jì)算器、ln常數(shù)乘法器和加法器,將所述第一內(nèi)部信號(hào)s輸入所述最高位檢測(cè)器中進(jìn)行最高位檢測(cè),得到最高位結(jié)果v,將所述第一內(nèi)部信號(hào)和最高位結(jié)果v輸入所述第二移位器中,對(duì)所述第一內(nèi)部信號(hào)s進(jìn)行v次右移,得到第二右移結(jié)果r2,將所述第二右移結(jié)果輸入所述第二擬合計(jì)算器中,對(duì)所述第二右移結(jié)果r2進(jìn)行以2為底的對(duì)數(shù)函數(shù)計(jì)算,得到第二擬合結(jié)果b,將所述最高位結(jié)果v輸入所述ln常數(shù)乘法器中,實(shí)現(xiàn)v×log2(e)的常數(shù)乘法,得到第二常數(shù)乘法結(jié)果c,將所述第二擬合結(jié)果b和第二常數(shù)乘法結(jié)果c輸入所述加法器中進(jìn)行加法操作,得到第二內(nèi)部信號(hào)ln(s)。
7.根據(jù)權(quán)利要求1所述的針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述第三softmax函數(shù)計(jì)算單元包括第二log2常數(shù)乘法器、第三擬合計(jì)算器和第三移位器,所述第二log2常數(shù)乘法器用于對(duì)輸入的x″i實(shí)現(xiàn)x″i×log2(e)的常數(shù)乘法,得到第三常數(shù)乘法結(jié)果,其中,n’表示第三常數(shù)乘法結(jié)果的整數(shù)部分,f’表示第三常數(shù)乘法結(jié)果的小數(shù)部分;將所述第三常數(shù)乘法結(jié)果的小數(shù)部分輸入所述第三擬合計(jì)算器中,對(duì)所述第三常數(shù)乘法結(jié)果的小數(shù)部分進(jìn)行以2為底的冪函數(shù)計(jì)算,得到第三擬合結(jié)果a’,將第三常數(shù)乘法結(jié)果的整數(shù)部分n’和第三擬合結(jié)果a’輸入所述第三移位器中,對(duì)所述第三擬合結(jié)果a’進(jìn)行n’次右移,得到結(jié)果信號(hào)。
8.根據(jù)權(quán)利要求1所述的針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述第一選擇單元中,若所述第一選擇單元的輸入數(shù)據(jù)為所述第一零值信號(hào),則跳過(guò)所述第二模塊和第三模塊的計(jì)算過(guò)程,直接將0作為所述裝置的輸出數(shù)據(jù);若第一選擇單元的輸入數(shù)據(jù)為所述第一內(nèi)部信號(hào),則將所述第一內(nèi)部信號(hào)作為所述第一模塊的輸出數(shù)據(jù)。
9.根據(jù)權(quán)利要求1所述的針對(duì)softmax函數(shù)的高精度近似計(jì)算裝置,其特征在于,所述第二選擇單元中,若所述第二選擇單元的輸入數(shù)據(jù)為所述第二零值信號(hào),則將0作為所述裝置的輸出數(shù)據(jù);若第二選擇單元的輸入數(shù)據(jù)為所述結(jié)果信號(hào),則將所述結(jié)果信號(hào)作為所述裝置的輸出數(shù)據(jù)。