国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

深度神經(jīng)網(wǎng)絡加速器體系結構概述

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

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

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

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

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

2. 背景

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

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

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

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

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

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

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

2.2. 計算模式

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

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

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

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

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

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

2.3. 阻性存儲器

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

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

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

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

圖3 . 將卷積轉換為Toeplitz矩陣乘法。

3. 片上加速器

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

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

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

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

圖4 . ReRAM基礎知識。

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

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

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

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

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

4. 獨立的DNN/CNN加速器

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

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

4.1. 電腦系列——一個學術界的典型

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

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

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

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

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

(5)控制邏輯(CP)。

其中,包括乘法器、加法器樹和非線性功能單元的NFU被設計為流水線。暫存器(scratchpad memory)有別于常規(guī)的高速緩存(cache),這里用作片上存儲,因為它可以由編譯器控制并且易于利用數(shù)據(jù)局部性。

圖6 . RENO 架構[13]。

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

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

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

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

圖7 . 電腦架構[18]。

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

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

4.3. 數(shù)據(jù)流分析和架構設計

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

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

圖8 . TPU框圖[5]。

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

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

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

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

5.1. 基于ReRAM的DNN加速器

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

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

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

圖10 . PRIME 架構[21]。

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

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

5.2. 基于HMC的DNN加速器

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

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

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

6. 新興應用加速器

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

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

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

圖12 . Neurocube [43]架構和PE設計。

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

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

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

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

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

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

圖13 . 結構化稀疏性:按過濾器、形狀和深度進行的稀疏[45]。

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

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

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

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

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

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

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

7. DNN加速器的未來

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

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

7.1. DNN訓練和加速器陣列

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

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

7.2. 基于ReRAM的PIM加速器

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

7.3. 邊緣DNN加速器

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

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

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

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ù)流加速器乘法
算乘法
莫比斯加速器眾創(chuàng)辦公空間
知識快餐店 科學加速器
我們一起來學習“乘法的初步認識”
全民小康路上的“加速器”
汽車維修數(shù)據(jù)流基礎(上)
《整式的乘法與因式分解》鞏固練習
汽車維修數(shù)據(jù)流基礎(下)
把加法變成乘法
基于數(shù)據(jù)流聚類的多目標跟蹤算法