本披露一般涉及人工智能領(lǐng)域。更具體地,本披露涉及一種用于基于轉(zhuǎn)換器的雙向編碼器表示(bert)網(wǎng)絡(luò)的方法、設(shè)備、集成電路裝置和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、bert網(wǎng)絡(luò)主要由多頭自注意力(multi-head?attention,mha)模塊和前饋神經(jīng)網(wǎng)絡(luò)(feedforward?networks,ffn)模塊構(gòu)成,這兩個(gè)模塊中都涉及包括超越函數(shù)的激活函數(shù)的計(jì)算。具體地,mha模塊涉及到softmax激活函數(shù)的計(jì)算,而ffn模塊涉及到高斯誤差線性單元(gelu)激活函數(shù)的計(jì)算。在量化推理(qat)場(chǎng)景下,需要將輸入從浮點(diǎn)類型量化成int8類型進(jìn)行矩陣乘法運(yùn)算。然而,在硬件上實(shí)現(xiàn)這兩個(gè)模塊的超越函數(shù)計(jì)算時(shí),硬件的效率通常會(huì)低于矩陣運(yùn)算和向量運(yùn)算。在int8場(chǎng)景下,以mha模塊為例,做完批量矩陣乘法后,所有可能的結(jié)果取值在[-128,127]這256個(gè)離散值中。這意味著會(huì)有很多重復(fù)計(jì)算,從而導(dǎo)致算力的浪費(fèi)。因此,如何在bert網(wǎng)絡(luò)中,尤其是在mha和ffn模塊中,有效地實(shí)現(xiàn)激活函數(shù)的計(jì)算以提高硬件效率,降低重復(fù)計(jì)算并減少算力浪費(fèi),成為了一個(gè)亟待解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、為了至少解決如上所提到的一個(gè)或多個(gè)技術(shù)問題,本披露在多個(gè)方面中提出了優(yōu)化基于轉(zhuǎn)換器的雙向編碼器表示(bert)網(wǎng)絡(luò)中的激活函數(shù)(包括其中的超越函數(shù))計(jì)算的方案。
2、在第一方面中,本披露提供一種用于基于轉(zhuǎn)換器的雙向編碼器表示(bert)網(wǎng)絡(luò)的方法,包括:在執(zhí)行bert網(wǎng)絡(luò)中與非線性激活函數(shù)計(jì)算相關(guān)的操作時(shí),接收用于所述非線性激活函數(shù)計(jì)算的離散輸入值;根據(jù)所述離散輸入值在激活表中查找到對(duì)應(yīng)的離散輸出值;以及將所述離散輸出值作為用于所述非線性激活函數(shù)計(jì)算的結(jié)果進(jìn)行輸出。
3、在第二方面中,本披露提供一種用于基于轉(zhuǎn)換器的雙向編碼器表示(bert)網(wǎng)絡(luò)的設(shè)備,包括:處理器;以及存儲(chǔ)器,其上存儲(chǔ)有用于基于轉(zhuǎn)換器的雙向編碼表示(bert)網(wǎng)絡(luò)的軟件程序,當(dāng)所述軟件程序由所述處理器執(zhí)行時(shí),實(shí)現(xiàn)根據(jù)第一方面中所述的方法。
4、在第三方面中,本披露提供一種集成電路裝置,包括根據(jù)第二方面中所述的設(shè)備。
5、在第四方面中,本披露提供一種板卡,包括根據(jù)第三方面中所述的集成電路裝置。
6、在第五方面中,本披露提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有用于基于轉(zhuǎn)換器的雙向編碼表示(bert)網(wǎng)絡(luò)的軟件程序,當(dāng)所述軟件程序處理器執(zhí)行時(shí),實(shí)現(xiàn)根據(jù)第一方面中所述的方法。
7、通過如上所提供的基于轉(zhuǎn)換器的雙向編碼器表示(bert)網(wǎng)絡(luò)的優(yōu)化超越函數(shù)計(jì)算方法,本披露實(shí)施例通過預(yù)計(jì)算離散輸入值來得到對(duì)應(yīng)的離散輸出值以及利用核函數(shù)進(jìn)行計(jì)算,能夠提高硬件效率,降低重復(fù)計(jì)算并減少算力浪費(fèi)。進(jìn)一步,在一些實(shí)施例中,通過將激活表緩存在片上,可以加速非線性激活函數(shù)計(jì)算(特別是其中的超越函數(shù))的相關(guān)操作。更進(jìn)一步地,在一些實(shí)施例中,通過將多個(gè)離散輸入值分配到多個(gè)計(jì)算核進(jìn)行預(yù)計(jì)算,可以提高計(jì)算并行性和效率。
1.一種用于基于轉(zhuǎn)換器的雙向編碼器表示(bert)網(wǎng)絡(luò)的方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述非線性激活函數(shù)計(jì)算相關(guān)的操作前,所述方法還包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,其中通過預(yù)計(jì)算所述離散輸入值來得到對(duì)應(yīng)的所述離散輸出值包括:
4.根據(jù)權(quán)利要求1-3的任意一項(xiàng)所述的方法,其特征在于,其中所述非線性激活函數(shù)包括用于bert網(wǎng)絡(luò)的自注意力機(jī)制(self-attention?mechanism)模塊中的softmax激活函數(shù)和/或用于bert網(wǎng)絡(luò)的前饋神經(jīng)網(wǎng)絡(luò)(feed?forwardneural?network)模塊中的高斯誤差線性單元(gelu)激活函數(shù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在執(zhí)行所述softmax激活函數(shù)計(jì)算相關(guān)的操作時(shí),所述方法包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,其中在所述自注意力機(jī)制模塊中接收經(jīng)矩陣乘法計(jì)算所得的多個(gè)輸出值作為所述離散輸入值包括:
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,在執(zhí)行所述gelu激活函數(shù)的操作時(shí),所述方法包括:
8.根據(jù)權(quán)利要求3所述的方法,其特征在于,其中在執(zhí)行所述softmax激活函數(shù)計(jì)算相關(guān)的操作時(shí),利用核函數(shù)來將所述多個(gè)離散輸入值分配到多個(gè)計(jì)算核進(jìn)行預(yù)計(jì)算包括:對(duì)多個(gè)離散輸入值執(zhí)行反量化和指數(shù)函數(shù)計(jì)算。
9.根據(jù)權(quán)利要求3所述的方法,其特征在于,其中在執(zhí)行所述(gelu)激活函數(shù)的操作時(shí),利用核函數(shù)來將所述多個(gè)離散輸入值分配到多個(gè)計(jì)算核進(jìn)行預(yù)計(jì)算包括:對(duì)多個(gè)離散輸入值執(zhí)行反量化、加入偏置項(xiàng)、計(jì)算gelu激活函數(shù)值和量化操作。
10.一種用于基于轉(zhuǎn)換器的雙向編碼器表示(bert)網(wǎng)絡(luò)的設(shè)備,其特征在于,包括:
11.一種集成電路裝置,包括根據(jù)權(quán)利要求10所述的設(shè)備。
12.一種板卡,包括根據(jù)權(quán)利要求11所述的集成電路裝置。
13.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有用于基于轉(zhuǎn)換器的雙向編碼表示(bert)網(wǎng)絡(luò)的軟件程序,當(dāng)所述軟件程序處理器執(zhí)行時(shí),實(shí)現(xiàn)根據(jù)權(quán)利要求1-9的任意一項(xiàng)所述的方法。