背景技術(shù):
1、本說(shuō)明書(shū)總體上涉及使用硬件集成電路來(lái)執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)的分組卷積。
2、神經(jīng)網(wǎng)絡(luò)是采用一層或多層節(jié)點(diǎn)來(lái)針對(duì)所接收的輸入生成例如分類(lèi)的輸出的機(jī)器學(xué)習(xí)模型。除了輸出層之外,一些神經(jīng)網(wǎng)絡(luò)還包括一個(gè)或多個(gè)隱藏層。一些神經(jīng)網(wǎng)絡(luò)可以是被配置用于圖像處理的卷積神經(jīng)網(wǎng)絡(luò)(cnn)或被配置用于語(yǔ)音和語(yǔ)言處理的循環(huán)神經(jīng)網(wǎng)絡(luò)(rnn)。不同類(lèi)型的神經(jīng)網(wǎng)絡(luò)架構(gòu)可以用于執(zhí)行與分類(lèi)或模式識(shí)別、涉及數(shù)據(jù)建模的預(yù)測(cè)和信息聚類(lèi)相關(guān)的各種任務(wù)。
3、神經(jīng)網(wǎng)絡(luò)層可以具有對(duì)應(yīng)的參數(shù)或權(quán)重集合。權(quán)重用于處理通過(guò)神經(jīng)網(wǎng)絡(luò)層的輸入(例如,一批輸入)以生成該層的對(duì)應(yīng)輸出來(lái)計(jì)算神經(jīng)網(wǎng)絡(luò)推理。一批輸入和核集合可以表示為輸入和權(quán)重的張量,即多維陣列。硬件加速器是用于實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的專(zhuān)用集成電路。該電路包括存儲(chǔ)器,其位置與可以使用電路的控制邏輯來(lái)遍歷或訪問(wèn)的張量的元素相對(duì)應(yīng)。
技術(shù)實(shí)現(xiàn)思路
1、本文檔描述了硬件加速器的改進(jìn)的集成電路架構(gòu),以及針對(duì)神經(jīng)網(wǎng)絡(luò)層使用映射向量和經(jīng)壓縮的稀疏參數(shù)集合來(lái)處理輸入向量的對(duì)應(yīng)技術(shù)。映射向量和經(jīng)壓縮的稀疏參數(shù)集合中的每一個(gè)可以基于操作代碼(“操作碼(opcode)”)而生成,該操作碼指示多個(gè)參數(shù)張量的均勻稀疏性格式。參數(shù)張量與諸如cnn的人工神經(jīng)網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)層相關(guān)聯(lián)。所公開(kāi)的技術(shù)可用于加速支持神經(jīng)網(wǎng)絡(luò)計(jì)算的張量運(yùn)算,所述神經(jīng)網(wǎng)絡(luò)計(jì)算涉及通過(guò)神經(jīng)網(wǎng)絡(luò)層中的一個(gè)或多個(gè)來(lái)處理輸入向量的輸入。
2、本說(shuō)明書(shū)中描述的主題的一個(gè)方面可以體現(xiàn)在涉及在硬件加速器上實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)的計(jì)算機(jī)實(shí)現(xiàn)的方法中。該方法包括:從參數(shù)張量得出經(jīng)壓縮的稀疏參數(shù)集合;基于該經(jīng)壓縮的稀疏參數(shù)集合來(lái)生成映射向量;處理指令,該指令指示基于參數(shù)張量的稀疏性使用經(jīng)壓縮的稀疏參數(shù)來(lái)執(zhí)行稀疏計(jì)算;基于該指令來(lái)獲得:i)來(lái)自硬件加速器的第一存儲(chǔ)器的輸入向量和ii)來(lái)自硬件加速器的第二存儲(chǔ)器的經(jīng)壓縮的稀疏參數(shù);以及使用映射向量和該經(jīng)壓縮的稀疏參數(shù)集合來(lái)執(zhí)行稀疏計(jì)算以通過(guò)神經(jīng)網(wǎng)絡(luò)的層處理輸入向量。
3、這些和其他實(shí)現(xiàn)方式可以各自可選地包括以下特征中的一個(gè)或多個(gè)特征。例如,在一些實(shí)現(xiàn)方式中,通過(guò)神經(jīng)網(wǎng)絡(luò)的層處理輸入向量包括:在輸入向量的輸入與經(jīng)壓縮的稀疏參數(shù)集合中的對(duì)應(yīng)的權(quán)重值之間執(zhí)行點(diǎn)積矩陣乘法運(yùn)算。
4、在一些實(shí)現(xiàn)方式中,基于映射向量中的每個(gè)位的相應(yīng)位值,在硬件加速器的一個(gè)或多個(gè)乘法芯元處執(zhí)行點(diǎn)積矩陣乘法運(yùn)算。在一些實(shí)現(xiàn)方式中,該方法進(jìn)一步包括:訪問(wèn)耦合到硬件加速器的第一存儲(chǔ)器和第二存儲(chǔ)器的硬件選擇邏輯;以及使用硬件選擇邏輯,基于映射向量中的位的相應(yīng)位值來(lái)選擇輸入向量的特定輸入和經(jīng)壓縮的稀疏參數(shù)集合中的對(duì)應(yīng)權(quán)重值。
5、得出經(jīng)壓縮的稀疏參數(shù)集合可以包括生成僅包括沿著參數(shù)張量的特定維度的非零元素的經(jīng)修改的參數(shù)張量。生成經(jīng)修改的參數(shù)張量可以包括:對(duì)于參數(shù)張量的特定列維度:基于列維度的非零元素來(lái)生成列維度的經(jīng)壓縮的表示;并且連結(jié)列維度的經(jīng)壓縮的表示中的每個(gè)非零元素。
6、在一些實(shí)現(xiàn)方式中,生成經(jīng)修改的參數(shù)張量包括:在生成經(jīng)修改的參數(shù)張量之前保留參數(shù)張量中的每個(gè)非零元素的相應(yīng)維度位置。參數(shù)張量可以包括多個(gè)維度;并且指令中的操作碼指示多個(gè)維度中的特定維度的稀疏性。硬件加速器可操作以處理多維參數(shù)張量;并且指令中的操作碼可以指示跨多維參數(shù)張量中的每一個(gè)的均勻稀疏性。
7、第一存儲(chǔ)器可以是硬件加速器的暫存式存儲(chǔ)器,并且被配置為存儲(chǔ)在神經(jīng)網(wǎng)絡(luò)層處處理的輸入和激活。第二存儲(chǔ)器可以包括單指令多數(shù)據(jù)(simd)寄存器,并且該方法包括:將映射向量存儲(chǔ)在simd寄存器的第一地址處;以及將經(jīng)壓縮的稀疏參數(shù)集合存儲(chǔ)在simd寄存器的第二不同地址處。
8、本說(shuō)明書(shū)中描述的主題的另一個(gè)方面可以體現(xiàn)在使用硬件加速器執(zhí)行的計(jì)算機(jī)實(shí)現(xiàn)的方法中,該硬件加速器實(shí)現(xiàn)包括多個(gè)神經(jīng)網(wǎng)絡(luò)層的神經(jīng)網(wǎng)絡(luò)。該方法包括接收用于硬件加速器的計(jì)算小芯片的指令。
9、該指令可在計(jì)算小芯片處執(zhí)行以使得執(zhí)行操作,所述操作包括:識(shí)別指令中的指示參數(shù)張量的稀疏性的操作碼;基于從指定神經(jīng)網(wǎng)絡(luò)的層的權(quán)重的參數(shù)張量得出的權(quán)重值來(lái)加載經(jīng)壓縮的稀疏參數(shù)集合;以及加載基于經(jīng)壓縮的稀疏參數(shù)集合而生成的映射向量。
10、所述操作包括基于操作碼來(lái)獲得i)來(lái)自硬件加速器的第一存儲(chǔ)器的輸入向量和ii)來(lái)自硬件加速器的第二存儲(chǔ)器的經(jīng)壓縮的稀疏參數(shù)集合。所述操作進(jìn)一步包括基于映射向量,使用經(jīng)壓縮的稀疏參數(shù)集合通過(guò)神經(jīng)網(wǎng)絡(luò)的層來(lái)處理輸入向量。
11、該方面和其他方面的其他實(shí)現(xiàn)方式包括對(duì)應(yīng)的系統(tǒng)、設(shè)備和計(jì)算機(jī)程序,這些計(jì)算機(jī)程序被配置為執(zhí)行這些方法的動(dòng)作、編碼在計(jì)算機(jī)存儲(chǔ)裝置上。一個(gè)或多個(gè)計(jì)算機(jī)的系統(tǒng)可由于在系統(tǒng)上安裝的在操作中使該系統(tǒng)執(zhí)行動(dòng)作的軟件、固件、硬件或它們的組合而如此配置。一個(gè)或多個(gè)計(jì)算機(jī)程序可以借助于具有在由數(shù)據(jù)處理設(shè)備執(zhí)行時(shí)使該設(shè)備執(zhí)行動(dòng)作的指令而如此配置。
12、本說(shuō)明書(shū)中描述的主題可以在特定實(shí)施例中實(shí)現(xiàn),以便實(shí)現(xiàn)以下優(yōu)點(diǎn)中的一個(gè)或多個(gè)。描述了用于利用針對(duì)機(jī)器學(xué)習(xí)計(jì)算處理的數(shù)據(jù)中的稀疏性的技術(shù)。當(dāng)使用例如在諸如平板電腦或智能電話的計(jì)算裝置上實(shí)現(xiàn)的cnn機(jī)器學(xué)習(xí)模型來(lái)處理輸入圖像時(shí),利用僅具有非零權(quán)重值的經(jīng)壓縮的稀疏參數(shù)來(lái)實(shí)現(xiàn)某些硬件和計(jì)算效率。
13、當(dāng)加速人工神經(jīng)網(wǎng)絡(luò)的執(zhí)行時(shí),通過(guò)生成經(jīng)壓縮的稀疏參數(shù)和對(duì)應(yīng)的映射向量,利用稀疏性來(lái)實(shí)現(xiàn)計(jì)算效率。該系統(tǒng)檢測(cè)要在神經(jīng)網(wǎng)絡(luò)層處處理的數(shù)據(jù)集當(dāng)中即將到來(lái)的稀疏性模式,并生成僅包括非零值的經(jīng)壓縮的稀疏參數(shù)集合。映射向量將輸入向量的離散輸入映射到經(jīng)壓縮的稀疏參數(shù)的非零值,這允許通過(guò)利用加速人工神經(jīng)網(wǎng)絡(luò)的執(zhí)行的專(zhuān)用集成電路的特定硬件架構(gòu)來(lái)簡(jiǎn)化數(shù)據(jù)集的處理。
14、涉及零值操作數(shù)的乘法運(yùn)算通常被視為浪費(fèi)的計(jì)算周期。通過(guò)至少使用經(jīng)壓縮的稀疏參數(shù)來(lái)處理僅具有非零值的神經(jīng)網(wǎng)絡(luò)輸入,機(jī)器學(xué)習(xí)系統(tǒng)可以減少其計(jì)算操作總量。這種減少是通過(guò)從針對(duì)神經(jīng)網(wǎng)絡(luò)層處理的參數(shù)張量的權(quán)重值當(dāng)中移除零值來(lái)實(shí)現(xiàn)的。減少的計(jì)算操作量導(dǎo)致功耗和資源需求(例如,存儲(chǔ)器分配和處理器周期)的對(duì)應(yīng)減少。
15、本說(shuō)明書(shū)中描述的主題的一個(gè)或多個(gè)實(shí)現(xiàn)方式的細(xì)節(jié)在附圖和以下描述中闡述。根據(jù)該描述、附圖和權(quán)利要求書(shū),本主題的其他潛在特征、方面和優(yōu)勢(shì)將變得顯而易見(jiàn)。
1.一種涉及在硬件加速器上實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括:
2.如權(quán)利要求1所述的方法,其中,通過(guò)所述神經(jīng)網(wǎng)絡(luò)的所述層處理所述輸入向量包括:
3.如權(quán)利要求2所述的方法,其中,所述點(diǎn)積矩陣乘法運(yùn)算是在所述硬件加速器的一個(gè)或多個(gè)乘法芯元處基于所述映射向量中的每個(gè)位的相應(yīng)位值而執(zhí)行的。
4.如權(quán)利要求2所述的方法,進(jìn)一步包括:
5.如權(quán)利要求1所述的方法,其中,得出所述經(jīng)壓縮的稀疏參數(shù)集合包括:
6.如權(quán)利要求5所述的方法,其中,生成所述經(jīng)修改的參數(shù)張量包括:
7.如權(quán)利要求6所述的方法,其中,生成所述經(jīng)修改的參數(shù)張量包括:
8.如權(quán)利要求1所述的方法,其中:
9.如權(quán)利要求1所述的方法,其中:
10.如權(quán)利要求1所述的方法,其中,所述第一存儲(chǔ)器:
11.如權(quán)利要求10所述的方法,其中,所述第二存儲(chǔ)器包括多個(gè)單指令多數(shù)據(jù)simd寄存器,并且所述方法包括:
12.一種系統(tǒng),包括:
13.如權(quán)利要求12所述的系統(tǒng),其中,通過(guò)所述神經(jīng)網(wǎng)絡(luò)的所述層處理所述輸入向量包括:
14.如權(quán)利要求13所述的系統(tǒng),其中,所述點(diǎn)積矩陣乘法運(yùn)算是在所述硬件加速器的一個(gè)或多個(gè)乘法芯元處基于所述映射向量中的每個(gè)位的相應(yīng)位值而執(zhí)行的。
15.如權(quán)利要求13所述的系統(tǒng),其中,所述操作進(jìn)一步包括:
16.如權(quán)利要求12所述的系統(tǒng),其中,得出所述經(jīng)壓縮的稀疏參數(shù)集合包括:
17.如權(quán)利要求16所述的系統(tǒng),其中,生成所述經(jīng)修改的參數(shù)張量包括:
18.如權(quán)利要求17所述的系統(tǒng),其中,生成所述經(jīng)修改的參數(shù)張量包括:
19.如權(quán)利要求12所述的系統(tǒng),其中:
20.如權(quán)利要求12所述的系統(tǒng),其中:
21.如權(quán)利要求12所述的系統(tǒng),其中,所述第一存儲(chǔ)器:
22.如權(quán)利要求21所述的系統(tǒng),其中,所述第二存儲(chǔ)器包括多個(gè)單指令多數(shù)據(jù)simd寄存器,并且所述操作進(jìn)一步包括:
23.一種非暫時(shí)性機(jī)器可讀存儲(chǔ)介質(zhì),用于存儲(chǔ)指令,所述指令能夠由被配置為實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的硬件加速器的處理裝置執(zhí)行,其中,所述指令的執(zhí)行使得執(zhí)行包括以下的操作:
24.一種使用硬件加速器執(zhí)行的方法,所述硬件加速器實(shí)現(xiàn)包括多個(gè)神經(jīng)網(wǎng)絡(luò)層的神經(jīng)網(wǎng)絡(luò),所述方法包括: