背景技術(shù):
1、現(xiàn)場可編程門陣列(fpga)是包括邏輯塊陣列和這些邏輯塊之間的可重配置互連的硬件設(shè)備。在(或以前的)產(chǎn)品中,這些邏輯塊可以被稱為自適應(yīng)邏輯模塊(alm),而在產(chǎn)品中,這些邏輯塊可以被稱為可配置邏輯塊(clb)。每個(gè)邏輯塊可以包括可編程邏輯,諸如用于執(zhí)行從輸入到輸出的可配置邏輯映射的一個(gè)或多個(gè)查找表(lut)、用于添加輸入值的加法器、用于臨時(shí)保持?jǐn)?shù)據(jù)的寄存器等。利用配置文件對fpga進(jìn)行編程或配置設(shè)置互連(或互連“結(jié)構(gòu)”)以將不同的邏輯塊接線在一起,從而配置fpga以執(zhí)行由配置文件(有時(shí)被稱為“位文件”)指定的特定功能。
2、與由通用處理器執(zhí)行的軟件實(shí)現(xiàn)方式相比,fpga帶來了在低層級(例如電路層級)處實(shí)現(xiàn)計(jì)算的更高性能和更低功耗的益處。這類似于使用專用集成電路(asic)的益處,專用集成電路(asic)諸如為專用協(xié)處理器(諸如圖形處理單元(gpu)或神經(jīng)加速器),它們分別用于加速特定于計(jì)算機(jī)圖形和人工神經(jīng)網(wǎng)絡(luò)的操作。然而,asic的設(shè)計(jì)和制造是具有高前期固定成本的漫長而昂貴的過程。
3、因此,fpga的一些應(yīng)用包括例如為最終可能在asic中實(shí)現(xiàn)的硬件設(shè)計(jì)進(jìn)行原型設(shè)計(jì)以及在(例如,由于低數(shù)量或高度專門化的計(jì)算)設(shè)計(jì)和制造asic可能不合理的情況下對計(jì)算的硬件加速。另外,fpga還提供了對底層硬件(在“現(xiàn)場”中)的重新配置的靈活性,而不會像在asic的情況下那樣被鎖定到固定硬件配置中,其中邏輯在制造時(shí)直接在電路的布局中實(shí)現(xiàn),并且因此幾乎沒有可重新配置性。一些云計(jì)算提供商提供對包括連接的fpga的硬件實(shí)例(例如,服務(wù)器)的訪問,從而允許用戶自定義fpga以執(zhí)行對計(jì)算操作的硬件加速。
4、正是關(guān)于這些和其他考慮因素,已經(jīng)做出了示例。另外,盡管已經(jīng)討論了相對具體的問題,但是應(yīng)該理解,示例不應(yīng)該僅限于解決背景中確定的具體問題。
技術(shù)實(shí)現(xiàn)思路
1、本
技術(shù)實(shí)現(xiàn)要素:
被提供從而以簡化形式介紹下面在具體實(shí)施方式部分中進(jìn)一步描述的一系列概念。本發(fā)明內(nèi)容不旨在識別所要求保護(hù)的主題的關(guān)鍵特征或基本特征,其也不旨在幫助確定所要求保護(hù)的主題的范圍。
2、本技術(shù)的方面涉及對數(shù)據(jù)掩碼(mask)的硬件加速和對掩碼的數(shù)據(jù)計(jì)算softmax函數(shù),其是機(jī)器學(xué)習(xí)的領(lǐng)域中常見的操作。作為一個(gè)示例,經(jīng)常應(yīng)用于自然語言處理的機(jī)器學(xué)習(xí)模型中的自回歸變換器模型將掩碼應(yīng)用于輸入數(shù)據(jù),以便確保變換器模型學(xué)習(xí)僅基于詞元序列中較早出現(xiàn)的詞元而不是基于該序列中較晚出現(xiàn)的詞元對該序列中的給定詞元進(jìn)行預(yù)測。將掩碼應(yīng)用于數(shù)據(jù)以通過隱藏(例如,歸零)在訓(xùn)練過程期間不應(yīng)該考慮的值來強(qiáng)制執(zhí)行此自回歸約束??紤]布置在n×n矩陣或陣列中的輸入數(shù)據(jù)值的情況,其中每行對應(yīng)于從左到右排序的不同詞元序列,則掩碼可能會遮擋通常位于每行的右側(cè)的高數(shù)據(jù)值。
3、softmax函數(shù)(也稱為softargmax或歸一化(normalized)指數(shù)函數(shù))經(jīng)常用作神經(jīng)網(wǎng)絡(luò)或其他機(jī)器學(xué)習(xí)模型的最后一個(gè)激活函數(shù),以將由機(jī)器學(xué)習(xí)模型生成的輸出(例如分?jǐn)?shù))歸一化到受約束的范圍(例如,從在(-∞,+∞)的范圍內(nèi)的不受約束的輸出到在[0,1]的范圍內(nèi)的受約束的或歸一化的輸出)。對于k個(gè)元素的匯集或向量z中的第i個(gè)元素zi,softmax函數(shù)σ的一個(gè)典型表達(dá)式被表示為:
4、
5、更詳細(xì)地,應(yīng)用于數(shù)據(jù)以強(qiáng)制執(zhí)行自回歸約束的掩碼當(dāng)應(yīng)用于n×n輸入數(shù)據(jù)矩陣時(shí)經(jīng)常采取上三角掩碼或塊上三角掩碼的形式,其中較早的行(例如,靠近輸入數(shù)據(jù)矩陣的頂部)具有較多被屏蔽(masked?out)的數(shù)據(jù)值,而較晚的行(例如,靠近輸入數(shù)據(jù)矩陣的底部)具有較少被屏蔽的數(shù)據(jù)值(或沒有被屏蔽的數(shù)據(jù)值)。這通??梢员槐硎緸槠渲械趉行(行從0到n-1編號)具有k+1個(gè)未掩碼的數(shù)據(jù)值,后面是n-k-1個(gè)被掩碼屏蔽的數(shù)據(jù)值。在這樣的上三角掩碼中,輸入數(shù)據(jù)矩陣的大約一半的值被屏蔽。
6、因此,本技術(shù)的一些方面涉及將來自兩個(gè)不同行的未掩碼的數(shù)據(jù)值組合成長度為n(或長度不大于n或小于或等于n)的單個(gè)行,并對組合的未掩碼的數(shù)據(jù)值的行的個(gè)體數(shù)據(jù)值執(zhí)行操作(例如,應(yīng)用函數(shù)),而不對掩碼的數(shù)據(jù)值執(zhí)行計(jì)算(因?yàn)檫@些掩碼的數(shù)據(jù)值與期望的最終輸出無關(guān))。在屏蔽輸入數(shù)據(jù)值的大約一半的三角掩碼的情況下,這具有幾乎使硬件加速器的計(jì)算吞吐量翻倍的效果,因?yàn)橛?jì)算資源不會浪費(fèi)在對對計(jì)算的最終結(jié)果沒有影響的掩碼的數(shù)據(jù)值執(zhí)行計(jì)算上。
7、本技術(shù)的一些方面還涉及在硬件加速器內(nèi)實(shí)現(xiàn)掩碼的行為,從而避免與將掩碼從主機(jī)傳輸?shù)接布铀倨飨嚓P(guān)聯(lián)的帶寬和延時(shí)成本。另外,避免與將掩碼應(yīng)用于輸入數(shù)據(jù)相關(guān)聯(lián)的計(jì)算還減少對硬件加速器的計(jì)算負(fù)荷。
8、因此,根據(jù)本技術(shù)的各個(gè)方面的對數(shù)據(jù)掩碼和數(shù)據(jù)的歸一化的硬件加速改進(jìn)包括此類操作的機(jī)器學(xué)習(xí)模型訓(xùn)練過程的性能。性能的改進(jìn)涉及計(jì)算時(shí)間(例如,處理器時(shí)間)的減少、數(shù)據(jù)存儲和帶寬(例如,存儲器使用和通過通信總線傳輸?shù)臄?shù)據(jù))、能耗的減少,并且在一些示例中,減少在現(xiàn)場可編程門陣列(fpga)上的某些實(shí)現(xiàn)方式中以及在諸如專用集成電路(asic)和其他專用集成電路的其他硬件實(shí)現(xiàn)方式中使用的物理硬件的量。
9、一個(gè)或多個(gè)方面的細(xì)節(jié)在下面的附圖和描述中闡述。從閱讀以下詳細(xì)描述和審閱相關(guān)聯(lián)的附圖,其他特征和優(yōu)點(diǎn)將顯而易見。應(yīng)理解,以下詳細(xì)描述僅是解釋性的,并不限制所要求保護(hù)的本發(fā)明。
1.一種用于加速現(xiàn)場可編程門陣列(fpga)中的計(jì)算的方法,所述現(xiàn)場可編程門陣列包括連接多個(gè)邏輯塊的可配置互連結(jié)構(gòu),所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其中所述掩碼是三角掩碼。
3.根據(jù)權(quán)利要求1所述的方法,還包括:
4.根據(jù)權(quán)利要求1所述的方法,其中所述掩碼歸一化電路被配置為將softmax函數(shù)應(yīng)用于所述組合的數(shù)據(jù)向量的所述第一子向量和所述組合的數(shù)據(jù)向量的所述第二子向量中的所述未掩碼的數(shù)據(jù)值,以基于所述組合的數(shù)據(jù)向量的最大未掩碼的數(shù)據(jù)值計(jì)算n個(gè)歸一化的值的所述組合的歸一化的數(shù)據(jù)向量。
5.根據(jù)權(quán)利要求1所述的方法,還包括:
6.根據(jù)權(quán)利要求1所述的方法,其中所述掩碼歸一化電路經(jīng)由所述fpga的設(shè)備存儲器的第一端口讀取所述輸入數(shù)據(jù)的所述行的所述r[i]個(gè)未掩碼的數(shù)據(jù)值,同時(shí)經(jīng)由所述fpga的所述設(shè)備存儲器的第二端口讀取所述輸入數(shù)據(jù)的所述另一行的所述n-r[i]個(gè)未掩碼的數(shù)據(jù)值。
7.根據(jù)權(quán)利要求1所述的方法,其中合并所述行的所述r[i]個(gè)未掩碼的數(shù)據(jù)值和所述另一行的所述n-r[i]個(gè)數(shù)據(jù)值由所述掩碼歸一化電路的按位或電路執(zhí)行。
8.根據(jù)權(quán)利要求1所述的方法,還包括訓(xùn)練機(jī)器學(xué)習(xí)模型,包括:
9.一種計(jì)算機(jī)存儲介質(zhì),所述計(jì)算機(jī)存儲介質(zhì)存儲配置文件,所述配置文件指定包括可配置互連結(jié)構(gòu)和多個(gè)邏輯塊的現(xiàn)場可編程門陣列(fpga)的配置,其中基于所述配置文件而被配置的fpga包括由所述可配置互連結(jié)構(gòu)連接的、實(shí)現(xiàn)掩碼歸一化電路的邏輯塊,所述掩碼歸一化電路被配置為:
10.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)存儲介質(zhì),其中所述掩碼是三角掩碼。
11.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)存儲介質(zhì),其中所述配置文件還指定所述fpga的所述可配置互連結(jié)構(gòu)和所述邏輯塊的所述配置以用虛擬行填充所述輸入數(shù)據(jù),其中所述虛擬行的所述數(shù)據(jù)值中的所有數(shù)據(jù)值都被掩碼,并且其中所述虛擬行具有負(fù)索引。
12.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)存儲介質(zhì),其中所述配置文件還指定所述fpga的所述可配置互連結(jié)構(gòu)和所述邏輯塊的所述配置以實(shí)現(xiàn)指數(shù)電路,所述指數(shù)電路被配置為將softmax函數(shù)應(yīng)用于所述組合的數(shù)據(jù)向量的所述第一子向量和所述組合的數(shù)據(jù)向量的所述第二子向量中的所述未掩碼的數(shù)據(jù)值,以基于所述組合的數(shù)據(jù)向量的最大未掩碼的數(shù)據(jù)值計(jì)算n個(gè)歸一化的值的所述組合的歸一化的數(shù)據(jù)向量。
13.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)存儲介質(zhì),其中所述配置文件還指定所述fpga的所述可配置互連結(jié)構(gòu)和所述邏輯塊的所述配置以實(shí)現(xiàn)行拆分和填充電路,所述行拆分和填充電路被配置為:
14.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)存儲介質(zhì),其中所述配置文件還指定所述fpga的所述可配置互連結(jié)構(gòu)和所述邏輯塊的所述配置以將所述第一局部掩碼塊連接到所述fpga的設(shè)備存儲器的第一端口并將所述第二局部掩碼塊連接到所述fpga的所述設(shè)備存儲器的第二端口。
15.一種現(xiàn)場可編程門陣列(fpga),包括連接多個(gè)邏輯塊的可配置互連結(jié)構(gòu),所述可配置互連結(jié)構(gòu)和所述邏輯塊被配置為實(shí)現(xiàn)掩碼歸一化電路,所述掩碼歸一化電路被配置為: