亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        深度神經(jīng)網(wǎng)絡(luò)加速器體系結(jié)構(gòu)概述

        2020-09-03 08:16:08陳怡然謝源宋凌皓陳凡唐天琪
        工程 2020年3期
        關(guān)鍵詞:數(shù)據(jù)流加速器乘法

        陳怡然* ,謝源,宋凌皓,陳凡,唐天琪

        a Department of Electrical and Computer Engineering, Duke University, Durham, NC 27708, USA

        b Department of Electrical and Computer Engineering, University of California, Santa Barbara, CA 93106-9560, USA

        1. 引言

        經(jīng)典哲學(xué)將人類思維過程描述為對符號的機(jī)械操縱。長期以來,人類一直試圖創(chuàng)造出具有意識智能的人造物件,這是人工智能(AI)的最初萌芽。1950年,艾倫·圖靈(Alan Turing)在數(shù)學(xué)上討論了實(shí)現(xiàn)智能機(jī)器的可能性,并提出了“模仿游戲”(imitation game),后來被稱為“圖靈測試”(Turing test)[1]。達(dá)特茅斯夏季人工智能研究計(jì)劃[2]于1956年進(jìn)行,通常被認(rèn)為是AI作為一個新的研究領(lǐng)域的正式開創(chuàng)性活動。在隨后的幾十年中,AI經(jīng)歷了幾次起伏。最近,由于可供使用的大數(shù)據(jù)和計(jì)算能力的快速增長,人工智能重新獲得了巨大的關(guān)注和投資。機(jī)器學(xué)習(xí)(ML)方法已成功應(yīng)用于解決學(xué)術(shù)界[3,4]和工業(yè)界[5]中的許多問題。

        機(jī)器學(xué)習(xí)算法(包括生物學(xué)上合理的模型)最初是為了明確地模擬生物學(xué)上的大腦行為[6]。人腦目前被認(rèn)為是最智能的“機(jī)器”,具有極高的結(jié)構(gòu)復(fù)雜性和運(yùn)行效率。類似于生物神經(jīng)系統(tǒng),機(jī)器學(xué)習(xí)算法中的兩個基本功能單元也是突觸和神經(jīng)元,它們分別負(fù)責(zé)信息處理和特征提取。與突觸相比,還有更多類型的神經(jīng)元模型,如McCulloch-Pitts [6]、Sigmoid、ReLU和Integrate-and-Fires [7]。這些神經(jīng)元模型都具有某些非線性特征,這對于特征提取和神經(jīng)網(wǎng)絡(luò)訓(xùn)練都是必需的。后來,“生物學(xué)啟發(fā)”的模型被發(fā)明為實(shí)現(xiàn)高級功能的數(shù)學(xué)方法[8]。一般來說,現(xiàn)代機(jī)器學(xué)習(xí)算法可分為兩類:人工神經(jīng)網(wǎng)絡(luò)(ANN),其中數(shù)據(jù)表示為數(shù)值[9];以及脈沖神經(jīng)網(wǎng)絡(luò)(SNN),其中數(shù)據(jù)由脈沖表示[10]。

        盡管大數(shù)據(jù)應(yīng)用的高速增長為ML的發(fā)展提供動力,但它也給傳統(tǒng)計(jì)算機(jī)系統(tǒng)帶來了數(shù)據(jù)處理速度和可擴(kuò)展性方面的嚴(yán)峻挑戰(zhàn)。具體而言,傳統(tǒng)的馮·諾依曼計(jì)算機(jī)具有單獨(dú)的處理和存儲部件。處理器與片外存儲器之間頻繁的數(shù)據(jù)移動限制了系統(tǒng)性能和能效,而AI應(yīng)用程序中數(shù)據(jù)量的飆升進(jìn)一步加劇了這種情況。專為AI應(yīng)用程序設(shè)計(jì)的計(jì)算平臺已經(jīng)從對馮·諾依曼平臺的補(bǔ)充發(fā)展到必備的獨(dú)立技術(shù)解決方案。這些平臺屬于更大的類別,被稱為“專有域計(jì)算”,專注于針對AI的特定定制。通過克服眾所周知的“內(nèi)存墻”(memory wall)[11]和“電源墻”(power wall)[12]的挑戰(zhàn),已經(jīng)實(shí)現(xiàn)了數(shù)量級能效和性能的提高。最近的特定于AI的計(jì)算系統(tǒng)(即AI加速器)通常由大量高度并行的計(jì)算和存儲單元構(gòu)成。這些單元以二維方式組織,以支持神經(jīng)網(wǎng)絡(luò)(NN)中常見的矩陣向量乘法。片上網(wǎng)絡(luò)(NoC)[13]、高帶寬存儲器(HBM)[14]和數(shù)據(jù)重用[15]等被用于進(jìn)一步優(yōu)化這些加速器中的數(shù)據(jù)流。生物邏輯理論基礎(chǔ)、硬件設(shè)計(jì)和算法(軟件)這三個層次的創(chuàng)新是AI加速器的三個基石。本文將總結(jié)AI加速器在數(shù)據(jù)中心[5,16,17]和邊緣設(shè)備[18-20]上的最新進(jìn)展。

        除了傳統(tǒng)的CMOS設(shè)計(jì)之外,最近在AI加速器設(shè)計(jì)中還探索了新興的非易失性存儲器的應(yīng)用,如金屬氧化物阻性隨機(jī)存取存儲器(ReRAM)等。這些新興的存儲器具有高存儲密度和快速訪問的特點(diǎn),并且具有實(shí)現(xiàn)內(nèi)存計(jì)算的潛力[21-23]。具體而言,ReRAM陣列不僅可以存儲神經(jīng)網(wǎng)絡(luò),而且還能夠以模擬方式執(zhí)行原位(in situ)矩陣矢量乘法。與最先進(jìn)的CMOS設(shè)計(jì)相比,基于ReRAM的AI加速器由于模擬計(jì)算的低功耗特性,可以實(shí)現(xiàn)3~4個數(shù)量級的更高計(jì)算效率[24]。另一方面,由于機(jī)器學(xué)習(xí)算法對噪聲和錯誤表現(xiàn)出極大的抵抗力,模擬運(yùn)算的噪聲在很大程度上可以被機(jī)器學(xué)習(xí)算法所容忍。然而,ReRAM交叉陣列中的模擬信號與加速器中其他數(shù)字單元中的數(shù)字值之間的轉(zhuǎn)換需要數(shù)模轉(zhuǎn)換器(DAC)和模數(shù)轉(zhuǎn)換器(ADC),對于基于ReRAM的NN加速器,這要花費(fèi)高達(dá)66.4%的功耗和73.2%的面積 [25]。

        在本文中,我們主要關(guān)注人工神經(jīng)網(wǎng)絡(luò)。我們特別總結(jié)了用于深度神經(jīng)網(wǎng)絡(luò)(DNN)的加速器設(shè)計(jì)的最新進(jìn)展。我們從計(jì)算單元、數(shù)據(jù)流優(yōu)化、網(wǎng)絡(luò)模型等方面討論支持DNN執(zhí)行的各種體系結(jié)構(gòu)。本文的組織如下:第2節(jié)介紹了機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)的基礎(chǔ);第3節(jié)和第4節(jié)分別介紹了幾種代表性的DNN片上加速器和獨(dú)立加速器;第5節(jié)描述了各種基于新興內(nèi)存技術(shù)的DNN加速器;第6節(jié)簡要總結(jié)了新興應(yīng)用程序的DNN加速器;第7節(jié)提供了我們對AI芯片設(shè)計(jì)的未來趨勢的展望。

        2. 背景

        在本節(jié)中,我們將介紹有關(guān)DNN的一些背景以及閱讀本文所需的一些重要概念。我們還將簡要介紹新興的ReRAM及其在神經(jīng)計(jì)算中的應(yīng)用。

        2.1. 深度神經(jīng)網(wǎng)絡(luò)的推理和訓(xùn)練

        通常來說,DNN是參數(shù)化函數(shù),需要高維輸入以做出一些有用的預(yù)測,如分類。這種預(yù)測過程稱為推理。為了獲得有意義的參數(shù)集,我們需要在訓(xùn)練數(shù)據(jù)集上進(jìn)行DNN的訓(xùn)練,并通過諸如隨機(jī)梯度下降(SGD)之類的方法對參數(shù)進(jìn)行優(yōu)化,以最大限度地減少某些預(yù)定義的損失函數(shù)。在每個訓(xùn)練步驟中,首先執(zhí)行前向傳播以計(jì)算損耗,然后進(jìn)行反向傳播以反向傳播錯誤,最后,計(jì)算并累積每個參數(shù)的梯度。為了完全優(yōu)化大規(guī)模DNN,訓(xùn)練過程可能需要上百萬步或更多。

        DNN通常是神經(jīng)網(wǎng)絡(luò)層的堆疊。如果我們將第lth層表示為函數(shù)fl,則這個L層DNN的推理可以表示為:

        式中,x是輸入。在這種情況下,每一層的輸出僅供下一層使用,并且整個計(jì)算沒有回溯。DNN推理的數(shù)據(jù)流采用鏈的形式,可以在硬件中有效地加速,而無需額外的內(nèi)存需求。前饋神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)(RNN)均適用此屬性。“循環(huán)”結(jié)構(gòu)可以看作是可變長度的前饋結(jié)構(gòu),可以暫時復(fù)用某一層權(quán)重,并且數(shù)據(jù)流仍然形成一條鏈。

        圖1 . Pipelayer中的DNN訓(xùn)練數(shù)據(jù)流[22]。每個箭頭代表一個數(shù)據(jù)依賴性。

        在DNN訓(xùn)練中,數(shù)據(jù)依賴性的深度是推理深度的兩倍。盡管前向傳播的數(shù)據(jù)流與推理相同,但是反向轉(zhuǎn)播以相反的順序執(zhí)行層計(jì)算。此外,前向傳播中各層的輸出在反向傳播中被重新使用以計(jì)算誤差(由于反向傳播的鏈法則),從而導(dǎo)致許多長的數(shù)據(jù)依賴性。圖1說明了訓(xùn)練數(shù)據(jù)流與推論有何不同。DNN可能包括卷積層、全連接層(帶批處理的矩陣乘法)、一些逐點(diǎn)操作層,如ReLU、Sigmoid、最大池化和批歸一化。反向傳播可能具有形式不同于前向傳播的逐點(diǎn)操作。矩陣乘法和卷積在反向傳播中也保持不變。主要區(qū)別在于它們分別在轉(zhuǎn)置權(quán)重矩陣和旋轉(zhuǎn)卷積核上執(zhí)行。

        2.2. 計(jì)算模式

        盡管DNN可能包含許多類型的層,但是矩陣乘法和卷積占了90%以上的運(yùn)算,并且是DNN加速器設(shè)計(jì)的主要優(yōu)化目標(biāo)。對于矩陣乘法,如果我們分別使用Ic,Oc,B表示輸入通道數(shù)、輸出通道數(shù)和批處理大小,則計(jì)算可寫為:

        式中,ic是輸入通道的索引;oc是輸出通道的索引;b是批處理樣本的索引。滿足0 ≤b<B, 0 ≤oc<Oc。矩陣乘法中涉及的數(shù)據(jù)復(fù)用是每個輸入都用于所有輸出通道,每個權(quán)重都用于所有輸入批次。

        DNN中的卷積可以看作是矩陣乘法的擴(kuò)展版本,它增加了局部連接性和平移不變性的屬性。與矩陣乘法相比,在卷積中,每個輸入元素被二維特征圖替換,每個權(quán)重元素被二維卷積核(或?yàn)V波器)替換。然后,基于滑動窗口進(jìn)行計(jì)算:如圖2所示,從輸入特征圖的左上角開始,過濾器向右端滑動。當(dāng)它到達(dá)特征圖的右端時,它將移回到左端并移至下一行。正式表示如下所示:

        式中,F(xiàn)h是濾波器的高度;Fw是濾波器的寬度;i是二維濾波器中行的索引;j是二維濾波器中列的索引;x是二維特征圖中行的索引;y是特征二維圖中列的索引。滿足0 ≤b<B, 0 ≤oc<Oc, 0 ≤x<Oh, 0 ≤y<Ow(Oh是輸出特征圖的高度;Ow是輸出特征圖的寬度)。

        為了提供平移不變性,將相同的卷積濾波器重復(fù)應(yīng)用于輸入特征圖的所有部分,從而使卷積中的數(shù)據(jù)復(fù)用模式比矩陣乘法復(fù)雜得多。為了簡化硬件實(shí)現(xiàn),最好以兩級結(jié)構(gòu)查看二維滑動窗口:第一層是向下滑動的行窗口,以提供行間數(shù)據(jù)復(fù)用;第二層是向右滑動的元素窗口,以提供行內(nèi)數(shù)據(jù)復(fù)用。

        盡管矩陣乘法和卷積的計(jì)算模式非常不同,但它們實(shí)際上可以相互轉(zhuǎn)換。因此,為一種計(jì)算類型設(shè)計(jì)的加速器仍然可以支持另一種,盡管效率可能不高。如圖3所示,可以通過Toeplitz矩陣將卷積轉(zhuǎn)換為矩陣乘法,而代價是引入冗余數(shù)據(jù)。另一方面,矩陣乘法可以視為一種卷積形式,其中,Oh=Ow=Fw=Fh= 1。特征圖和濾波器都被簡化為單個元素。

        2.3. 阻性存儲器

        憶阻器(memristor),又名阻性隨機(jī)存儲器(ReRAM),是一種新興的非易失性存儲器,它使用單元電阻來存儲信息。2008年,惠普實(shí)驗(yàn)室報道了他們基于TiO2薄膜器件的納米級憶阻器的發(fā)現(xiàn)[27]。從那時起,許多阻性材料和結(jié)構(gòu)被發(fā)現(xiàn)或重新發(fā)現(xiàn)。

        如圖4(a)所示,每個ReRAM單元都有一個夾在頂部電極(TE)和底部電極(BE)之間的金屬氧化物層。憶阻器的電阻可以通過施加具有適當(dāng)脈沖寬度或幅度的電流或電壓來編程。特別地,存儲在單元中的數(shù)據(jù)可以相應(yīng)地由電阻狀態(tài)表示:低電阻狀態(tài)(LRS)表示位“1”,高電阻狀態(tài)(HRS)表示位“0”。在讀取操作中,在器件上施加一個小的檢測電壓,然后由電阻確定電流的幅度。

        圖2 . 二維卷積中的兩個級別的滑動窗口[26]。

        2012年,惠普實(shí)驗(yàn)室提出了一種ReRAM交叉結(jié)構(gòu)(crossbar),該結(jié)構(gòu)展示了吸引人的能力,可以有效地加速神經(jīng)網(wǎng)絡(luò)中的矩陣矢量乘法。如圖4(b)所示,矢量由字線(WL)上的輸入信號表示。矩陣的每個元素都被編程為交叉陣列中一個單元的電導(dǎo)。因此,將每個位線(BL)末端的電流求和視為矩陣矢量乘法的結(jié)果。對于不能容納在單個陣列中的大型矩陣,應(yīng)將輸入和輸出分割并分組為多個陣列。每個整列的輸出是部分和,將其水平收集并垂直求和以生成實(shí)際結(jié)果。

        圖3 . 將卷積轉(zhuǎn)換為Toeplitz矩陣乘法。

        3. 片上加速器

        在DNN加速器設(shè)計(jì)的早期階段,加速器被設(shè)計(jì)用于加速通用處理中的近似程序[28]或用于小型神經(jīng)網(wǎng)絡(luò)[13]。盡管片上加速器的功能和性能非常有限,但它們揭示了AI專用芯片的基本思想。由于通用處理芯片的局限性,我們需要設(shè)計(jì)用于AI/DNN應(yīng)用的專用芯片。

        3.1. 神經(jīng)處理單元

        神經(jīng)處理單元(neural processing unit, NPU)[28]被設(shè)計(jì)使用片上神經(jīng)網(wǎng)絡(luò)硬件來加速程序的一部分,代替在CPU上運(yùn)行。

        NPU的硬件設(shè)計(jì)非常簡單。NPU由8個處理引擎(PE)組成,如圖5所示。每個PE都執(zhí)行神經(jīng)元的計(jì)算,即乘法、累加和sigmoid激活。因此,NPU執(zhí)行的是多層感知器(MLP)神經(jīng)網(wǎng)絡(luò)的計(jì)算。

        圖4 . ReRAM基礎(chǔ)知識。

        圖5 . 神經(jīng)處理單元[28]。

        使用硬件化的MLP(即NPU)來加速某些程序段的想法非常有啟發(fā)性。如果程序段符合:①經(jīng)常執(zhí)行,②近似執(zhí)行,并且③輸入和輸出定義明確,則可以用NPU加速。為了在NPU上執(zhí)行程序,程序員需要手動標(biāo)注滿足以上三個條件的程序段。然后,編譯器會將程序段編譯為NPU指令,并且在運(yùn)行時將計(jì)算任務(wù)從CPU移到NPU。Sobel 邊緣檢測和FFT是此類程序段的兩個示例。NPU最多可減少97%的動態(tài)CPU指令,并實(shí)現(xiàn)高達(dá)11.1倍的加速。

        3.2. RENO——一種可重新配置的NoC 加速器

        與NPU用于通用程序加速不同,RENO [13]是用于神經(jīng)網(wǎng)絡(luò)的加速器。RENO在處理引擎設(shè)計(jì)時采用了與NPU類似的想法,如圖6所示。但是,RENO的PE基于ReRAM:RENO使用ReRAM交叉結(jié)構(gòu)作為基本計(jì)算單元來執(zhí)行矢量矩陣乘法。每個PE包含四個ReRAM交叉結(jié)構(gòu),分別對應(yīng)于正輸入和負(fù)輸入以及正權(quán)重和負(fù)權(quán)重的處理。在RENO中,路由器(router)用以協(xié)調(diào)PE之間的數(shù)據(jù)傳輸。與常規(guī)CMOS路由器不同,RENO的路由器將模擬(analog)中間計(jì)算結(jié)果從前一個神經(jīng)元傳遞到后一個神經(jīng)元。在RENO中,只有輸入和最終輸出是數(shù)字的。中間結(jié)果都是模擬的,并由模擬路由器協(xié)調(diào)。僅當(dāng)在RENO和CPU之間傳輸數(shù)據(jù)時,才需要數(shù)據(jù)轉(zhuǎn)換器(模數(shù)轉(zhuǎn)換器ADC和數(shù)模轉(zhuǎn)換器DAC)。

        RENO支持多層感知器(MLP)和自動關(guān)聯(lián)存儲器(AAM)的處理,并且相應(yīng)的指令專為RENO和CPU的流水線設(shè)計(jì)。由于RENO是片上設(shè)計(jì),因此支持的應(yīng)用程序有限制。RENO支持處理小型數(shù)據(jù)集,即UCI機(jī)器學(xué)習(xí)存儲庫[29]和定制的MNIST [30]。

        4. 獨(dú)立的DNN/CNN加速器

        對于廣泛使用的DNN和CNN(卷積神經(jīng)網(wǎng)絡(luò))應(yīng)用,獨(dú)立的專有域的加速器在云和邊緣場景中均取得了巨大的成功。與通用CPU和GPU相比,這些定制架構(gòu)可提供更好的性能和更高的能效。定制體系結(jié)構(gòu)通常需要對目標(biāo)應(yīng)用有深刻的了解。在設(shè)計(jì)中仔細(xì)分析并利用數(shù)據(jù)流(或數(shù)據(jù)復(fù)用模式),以減少片外存儲器訪問并提高系統(tǒng)效率。

        在本節(jié)中,我們將分別以電腦(DianNao)系列[31]和張量處理單元(TPU)[5]作為學(xué)術(shù)界和工業(yè)實(shí)例來說明獨(dú)立加速器的設(shè)計(jì)并討論數(shù)據(jù)流分析。

        4.1. 電腦系列——一個學(xué)術(shù)界的典型

        電腦(DianNao)系列包括表1中列出的多個加速器。DianNao是該系列的第一個設(shè)計(jì),它由以下組件組成,如圖7所示:

        (1)執(zhí)行計(jì)算的神經(jīng)功能單元(NFU);

        (2)輸入神經(jīng)元的輸入緩沖區(qū)(NBin);

        (3)輸出神經(jīng)元的輸出緩沖器(NBout);

        (4)用于突觸權(quán)重(SB)的突觸緩沖;以及

        (5)控制邏輯(CP)。

        其中,包括乘法器、加法器樹和非線性功能單元的NFU被設(shè)計(jì)為流水線。暫存器(scratchpad memory)有別于常規(guī)的高速緩存(cache),這里用作片上存儲,因?yàn)樗梢杂删幾g器控制并且易于利用數(shù)據(jù)局部性。

        圖6 . RENO 架構(gòu)[13]。

        盡管高效的計(jì)算單元對于DNN加速器很重要,但低效的內(nèi)存?zhèn)鬏斠矔绊懴到y(tǒng)的吞吐量和能效。電腦系列引入了特殊設(shè)計(jì),以最大限度地減少內(nèi)存?zhèn)鬏斞舆t并提高系統(tǒng)效率。DaDianNao [16]針對數(shù)據(jù)中心場景,集成了大型片上eDRAM,以避免較長的主存儲器訪問時間。同樣的原則也適用于嵌入式方案。ShiDianNao [19]是專用于CNN應(yīng)用程序的DNN加速器。由于權(quán)重復(fù)用,CNN的內(nèi)存占用量比其他DNN小得多。當(dāng)CNN模型較小時,可以將所有CNN參數(shù)映射到較小的片上SRAM。通過這種方式,ShiDianNao避免了昂貴的片外DRAM訪問,并且與DianNao相比實(shí)現(xiàn)了60倍的能效。

        PuDianNao [17]設(shè)計(jì)用于多種機(jī)器學(xué)習(xí)應(yīng)用。除了DNN,它還支持其他代表性的機(jī)器學(xué)習(xí)算法,如k-平均(k-means)和分類樹(classification tree)。為了處理這些工作負(fù)荷的不同數(shù)據(jù)訪問模式,PudianNao在其體系結(jié)構(gòu)中引入了具有不同復(fù)用距離的數(shù)據(jù)的冷緩沖區(qū)和熱緩沖區(qū)。此外,還引入了包括循環(huán)展開(loop unrolling)、循環(huán)平鋪(loop tiling)和緩存區(qū)塊化(cache blocking)在內(nèi)的編譯技術(shù),作為軟硬件協(xié)同設(shè)計(jì)方法,以提高片上數(shù)據(jù)的復(fù)用率和PE利用率。

        除了獨(dú)立的加速器之外,電腦系列還提出了一種稱為Cambricon [32]的領(lǐng)域特定指令集架構(gòu)(ISA),以支持廣泛的神經(jīng)網(wǎng)絡(luò)應(yīng)用。Cambricon是一種存-儲(loadstore)體系結(jié)構(gòu),集成了標(biāo)量、向量、矩陣、邏輯、數(shù)據(jù)傳輸和控制指令。ISA設(shè)計(jì)考慮了數(shù)據(jù)并行性、定制化矢量/矩陣指令以及暫存器的使用。

        Cambricon系列的后續(xù)產(chǎn)品引入了支持稀疏神經(jīng)網(wǎng)絡(luò)的方法。其他加速器支持更復(fù)雜的NN工作負(fù)荷,如LSTM和GAN。這些工作將在第6節(jié)中詳細(xì)討論。

        圖7 . 電腦架構(gòu)[18]。

        4.2. TPU——一個工業(yè)界的典型

        Google在2017年發(fā)布的第一篇TPU論文(TPU1)[5],如圖8所示,特別注意其使用的脈動陣列(systolic array)。TPU1專注于推理任務(wù),自2015年以來就已在Google的數(shù)據(jù)中心中進(jìn)行了部署。脈動陣列的結(jié)構(gòu)可視為專用的權(quán)重固定數(shù)據(jù)流或二維但指令多數(shù)據(jù)(2D SIMD)架構(gòu)。之后,在Google I/O'17 [33]中,Google宣布了其云TPU(也稱為TPU2),它可以處理數(shù)據(jù)中心中的訓(xùn)練和推理。TPU2也采用脈動陣列,并引入了向量處理單元。在Google I/O'18 [34]中,Google宣布了TPU3,其具備液體冷卻功能這一特點(diǎn)。在Google NEXT'18 [35]中,Google宣布了其邊緣TPU,其目標(biāo)是物聯(lián)網(wǎng)(IoT)的推理任務(wù)。

        4.3. 數(shù)據(jù)流分析和架構(gòu)設(shè)計(jì)

        通常來說,DNN/CNN需要大量內(nèi)存空間。對于大型和復(fù)雜的DNN/CNN模型,不太可能將整個模型映射到芯片上。由于有限的片外帶寬,提高片上數(shù)據(jù)復(fù)用率和減少片外數(shù)據(jù)傳輸對于提高計(jì)算效率至關(guān)重要。在體系結(jié)構(gòu)設(shè)計(jì)中,需要分析并且特別考慮執(zhí)行數(shù)據(jù)流(dataflow)。如圖9所示,Eyeriss [15,36]探索了不同的神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)流,包括輸入固定(IS)、輸出固定(OS)、權(quán)重固定(WS)和無本地重用(NLR)在空間架構(gòu),然后提出了行固定(RS)數(shù)據(jù)流,以增強(qiáng)數(shù)據(jù)復(fù)用。

        表1 電腦系列加速器[31]

        圖8 . TPU框圖[5]。

        圖9 . 行固定(row stationary)數(shù)據(jù)流[15,36]。

        高效的數(shù)據(jù)流設(shè)計(jì)也啟發(fā)了AI芯片行業(yè)的許多實(shí)用設(shè)計(jì)。例如,WaveComputing具有基于粗粒度可重配置陣列(CGRA)的數(shù)據(jù)流處理器[37]。又如,GraphCore專注于圖體系結(jié)構(gòu)[38],并聲稱在AI工作負(fù)荷方面能夠?qū)崿F(xiàn)比傳統(tǒng)標(biāo)量處理器和矢量處理器更高的性能。

        5. 基于新興存儲器的加速器

        ReRAM [27]和混合存儲立方體(HMC)[39]是具有代表性的新興存儲技術(shù)和可實(shí)現(xiàn)內(nèi)存中處理(PIM)的存儲結(jié)構(gòu)。CPU和片外存儲器之間的數(shù)據(jù)移動比浮點(diǎn)操作消耗的能量大兩個數(shù)量級[40]。PIM可以極大地減少計(jì)算中的數(shù)據(jù)移動。DNN加速器可以從ReRAM和HMC中獲得這些好處,并應(yīng)用PIM來加速DNN執(zhí)行。

        5.1. 基于ReRAM的DNN加速器

        利用ReRAM進(jìn)行DNN加速的關(guān)鍵思想是將ReRAM陣列用作矢量矩陣乘法的計(jì)算引擎[41,42],如第2.3節(jié)所述。PRIME [21]、ISAAC [25]、PipeLayer [22]是三個基于ReRAM的代表性DNN加速器。

        PRIME [21]的架構(gòu)如圖10所示。PRIME修改了主存儲器(ReRAM)設(shè)計(jì),以進(jìn)行數(shù)據(jù)存儲和計(jì)算。在PRIME中,字線(WL)解碼器和驅(qū)動器配置有多級電壓源,因此輸入特征圖可以在計(jì)算中被輸入存儲器陣列進(jìn)行計(jì)算。列多路復(fù)用器(column multiplexer)配置有模擬減法和Sigmoid電路,因此將兩個陣列的部分結(jié)果合并并發(fā)送到非線性激活單元(sigmoid)。感測放大器(sense amplifier)還可以重新配置感測分辨率,并執(zhí)行模數(shù)轉(zhuǎn)換器的功能。

        ISAAC [25]提出了一種用于ReRAM中的NN處理的塊內(nèi)流水線(intra-tile pipeline)設(shè)計(jì),如圖11所示。其流水線設(shè)計(jì)結(jié)合了數(shù)據(jù)編碼和計(jì)算。IMA是基于ReRAM的原位(in situ)乘法累加單元。在流水線中,在第一個周期,數(shù)據(jù)從eDRAM讀取到計(jì)算區(qū)塊中。ISAAC中的數(shù)據(jù)格式是16位定點(diǎn)。在計(jì)算中,在每個周期中,將一位輸入IMA,并將來自IMA的計(jì)算結(jié)果轉(zhuǎn)換為數(shù)字格式,移位1位并累加。因此,還要花費(fèi)16個周期來處理輸入。然后將結(jié)果應(yīng)用于非線性激活,并將結(jié)果寫回到eDRAM。

        圖10 . PRIME 架構(gòu)[21]。

        圖11 . ISAAC中的塊內(nèi)流水線 [25]。

        分塊計(jì)算(tiled computation)架構(gòu)是一種自然且廣泛使用的處理NN的方法。有必要探索一些粗粒度的設(shè)計(jì)以提高加速器的吞吐量。PipeLayer [22]為分塊計(jì)算體系結(jié)構(gòu)引入了層內(nèi)并行(intra-layer parallelism)和層間流水線(inter-layer pipeline),以提高吞吐量,如圖11所示。對于層內(nèi)并行,PipeLayer使用數(shù)據(jù)并行方案,該方案復(fù)制具有相同結(jié)構(gòu)的處理單元,用相同權(quán)重以并行處理多個數(shù)據(jù)。對于層間流水線,緩沖區(qū)被用于在層之間共享數(shù)據(jù),由此,多個層的計(jì)算可以并行處理。這種層間流水線屬于模型并行方案。

        5.2. 基于HMC的DNN加速器

        HMC垂直集成了DRAM片層和邏輯片層。HMC提供的高存儲容量、高存儲帶寬和低延遲可實(shí)現(xiàn)近數(shù)據(jù)處理(near-data processing)。在基于HMC的加速器設(shè)計(jì)中,將計(jì)算和邏輯單元放置在邏輯片層上,并將DRAM片層用于數(shù)據(jù)存儲。Neurocube [43]和Tetris [44]是基于HMC的兩個代表性DNN加速器。

        Neurocube [43]中的整個加速器具有一個HMC和16個vaults。如圖12所示,每個vault都可以視為一個子系統(tǒng),該子系統(tǒng)由執(zhí)行乘法累加(MAC)的處理引擎(PE)和用于在邏輯芯片和DRAM芯片之間進(jìn)行包裹傳輸?shù)穆酚善鹘M成。每個vault都可以通過路由器將數(shù)據(jù)發(fā)送到目標(biāo)vault,從而可以實(shí)現(xiàn)亂序的(out-of-order)數(shù)據(jù)到達(dá)。對于每個PE,如果緩沖區(qū)(16個條目)已填充滿數(shù)據(jù),則將進(jìn)行計(jì)算。

        Tetris [44]也是在一個HMC中部署了16個PE,但是它使用空間網(wǎng)格(spatial mesh)來連接PE。Tetris提出了一種繞過順序(bypassing ordering)方案,與文獻(xiàn)[15,36]中討論的數(shù)據(jù)固定方案相似,以提高數(shù)據(jù)的復(fù)用。為了最大限度地減少數(shù)據(jù)遠(yuǎn)程訪問,Tetris也探索了輸入和輸出特征圖的分塊。

        6. 新興應(yīng)用加速器

        通過應(yīng)用高效的NN結(jié)構(gòu),也可以提高DNN加速器的效率。例如,NN剪枝(pruning)使得模型變得小而稀疏,從而減少了片外存儲器訪問。NN量化(quantization)使模型可以在低精度模式下運(yùn)行,從而減少了所需的存儲容量和計(jì)算成本。諸如生成對抗網(wǎng)絡(luò)(GAN)和遞歸神經(jīng)網(wǎng)絡(luò)(RNN)等的新興應(yīng)用對專用加速器設(shè)計(jì)提出了特殊要求。本節(jié)將討論稀疏神經(jīng)網(wǎng)絡(luò)(6.1節(jié))、低精度神經(jīng)網(wǎng)絡(luò)(6.2節(jié))、生成對抗網(wǎng)絡(luò)(6.3節(jié))和遞歸神經(jīng)網(wǎng)絡(luò)(6.4節(jié))的加速器設(shè)計(jì)。

        6.1. 稀疏神經(jīng)網(wǎng)絡(luò)

        先前的工作DSD [46]表明,大部分的NN連接可以被修剪為零,而不會造成精度損失或僅有很小的損失。許多相應(yīng)的支持稀疏化計(jì)算架構(gòu)也被提出。例如,EIE[47]、Cnvlutin [48]分別針對通過稀疏權(quán)重矩陣和稀疏特征圖來加速NN的計(jì)算。但是,這些設(shè)計(jì)中采用的特殊數(shù)據(jù)格式和額外的編碼/解碼會帶來額外的硬件開銷。一些算法工作討論了如何以硬件友好的方式(如塊稀疏性)設(shè)計(jì)NN模型[45],如圖13所示。此外,一些可以處理稀疏NN中不規(guī)則內(nèi)存訪問和不平衡工作量的技術(shù)也被提出。例如,Cambricon-X [49]和Cambricon-S [50]通過軟件/硬件的協(xié)作方法解決了稀疏NNN中的內(nèi)存訪問不規(guī)范問題。ReCom [51]提出了一種基于結(jié)構(gòu)化權(quán)重/激活壓縮的基于ReRAM的稀疏NN加速器。

        圖12 . Neurocube [43]架構(gòu)和PE設(shè)計(jì)。

        6.2. 低精度神經(jīng)網(wǎng)絡(luò)

        降低數(shù)據(jù)精度或量化是提高DNN加速器計(jì)算效率的另一種可行方法。TensorRT [52]的最新結(jié)果表明,包括AlexNet、VGG、ResNet等在內(nèi)的廣泛使用的NN模型可以量化為8位,而不會導(dǎo)致推理精度損失。但是,當(dāng)采用更低的精度時,這種統(tǒng)一的量化策略很難保持網(wǎng)絡(luò)的精度。許多復(fù)雜的量化方案被提出,但是,這大大增加了加速器設(shè)計(jì)中量化編碼/解碼和工作負(fù)荷調(diào)度的硬件開銷。正如我們將在以下內(nèi)容中展示的那樣,在進(jìn)行各種優(yōu)化后,數(shù)據(jù)精度與整體系統(tǒng)效率之間存在一個“甜點(diǎn)”(“sweet point”)。

        (1)將權(quán)重和特征圖量化為不同的精度,以實(shí)現(xiàn)較低的推理精度損失。這可能會更改原始數(shù)據(jù)流,并影響加速器架構(gòu),尤其是暫存器內(nèi)存。

        (2)不同的層或不同的數(shù)據(jù)可能采用不同的量化策略。通常,NN的第一層和最后一層需要更高的精度。這個事實(shí)增加了量化編碼/解碼和工作量調(diào)度的設(shè)計(jì)復(fù)雜度。

        (3)通過觀察數(shù)據(jù)分布特征提出新的量化方案。例如,離群值感知(outlier-aware)加速器[53]對大多數(shù)數(shù)據(jù)(權(quán)重和激活)執(zhí)行密集(dense)和低精度的計(jì)算,同時有效地處理少量的稀疏和高精度離群值。

        (4)新的數(shù)據(jù)格式被提出,以更好地表示低精度數(shù)據(jù)。例如,Compensated-DNN [54]引入了新的定點(diǎn)表示:帶錯誤補(bǔ)償?shù)亩c(diǎn)(fixed point with error compensation, FPEC)。這種表示有兩個部分:①計(jì)算位,它們是常規(guī)的定點(diǎn)格式;②補(bǔ)償位,代表量化誤差。這項(xiàng)工作還提出了一種低開銷的稀疏補(bǔ)償方案來估計(jì)MAC設(shè)計(jì)中的誤差。

        圖13 . 結(jié)構(gòu)化稀疏性:按過濾器、形狀和深度進(jìn)行的稀疏[45]。

        6.3. 生成對抗網(wǎng)絡(luò)

        與原版的DNN/CNN相比,GAN由兩個NN組成,即生成器(generator)和鑒別器(discrimator)。生成器學(xué)會產(chǎn)生提供給鑒別器的偽造數(shù)據(jù),而鑒別器學(xué)會辨別產(chǎn)生的偽造數(shù)據(jù),目的是讓生成器生成最終無法由鑒別器區(qū)分的偽造數(shù)據(jù)。這兩個NN經(jīng)過反復(fù)訓(xùn)練,并在minimax游戲中相互競爭。GAN的運(yùn)算涉及一個新的運(yùn)算符,稱為轉(zhuǎn)置卷積[也稱為反卷積(deconvolution)或分?jǐn)?shù)步卷積(fractionally strided convolution)]。與原始卷積相比,轉(zhuǎn)置卷積執(zhí)行上采樣,并在特征圖中插入了大量零。如果我們直接映射轉(zhuǎn)置的卷積,將引入冗余計(jì)算。如果繞過零的計(jì)算,還需要一些技術(shù)來處理非結(jié)構(gòu)化內(nèi)存訪問和不規(guī)則的數(shù)據(jù)布局??傊c第4節(jié)中的獨(dú)立DNN/CNN推理加速器相比,GAN加速器必須:①支持培訓(xùn);②適應(yīng)轉(zhuǎn)置卷積;③優(yōu)化非結(jié)構(gòu)化數(shù)據(jù)訪問。

        ReGAN [23]提出了一種基于ReRAM的PIM GAN架構(gòu)。如圖14所示,專用的流水線被設(shè)計(jì)來用于逐層計(jì)算以增加系統(tǒng)吞吐量。為了進(jìn)一步提高訓(xùn)練效率,空間并行和計(jì)算共享這兩種技術(shù)被提出。LerGAN [55]提出了一種免零(zero-free)數(shù)據(jù)重塑方案,以消除基于ReRAM的PIM GAN架構(gòu)中的零相關(guān)計(jì)算,還提出了一種可重配置的互連方案,以減少數(shù)據(jù)傳輸開銷。

        對于基于CMOS的GAN加速器,先前的工作[56]提出了針對GAN中不同步驟的有效數(shù)據(jù)流,即用于前向/反向傳播的免零輸出固定(zero free output stationary,ZFOST),以及用于權(quán)重更新的免零權(quán)重固定(zero free weight stationary, ZFWST)。GANAX [57]提出了一個統(tǒng)一的SIMD-MIMD加速器,以最大化生成器和鑒別器的效率:由于生成器中零的插入,因此選擇性執(zhí)行中使用SIMD-MIMD模式,而使用純SIMD模式來操作鑒別器中的傳統(tǒng)CNN。

        6.4. 遞歸神經(jīng)網(wǎng)絡(luò)

        RNN有很多變體,包括門循環(huán)單元(GRU)和長期短期記憶(LSTM)。與傳統(tǒng)的DNN/CNN相比,RNN的循環(huán)特性會導(dǎo)致復(fù)雜的數(shù)據(jù)依賴。

        ESE [58]展示了專用于稀疏LSTM的加速器。為了確保較高的硬件利用率,一種負(fù)荷平衡感知的剪枝(load-balance-aware pruning)被提出。調(diào)度器旨在將壓縮模型編碼并劃分為多個PE,以實(shí)現(xiàn)并行性,并調(diào)度LSTM數(shù)據(jù)流。DNPU [59]提出了一種8.1TOPS/W可重配置的CNN-RNN片上系統(tǒng)(SoC)。DeltaRNN [60]利用RNN增量網(wǎng)絡(luò)(delta network)更新方法來減少內(nèi)存訪問:僅當(dāng)神經(jīng)元的激活變化超過增量閾值時,神經(jīng)元的輸出才會更新。

        7. DNN加速器的未來

        在本節(jié)中,我們將分享有關(guān)DNN加速器的未來的觀點(diǎn)。我們將討論三種可能的未來趨勢:①DNN訓(xùn)練和加速器陣列;②基于ReRAM的PIM加速器;③邊緣DNN加速器。

        圖14 . ReGAN中的計(jì)算共享流水線[23]。

        7.1. DNN訓(xùn)練和加速器陣列

        當(dāng)前,幾乎所有的DNN加速器架構(gòu)都集中在對加速器自身內(nèi)部以及DNN推理的優(yōu)化上,很少有人考慮提供訓(xùn)練支持[22]。推理的前提是我們已經(jīng)在部署DNN模型之前對其進(jìn)行了訓(xùn)練。然而很少有支持DNN訓(xùn)練的加速器架構(gòu)。隨著訓(xùn)練數(shù)據(jù)集和NN的大小增加,單個加速器不再能夠支持大型DNN的訓(xùn)練。我們不可避免地需要部署一組加速器陣列或多個加速器來訓(xùn)練DNN。

        文獻(xiàn)[61]提出了一種用于加速器陣列的DNN訓(xùn)練的混合并行結(jié)構(gòu)。加速器之間的通信占據(jù)著加速器陣列上DNN訓(xùn)練的時間和能量消耗。文獻(xiàn)[61]提出了一種通信模型,以識別在何處產(chǎn)生了數(shù)據(jù)通信以及數(shù)據(jù)通信量有多大?;谶@種通信模型,對逐層并行(layer-wise parallelism)進(jìn)行了優(yōu)化,以最大限度地減少總通信量并提高系統(tǒng)性能和能效。

        7.2. 基于ReRAM的PIM加速器

        當(dāng)前基于ReRAM的加速器(如[21,22,25,62])假設(shè)了理想的憶阻器單元。但是,現(xiàn)實(shí)中的挑戰(zhàn),如制程差異(process variation)[63,64]、電路噪聲[65,66]、保留和耐久性(retention and endurance)問題[67-69],極大地阻礙了基于ReRAM的加速器的實(shí)現(xiàn)。除了文獻(xiàn)[70]以外,基于ReRAM的加速器和高級架構(gòu)(如PIM)的硅證明(silicon proof)也很少。在基于ReRAM的實(shí)際DNN加速器設(shè)計(jì)中,必須考慮這些非理想因素。

        7.3. 邊緣DNN加速器

        在邊緣-云(edge-cloud)DNN應(yīng)用中,計(jì)算和內(nèi)存密集型部分(如訓(xùn)練)通常被移植到云中功能強(qiáng)大的GPU上進(jìn)行計(jì)算。在邊緣設(shè)備(如IoT或移動設(shè)備)上僅部署了一些輕量推理模型。

        隨著數(shù)據(jù)采集規(guī)模的迅速增長,人們希望擁有一些能夠針對某些任務(wù)自適應(yīng)學(xué)習(xí)或微調(diào)其DNN模型的智能邊緣設(shè)備。例如,在監(jiān)視用戶健康的可穿戴應(yīng)用中,由于大量的數(shù)據(jù)通信開銷和隱私問題,需要在本地調(diào)整CNN模型而不是將感測到的健康數(shù)據(jù)發(fā)送回云。在機(jī)器人、無人機(jī)和自動駕駛汽車等其他應(yīng)用中,靜態(tài)訓(xùn)練的模型無法有效地應(yīng)對隨時間變化的環(huán)境條件。

        然而將大量環(huán)境數(shù)據(jù)發(fā)送到云端進(jìn)行增量訓(xùn)練引起的漫長數(shù)據(jù)傳輸延遲通常是不可接受的。更重要的是,許多現(xiàn)實(shí)生活場景要求實(shí)時執(zhí)行多個任務(wù)和動態(tài)適應(yīng)能力[58]。然而,由于邊緣設(shè)備的有限的計(jì)算資源和功率預(yù)算,在邊緣設(shè)備上進(jìn)行學(xué)習(xí)非常具有挑戰(zhàn)性。RedEye[71]是用于邊緣DNN處理的加速器,其中計(jì)算與傳感集成在一起。為邊緣DNN設(shè)計(jì)輕量級、實(shí)時且節(jié)能的體系結(jié)構(gòu)是下一步的重要研究方向。

        Acknowledgement

        This work was supported in part by the National Science Foundations (1822085, 1725456, 1816833, 1500848,1719160, 1725447), the Computing and Communication Foundations (1740352), the Nanoelectronics COmputing Research in the Semiconductor Research Corporation (NC-2766-A), the Center for Research on Intelligent Storage and Processing-in-memory, one of six centers in The Joint University Microelectronics Program, a SRC program sponsored by Defense Advanced Research Projects Agency.

        Compliance with ethics guidelines

        Yiran Chen, Yuan Xie, Linghao Song, Fan Chen, and Tianqi Tang declare that they have no conflicts of interest or financial conflicts to disclose.

        猜你喜歡
        數(shù)據(jù)流加速器乘法
        輪滑加速器
        化學(xué)工業(yè)的“加速器”
        算乘法
        我們一起來學(xué)習(xí)“乘法的初步認(rèn)識”
        全民小康路上的“加速器”
        《整式的乘法與因式分解》鞏固練習(xí)
        汽車維修數(shù)據(jù)流基礎(chǔ)(下)
        把加法變成乘法
        一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機(jī)制
        等待“加速器”
        久久九九有精品国产尤物| 粗大的内捧猛烈进出少妇| 伊人久久大香线蕉综合网站| 水蜜桃久久| 国产一区二区三免费视频| 青青草免费在线视频久草| 女人18毛片a级毛片| 真实单亲乱l仑对白视频| 欧美日韩亚洲一区二区精品 | 胳膊肘上有白色的小疙瘩| 伊人久久大香线蕉av不变影院| 中文字幕亚洲熟女av| 日韩乱码人妻无码中文字幕久久| 国产精品美女一区二区三区| 人妻无码一区二区| 亚洲精品二区三区在线观看| 国语对白自拍视频在线播放| 亚洲va中文字幕无码一二三区| 伊伊人成亚洲综合人网香| 9久9久女女热精品视频免费观看| 亚洲中文字幕国产综合| 国产女同va一区二区三区| 天下第二社区在线视频| 免费在线视频一区| 成年男人午夜视频在线看| 亚洲综合色区一区二区三区| 中文字幕久久熟女蜜桃 | 国产一级农村无码| 999精品免费视频观看| 国产亚洲av一线观看| 高潮毛片无遮挡高清视频播放| 人妻无码久久一区二区三区免费| 久久精品无码一区二区三区不卡| 日本不卡视频一区二区三区| 色欲色香天天天综合vvv| 久久精品国产久精国产| 免费人成在线观看播放国产| av网页在线免费观看| 东京热加勒比视频一区| 国产精品免费_区二区三区观看| 欧美在线不卡视频|