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

        ?

        智能芯片的評述和展望

        2019-02-20 03:34:24周聖元陳云霽陳天石
        計算機研究與發(fā)展 2019年1期
        關鍵詞:內(nèi)存指令運算

        韓 棟 周聖元 支 天 陳云霽 陳天石,3

        1(中國科學院計算技術研究所智能處理器中心 北京 100190)2(中國科學院大學 北京 100049)3(上海寒武紀信息科技有限公司 上海 201203)

        人工智能是研究如何讓計算機從原始數(shù)據(jù)獲取知識,實現(xiàn)類似人類的行為或智能的學科.人類作為地球上擁有最高智慧的生物,有著區(qū)別于傳統(tǒng)計算機的感知、學習和決策等能力.近些年,人工智能技術在許多商業(yè)領域的應用取得了巨大的成功.人工智能技術使得電腦能夠像人類一樣,在復雜多變的真實環(huán)境中做出判斷和決策.其中發(fā)展最為迅速的技術是模仿人類大腦神經(jīng)系統(tǒng)結構的人工神經(jīng)網(wǎng)絡(ANN).人工神經(jīng)網(wǎng)絡的基本單元是感知器,它可以接受一系列輸入然后產(chǎn)生輸出.多層的感知器組成一個層級性的網(wǎng)絡結構,每層網(wǎng)絡中的感知器接受上層的輸入,然后生成輸出傳遞給下一層,最終產(chǎn)生輸出.

        人工神經(jīng)網(wǎng)絡的概念最早由McCulloch和Pitts[1]在1943年提出,并且他們提出了第1個神經(jīng)網(wǎng)絡模型,即神經(jīng)元模型(M-P)模型.之后,基于神經(jīng)突觸模型,Knott[2]在1951年提出了第1個神經(jīng)網(wǎng)絡學習策略.1958年,Rosenblatt[3]發(fā)明了用來進行模式識別的感知器模型,并且證明了在監(jiān)督學習的策略下感知器模型可以收斂.1974年,Werbos[4]發(fā)明了著名的監(jiān)督學習算法——反向傳播算法(BP),這大大推動了神經(jīng)網(wǎng)絡的發(fā)展.

        近年來,隨著世界各地科研人員和科技公司的重視和投入,人工智能的研究取得重大進展,在語音識別、圖像分類、自然語言處理、系統(tǒng)辨識與控制、醫(yī)療診斷等應用領域取得了巨大突破[5-17].

        傳統(tǒng)的人工智能算法運行于CPU或GPU之上,但隨著人工智能算法中人工神經(jīng)網(wǎng)絡的網(wǎng)絡結構迅速膨脹,單一的CPU或GPU在人工智能的處理上十分低效,于是很多硬件研究人員也開始轉向能夠有效支持人工智能算法的性能更強大的領域?qū)S锰幚砥鞯难芯考岸嗪颂幚砥飨到y(tǒng)的研究.

        但是,隨著半導體工藝達到納米級的尺度,柵氧化層泄漏損耗在整個芯片能量消耗中占據(jù)更大的比重,而且溝道摻雜濃度提高會導致結泄漏損耗增加[18].所以,能量密度的增加使得保證所有晶體管在全頻率和額定電壓下同時開關動作,并且保持芯片工作在安全溫度范圍內(nèi)變得十分困難.

        此外,Esmaeilzadeh等人[19]的研究表明,在給定溫度和能量的要求下,8 nm的集成電路中需保持斷電的元件(dark silicon)的比例會達到50%~80%,系統(tǒng)僅僅能在最好的情況下獲得7.9倍的加速.在這種情況下,研究人員開始研究專用的協(xié)處理器和通用處理器組成的混合系統(tǒng)來提高系統(tǒng)的性能.

        1 人工智能簡介

        1.1 經(jīng)典算法

        本節(jié)主要講述SVM算法[20]、k-Means算法[21]以及感知器算法[3]等經(jīng)典人工智能算法.

        SVM算法[20]是一種通過線性和非線性變換,對二分類問題進行有監(jiān)督學習的算法.其首先通過核函數(shù),將支持向量映射到高維度空間,然后在高維度空間依據(jù)范式進行線性分類,最終得到分類超平面.然后其通過已有的核函數(shù)以及該超平面對后續(xù)測試集進行分類.

        k-Means算法[21]是一種通過迭代將數(shù)據(jù)進行無監(jiān)督學習的聚類算法.其首先任選k個數(shù)據(jù)作為聚類中心,然后對每個數(shù)據(jù)點計算其與聚類中心的距離,再后重新計算聚類中心,最后判定用以評測數(shù)據(jù)的測度函數(shù)是否收斂,如果收斂則結束,否則繼續(xù)調(diào)整聚類中心.

        感知器算法是一種針對二分類問題的監(jiān)督學習算法.其通過權重和輸入進行內(nèi)積,得到激活值,然后依據(jù)激活值與數(shù)據(jù)標定結果,對權重進行更新,從而逐漸收斂得到二分類權重.

        1.2 人工神經(jīng)網(wǎng)絡基本算法

        近幾年,人工智能算法中的人工神經(jīng)網(wǎng)絡算法所占比重日益加大.傳統(tǒng)的神經(jīng)網(wǎng)絡使用Sigmoid函數(shù)作為神經(jīng)元的激活函數(shù),使用BP算法作為訓練方法.但BP算法由于其殘差會從靠后一個層向前一層反饋的時候,乘以因子得到前一層的殘差,因此,如果因子總是小于1,會產(chǎn)生“梯度消失”現(xiàn)象.隨著網(wǎng)絡層數(shù)的加深,“梯度消失”的現(xiàn)象更加嚴重,優(yōu)化函數(shù)容易陷入局部最優(yōu)解,并且局部最優(yōu)更可能偏離全局最優(yōu),深層網(wǎng)絡的效果可能還不如淺層網(wǎng)絡.深度神經(jīng)網(wǎng)絡(DNN)[22]使用ReLU函數(shù)代替了Sigmoid函數(shù),從而有效克服梯度消失的問題.最初,DNN中采用全連接層進行連接,但是因為網(wǎng)絡輸入層的節(jié)點很多,同時全連接層要求下層神經(jīng)元和上層所有神經(jīng)元形成連接,這樣一來網(wǎng)絡的參數(shù)數(shù)量會迅速膨脹.但是,實際上,在很多應用中,譬如圖像領域,只有圖像中局部的像素之間才存在關聯(lián),所以下層網(wǎng)絡只需要和上層網(wǎng)絡中的局部生成連接即可.卷積神經(jīng)網(wǎng)絡(CNN)就是基于這種思想,通過卷積核將下層和上層進行連接,卷積核參數(shù)在上層節(jié)點中共享,從而減少了網(wǎng)絡的參數(shù).卷積神經(jīng)網(wǎng)絡主要包括卷積層、匯聚層、歸一化層和全連接層(分類層)這4種網(wǎng)絡層.

        1) 卷積層.卷積層通過幾個濾波器(核)提取輸入數(shù)據(jù)的特征.假設卷積層的輸入尺寸為xi×yi×di,每一個卷積核的尺寸為Kx×Ky,步長為Sx,Sy.則輸出特征圖(a,b)處的值為

        其中,f(*)一般為激活函數(shù),如ReLU函數(shù);wi,j,k和β代表相應的權重和偏置.

        2) 匯聚層(池化層).匯聚層的主要作用是降低特征圖的尺寸,進一步減少網(wǎng)絡中的參數(shù)數(shù)量,同時減少過擬合的出現(xiàn).匯聚層常用最大值函數(shù)或平均值函數(shù)作為濾波器的形式,保留局部的最大值或平均值.設窗的大小為Kx×Ky,最大值的情況表示為

        3) 歸一化層.歸一化層通過不同特征圖的相同位置值的對比來模擬生物神經(jīng)元的橫向抑制機制.歸一化層有2種類型,局部對比歸一化(LCN)(即將每個數(shù)據(jù)與同一特征層相鄰位置的數(shù)據(jù)進行歸一化)和局部響應歸一化 (LRN)(即每個數(shù)據(jù)與不同特征層的同一位置的數(shù)據(jù)進行歸一化).實際使用中,LRN由于其跨越特征層做歸一化的特性,因而使用較多.LRN形式為

        其中,α,β,k是該層的參數(shù),M參數(shù)是特征圖fi的鄰居個數(shù).

        4) 分類層(全連接層).分類層通常作為神經(jīng)網(wǎng)絡的末層,輸出節(jié)點與輸入層全連接,可計算為

        其中,f(*)是最大值函數(shù)或其他激活函數(shù);w和β代表相應的偏置.

        1.3 常見人工智能應用算法

        1.3.1 AlexNet

        AlexNet[23]是一個8層的卷積神經(jīng)網(wǎng)絡,在ImageNet LSVRC-2010比賽對120萬圖像的1 000分類問題中,它達到了top-1 37.5%,top-5 17.0%的錯誤率,并且該模型的變種在ILSVRC-2012比賽中獲得了冠軍.

        AlexNet的前5層是卷積層(某些卷積層中含有池化層),后3層是全連接層,最后一層是一個1 000維的softmax層.它有4個新的特征:

        1) 使用ReLU非線性激活函數(shù).采用了非線性的激活函數(shù)ReLU,比傳統(tǒng)使用Sigmoid的等價網(wǎng)絡快6倍.

        2) 多GPU訓練.120萬張圖片訓練時的計算量太大,因此將它們的網(wǎng)絡分布在了2個GPU上.它們在每個GPU上放置一半的神經(jīng)元,同時只在某些特定的層上進行GPU之間的通信.

        3) 局部響應歸一化.即引入了LRN,從而增加了模型的泛化能力.

        4) 重疊池化.傳統(tǒng)的CNN中采用局部池化層,即池化單元互不重疊,亦即步長s等于窗的邊長z.在該網(wǎng)絡中采用了s=2,z=3的池化層,即重疊池化.

        AlexNet針對過擬合采取了2種方法:1)數(shù)據(jù)增強.該網(wǎng)絡中采用2種數(shù)據(jù)增強的舉措.一是進行圖像變換和水平翻轉,從256×256的圖像中提取5個(四角及中心)224×224的圖像塊并進行水平翻轉,最終得到10個圖像,對這10個圖像在softmax層的結果進行平均.2)失活(dropout).失活是指以0.5的概率把隱層神經(jīng)元的輸出設為0,這樣來強迫神經(jīng)元學習更魯棒的特征.在測試時使用所有神經(jīng)元,但將它們的輸出乘以0.5.該網(wǎng)絡的前2個全連接層使用了失活方法.

        1.3.2 GoogLeNet

        GoogLeNet[24]是一個22層的深度卷積神經(jīng)網(wǎng)絡,基于Inception架構[25],該架構能夠在保持計算量不變的基礎上增加網(wǎng)絡深度和廣度.GoogLeNet在ILSVRC2014比賽中取得了當時的最好結果.

        提高深度 CNN性能最直接的方式是增加其深度和廣度.然而這種方式使得系統(tǒng)更容易過擬合,同時也增加了計算資源的消耗.解決該問題的基本方法是將全連接層替換為稀疏的全連接層或卷積層.然而在非均勻的稀疏結構上進行數(shù)值運算時,現(xiàn)行的計算架構效率低下.

        Inception架構基于的主要思想是:使用容易獲得的稠密子結構近似覆蓋卷積神經(jīng)網(wǎng)絡的最優(yōu)稀疏結構.據(jù)此產(chǎn)生了圖1所示的結構:使用不同尺度的卷積核進行卷積,提取更加豐富的特征,然后進行聚合.

        Fig. 1 Initial architecture of Inception network圖1 初始Inception結構

        Inception架構基于的另外一個思想是:在計算要求高的地方減少維度.圖1中所示的的卷積核仍然會帶來很大計算量,于是使用了的卷積核降維之后再進行卷積.如圖2所示:

        Fig. 2 Final architecture of Inception network圖2 最終Inception結構

        1.3.3 ResNet

        ResNet[26]基于殘差學習框架,擁有更深的網(wǎng)絡結構,但復雜度仍然較低.該網(wǎng)絡在ImageNet測試集上取得了3.57%的錯誤率,并且在ILSVRC2015分類任務中贏得了第1名.

        在解決梯度消失的基礎上,一方面較深的模型效果更好,另一方面隨著深度的增加準確率會發(fā)生飽和,然后迅速下降.這種退化不是由于過擬合引起的,增加層數(shù)會帶來更大的誤差.ResNet通過引入深度殘差學習框架,解決了退化問題.

        ResNet中的思路是:

        1) 殘差學習.如圖3所示,假設多層網(wǎng)絡可以近似復雜函數(shù)H(x),這等價于讓網(wǎng)絡近似殘差函數(shù)F(x)=H(x)-x,然后加入前饋得到H(x)=F(x)+x.

        2) 快捷恒等映射.多層網(wǎng)絡可以表示為y=F(x,Wi)+x,如果F,x維度不匹配,可以使用Ws來匹配維度y=F(x,Wi)+Wsx.

        3) 網(wǎng)絡結構.先設計簡單網(wǎng)絡,設計原則為:相同輸出特征圖尺寸的層具有相同數(shù)量的濾波器;特征圖尺寸減半時將濾波器數(shù)量加倍.然后在簡單網(wǎng)絡基礎上加入快捷連接.

        Fig. 3 Residual network圖3 殘差學習網(wǎng)路

        1.3.4 Faster R-CNN

        先進的目標檢測算法依靠區(qū)域提議算法(region proposal algorithm)和基于區(qū)域的卷積神經(jīng)網(wǎng)絡(R-CNN).其中Fast R-CNN利用很深的網(wǎng)絡實現(xiàn)了接近實時的速率,而提議算法(proposals)是計算的主要瓶頸.R-CNN使用GPU進行運算,將區(qū)域提議算法在GPU上實現(xiàn)是一個加速的方法,但這樣就不能進行共享計算.為此,F(xiàn)aster R-CNN[27]引入了區(qū)域提議網(wǎng)絡(RPN),代替了以前使用的選擇性搜索(selective search)或滑動窗口算法進行區(qū)域提議.RPN與檢測網(wǎng)絡共用全圖像的卷積特征,實現(xiàn)了幾乎零成本的區(qū)域提議過程.

        RPN的思路是:基于共享卷積層所得的特征圖對可能的候選框進行判別.RPN引入錨點(anchor)機制,對特征圖進行卷積相當于使用滑窗在特征圖上進行平移,在特征圖的每個位置可以預測多個提議區(qū)域(假設有k個),每個位置可以在滑窗的基礎上加入尺度和長寬比,例如在文獻[27]中定義3種尺度和3種長寬比,則k=9,這樣的每個候選窗口稱為一個錨點,對于W×H的特征圖有W×H×k個錨點.之后的網(wǎng)絡產(chǎn)生2個分支,一個分支用于計算目標邊框的坐標和寬高(邊框回歸層reg),一個分支用于判斷邊框確定的區(qū)域是不是目標(分類層cls).

        為了訓練RPN,給每個錨點按照4個規(guī)則標定類別標簽(是或不是目標):1)如果候選框與真實框交并比(IoU)最大,標記為正樣本;2)如果候選框與真實框交并比IoU>0.7,標記為正樣本;3)IoU<0.3標記為負樣本;4)其余情況對訓練目標沒有幫助.然后根據(jù)Fast R-CNN的多任務損失方法最小化目標函數(shù),損失函數(shù)為

        為了能夠讓RPN和Fast R-CNN共享卷積層,有3種方法:1)交替訓練.先訓練RPN,然后用提議訓練Fast R-CNN,F(xiàn)ast R-CNN微調(diào)的網(wǎng)絡用于初始化RPN.2)近似聯(lián)合訓練.每次BP迭代時,前向過程生成區(qū)域提議,反向傳播過程中,對共享層組合RPN損失信號和Fast R-CNN損失信號,其中忽略了提議邊界框的導數(shù),故為近似聯(lián)合訓練.3)非近似聯(lián)合訓練.加入了使邊界框坐標可微分的ROI(region of interesting)池化層.

        1.3.5 GAN

        生成對抗網(wǎng)絡(GAN)[28]同時訓練一個獲取數(shù)據(jù)分布的生成網(wǎng)絡G和一個用來判斷樣本是否屬于訓練集的識別網(wǎng)絡D,這是一個對抗的過程.訓練的目標是,使G最大化讓D出錯的可能.這是一個極小化極大值(minimax)問題,訓練的結果是G生成近似訓練集的數(shù)據(jù)分布,而D判斷樣本屬于任何一方的概率都是1/2.在G和D都是多層感知器(MLP)的情況下可以使用BP算法進行訓練.

        2 人工智能處理器

        2.1 FPGA

        FPGA的可編程性和可重構性等特點允許在短時間內(nèi)對定制的設計進行評估,以此縮短開發(fā)周期,節(jié)省設計的開發(fā)費用.因此,有很多研究人員基于FPGA平臺進行人工智能處理器的研究和實現(xiàn).

        Farabet等人[29]實現(xiàn)了一個類RISC(精簡指令集計算機)的可編程卷積網(wǎng)絡處理器.該處理器通過多個DSP并行地計算使用相同的輸入的不同輸出的局部和,然后平移輸入(窗口)來完成相應輸出的卷積.Farabet等人[30]后來在Xilinx Virtex 6 FPGA平臺上實現(xiàn)了一個可擴展數(shù)據(jù)流硬件結構.該系統(tǒng)包括多個計算單元(tiles),每個計算單元集成了多個一維卷積器(MAC)來構成二維卷積器.

        由于二維卷積廣泛應用于圖像處理等場景中,Cardells-Tormo等人[31]提出了用于二維卷積的基于FPGA的結構.這種結構需要相對更少的片上內(nèi)存開銷,因此可以用低成本的FPGA實現(xiàn).此外,他們還提出了單位面積最大吞吐量準則,用來說明這種結構的高效性.

        之后,隨著任務復雜度日益增加,因此,為了能處理越來越復雜的多層感知器,Ordoez-Cardenas等人[32]使用低成本的Xilinx Spartan-3E FPGA實現(xiàn)了多層感知器神經(jīng)網(wǎng)絡(MLP)和相應的學習算法.他們設計了一個模塊化的方案,使系統(tǒng)能夠靈活地調(diào)整到特定的應用中.同時,流水線結構也提高了這個系統(tǒng)的性能.

        在處理神經(jīng)網(wǎng)絡系統(tǒng)的過程中,由于計算量增大,因此,功耗問題日益嚴峻,Maashri等人[33]發(fā)明了一個用于通用識別的神經(jīng)網(wǎng)絡系統(tǒng).該系統(tǒng)基于一個用于視覺處理的仿生神經(jīng)網(wǎng)絡模型HMAX,相比于CPU和GPU,它能夠分別達到7.6倍和4.3倍的加速,節(jié)省12.8倍和7.7倍的能量消耗.

        Gokhale等人[34]設計的nn-X則是一個可擴展、低功耗、用于加速深度神經(jīng)網(wǎng)絡的協(xié)處理器,它能夠達到理論227Gops/s和實際200Gops/s的性能,同時整個系統(tǒng)的功耗只有8W.在Xilinx ZC706平臺上實現(xiàn)的內(nèi)核使用2個ARM Cortex-A9 CPU作為主處理器,主處理器用來解析神經(jīng)網(wǎng)絡并將其翻譯為相應的指令,然后將數(shù)據(jù)傳遞給協(xié)處理器nn-X.

        隨著研究的推進,脈動型結構突顯出其在執(zhí)行卷積運算中的優(yōu)勢.SCoNN[35]是一個用于CNN推理階段的脈動型(systolic)硬件實現(xiàn).它通過多個2D數(shù)組處理單元和一個滑窗實現(xiàn)并行的卷積處理.為了節(jié)省更多的能量和帶寬,SCoNN[36-37]直接把中間結果儲存到RAM中來作為下層的輸入數(shù)據(jù).Sankaradas等人提出了由systolic并行卷積基元和一個數(shù)據(jù)傳輸專用控制器組成的協(xié)處理器,它擁有用于協(xié)處理器的片下高帶寬內(nèi)存,同時使用較低的數(shù)據(jù)精度,在每次內(nèi)存操作時使用打包過的數(shù)據(jù)字.該協(xié)處理器在FPGA中實現(xiàn),需要和主機一起工作.但是,脈動陣列機具有很多優(yōu)缺點.其優(yōu)點有:可以大量復用輸出數(shù)據(jù);更簡單的處理單元設計;為并發(fā)性調(diào)整的流水線;對計算密集型問題有相對較高的性能;簡單數(shù)據(jù)流和常規(guī)控制;具有可擴展性和模塊化特性.缺點有:對不同規(guī)模人工智能算法的靈活性不足;存在內(nèi)存帶寬約束等[38-39].

        隨著人工智能算法的數(shù)據(jù)量越來越大,通常需要使用額外的儲存空間來儲存它們.同時,隨著人工智能算法越來越復雜,帶寬需求越來越大.因此,研究者們開始尋找新的結構來充分地重利用(reuse)人工智能算法中的數(shù)據(jù).

        Qiu等人[40]提出了一個基于FPGA的人工智能加速器,它使用了全連接層的權重矩陣的奇異值分解來減少內(nèi)存訪問,同時采用動態(tài)精度數(shù)據(jù)量化方法來減少能量和邏輯消耗.他們發(fā)現(xiàn)卷積層的核心是計算而全連接層的核心是內(nèi)存,基于此,他們使用不同的方案對待2種數(shù)據(jù).他們利用Xilinx Zynq ZC706實現(xiàn)的設計在150 MHz下的CNN的運算中達到了137.0 GOP/s的性能.

        Zhang等人[41]實現(xiàn)了基于VC707 FPGA的61.62 GFLOPS人工智能加速器.他們使用了循環(huán)分塊和轉化技術來定量分析卷積層的計算和帶寬需求,然后借助roofline模型開發(fā)了一個統(tǒng)一的結構.

        Suda等人[42]則更深入地進行了Zhang等人的研究.他們不僅關注卷積層的加速,還提出了一種系統(tǒng)的設計開發(fā)方法,來最大化基于OpenCL的FPGA加速器的性能.

        為了減少額外的內(nèi)存和帶寬開銷,Peemen等人[43]提出新型的人工智能加速器.他們設計了一種靈活的內(nèi)存管理方式,用來支持數(shù)據(jù)訪問和優(yōu)化人工智能算法中的數(shù)據(jù)位置.這種加速器能夠最小化片上內(nèi)存需求,同時能夠最大化數(shù)據(jù)的利用率,因此這種方法避免了不必要的封裝(footprint)和能量消耗.

        此外,除去將人工神經(jīng)網(wǎng)絡部署于FPGA,Rice等人[44]基于George和Hawkins[45]研究的理論結構,實現(xiàn)了基于FPGA的分層貝葉斯網(wǎng)絡模型.結果表明相比于全部在Cray XD1運行的軟件,他們的硬件提升了75倍的平均吞吐量.Kim等人[46]提出了一種生成高效置信網(wǎng)絡(deep belief nets)原型,該模型比在高檔CPU上最優(yōu)的軟件實現(xiàn)快了25~30倍.

        2.2 ASIC

        專用集成電路(ASIC)是一類專用的電路,能夠給設計者實現(xiàn)應用最大程度的自由.為了滿足不同消費者的需求,ASIC常常有更小的體積、更低的功耗、更高的性能、更強的安全性和量產(chǎn)之后更低的成本.

        卷積運算在人工智能算法中占據(jù)很大的運算量,它本質(zhì)上適合做并行運算.早期關于專用人工智能芯片的研究主要關注如何盡可能快速地實現(xiàn)卷積運算,以滿足實時處理的需求.

        Lee和 Aggarwal[47]提出了一種并行的二維卷積結構,這種處理器擁有和圖片像素數(shù)目相同的處理單元,這些處理單元之間網(wǎng)狀相連,它可以使用任意大小的2維或3維的卷積核.Kamp等人[48]提出了一種全集成的2維濾波器(卷積核)宏單元(macrocell),它提供了7×7的可編程的卷積核,但只適用于垂直對稱的參數(shù)掩模.

        Kim等人[49]提出了一種201.4 GOPS的實時多目標識別處理器.芯片模仿人類視覺系統(tǒng),在含有3級流水線的神經(jīng)感知器中使用了仿生神經(jīng)網(wǎng)絡和模糊電路.

        由于人工智能算法中的Deep CNN在許多計算機視覺任務中能夠達到最高的準確率,在經(jīng)濟的推動下出現(xiàn)了很多Deep CNN加速器.Sim等人[50]提出了一種Deep CNN加速器,它擁有1.42 TOPS/W的能量效率.為了減少能量消耗,他們應用了一個雙范圍的乘法累加器(DRMAC)來進行低能耗的卷積運算.他們利用了分塊排列的方式(tiled manner),使用和片上存儲相同大小的數(shù)據(jù)塊和壓縮的卷積核進行卷積運算,來減少片下內(nèi)存的開銷和帶寬需求.

        Fig. 4 Architecture of DianNao圖4 DianNao結構方框圖

        此外,還有利用人工智能算法內(nèi)在錯誤彈性(intrinsic error resilience)的硬件加速器研究.Hashmi等人[51]提出了一種仿生的計算模型,并且揭示了相對皮質(zhì)網(wǎng)絡(relative cortical networks)的內(nèi)在容錯性.這個模型的關鍵是使用固定型方案(stuck-at)來保護函數(shù)計算結果,當硬件出現(xiàn)錯誤時不做任何處理.人工智能算法本質(zhì)上能夠抵抗短暫或者永久的錯誤,基于此,Temam[52]提出并且實現(xiàn)了一個能夠忍受多重錯誤的人工智能芯片.它可以使用多種的基于ANN的算法,實現(xiàn)一些高性能任務的運算.它和其他定制芯片一樣,相比通用芯片能夠提高2個數(shù)量級的能量效率.

        3 DianNao系列加速器

        3.1 DianNao

        DianNao[53]作為DianNao系列中最早的加速器,其計算峰值達到452 GOP/s,在臺積電65 nm的工藝下,面積為3.02 mm,功耗為485 mW.DianNao主要關注內(nèi)存使用的加速,其利用陳天石等研究者提出的啟發(fā)式模型方法,達到了計算量和內(nèi)存體系之間完美的平衡,從而獲得了相比CPU具有3個量級的能量效率提升.同時,盡管GPU在運算速度上超過了DianNao,但它需要的能量和面積是DianNao的100倍.

        DianNao基本結構為一個控制邏輯(CP)和其控制一個輸入緩沖區(qū)(NBin),以及另一個緩沖區(qū)(SB)和其將輸入神經(jīng)元和權重傳遞給的神經(jīng)功能單元(NFU),然后還包括輸出緩沖區(qū)(NBout),其從NFU接收輸出神經(jīng)元,如圖4所示.其中使用了一個內(nèi)存接口來為3個緩沖區(qū)中的數(shù)據(jù)流進行路由.其NFU利用交錯的3級流水線結構,將不同類型的層在DianNao中被分解為2個階段或者3個階段,并且在CP的控制下進行流水線運算,同時對多個輸出神經(jīng)元進行計算.

        為了在降低計算的能量消耗的同時,優(yōu)化數(shù)據(jù)傳輸策略,減少數(shù)據(jù)傳輸?shù)哪芰?,DianNao將片上存儲被分為3部分:輸入緩沖區(qū)(NBin)、輸出緩沖區(qū)(NBout)和突觸(權值)緩沖區(qū)(SB).其收益如下:1)可以調(diào)整SRAM為合適的讀寫帶寬,而不必是同等的帶寬.由于權重的數(shù)目大約比輸入神經(jīng)元和輸出神經(jīng)元的數(shù)目高一個量級,這種專用的結構可以為讀請求提供更好的能量和時間性能.2)分離儲存和神經(jīng)網(wǎng)絡位置先驗信息,使得DianNao能夠避免數(shù)據(jù)沖突,這種發(fā)生在緩沖區(qū)的沖突往往需要消耗時間和能量來彌補.3)DianNao能夠讓NBin緩沖區(qū)工作在循環(huán)緩存狀態(tài),來重用輸入神經(jīng)元數(shù)據(jù).因此,DianNao相比CPU或GPU將數(shù)據(jù)傳輸帶寬減少到1/30~1/10.

        3.2 DaDianNao

        DaDianNao[54]是在DianNao的基礎之上構建的多核處理器,其處理器核心的規(guī)模擴大到16個,同時增大了片上內(nèi)存.DaDianNao基于28 nm工藝,運行頻率為606 MHz,同時其面積只有67.7 mm2,功率只有大約16 W.DaDianNao不僅支持推理算法,同時支持訓練算法,以及權值預訓練環(huán)節(jié)(RBM).

        Fig. 5 Architecture of DaDianNao圖5 DaDianNao結構方框圖

        為了有效避免邏輯和數(shù)據(jù)的擁塞,DaDianNao采用如圖5所示的分塊(tile-based)結構,即將所有輸出神經(jīng)元的運算被分為16個片段,分給相應的運算塊(tile).其每個運算塊(tile)同時處理16個輸出節(jié)點對應的輸入節(jié)點,即單個芯片同時進行256個并行運算.

        DaDianNao一方面使用了大量分布式的eDRAM來使所有的突觸(權重)靠近運算器,另一方面通過采用了一個高帶寬的胖樹(fat tree)結構來向每個塊(tile)廣播相同的輸入數(shù)據(jù)以及收集每個塊中不同的輸出節(jié)點值.其在胖樹結構的末端,有2個eDRAM起到和DianNao中的NBin和NBout相同的作用.同時,中心eDRAM中的輸入神經(jīng)元值被廣播到所有的塊(tile)來計算不同的輸出,這些輸出被集中到另一個中心eDRAM.這樣,一方面,在MLP和卷積層中,比起神經(jīng)元,權重的數(shù)量更多,所以移動神經(jīng)元值比移動權重更合理;另一方面,靠近計算單元儲存權重提供低能耗/低延時的數(shù)據(jù)供應.同時中心eDRAM連接到了hyper transport(HT)2.0接口,用以和相同的芯片通信系列.

        3.3 PuDianNao

        PuDianNao[55]是DianNao系列中,用以支持多種人工智能算法的人工智能芯片.其支持的算法有k-近鄰、樸素貝葉斯、k-均值、線性回歸、支持向量機、深度神經(jīng)網(wǎng)絡、分類樹等.PuDianNao在1 GHz的頻率下,具有每秒1.056萬億次運算的峰值性能,但是只有0.596 W的功耗和3.51 mm2的芯片面積.多種人工智能算法在PuDianNao上運行的平均性能相當于使用通用GPU的性能,但是其能量消耗只有GPU大約百分之一.

        Fig. 6 Architecture of PuDianNao圖6 PuDianNao結構方框圖

        如圖6所示,PuDianNao由功能單元、數(shù)據(jù)緩存、1個控制模塊、1個指令緩存和1個DMA組成.其中,為了支持多種人工智能算法,功能單元被分為1個用來支持多種基礎運算的機器學習功能單元(MLU)和1個輔助MLU的算法邏輯單元(ALU).

        MLU包含6級流水,用以支持多種人工智能算法.1)第1級計數(shù)級(Counter)通過按位與運算或比較輸入數(shù)據(jù)然后累加結果來加速計數(shù)運算,計數(shù)運算在分類樹和樸素貝葉斯中經(jīng)常使用.2)第2級加法級(Adder)用來計算機器學習中普通的向量加法.3)第3級乘法級(Mult)計算向量乘法,并且可以從前一級或數(shù)據(jù)緩存中輸入數(shù)據(jù).4)第4級加法樹級(Adder tree)對乘法的結果進行求和.5)第5級累加級(Acc)對求和結果進行累加.6)最后的第6級Misc級負責排序和線性插值運算,排序器可以用來尋找累加級中的最小值,線性插值器用來計算非線性函數(shù)的近似結果.其中,乘法級、加法樹級和累加級配合共同實現(xiàn)點乘運算.此外,ALU用以提供MLU支持的基礎運算外的各種各樣的運算.

        片上數(shù)據(jù)緩存被分為3個分離的部分:8 KB的HotBuf,16 KB的ColdBuf 和8 KB的 OutputBuf.HotBuf用來存儲短重用距離(short reuse distance)的輸入數(shù)據(jù),相反,ColdBuf用來存儲長重用距離(long-reuse distance)的輸入數(shù)據(jù),而OutputBuf用來存儲臨時或輸出數(shù)據(jù).其一方面適應了機器學習中多種集群平均重用距離的變量,另一方面可以消除由不同讀入數(shù)據(jù)位寬引起的額外帶寬開銷.因此,PuDianNao可以避免內(nèi)存帶寬成為系統(tǒng)瓶頸.

        3.4 ShiDianNao

        Fig. 7 Computation mode of ShiDianNao圖7 ShiDianNao運算模式

        ShiDianNao[39]是用來處理圖像實時人工智能算法的人工智能芯片.它能夠被嵌入到傳感器中,以實現(xiàn)實時的圖像處理.ShiDianNao可以直接從CMOS或CCD傳感器直接獲取輸入圖像,同時僅用SRAM進行了完整的CNN映射,減少DRAM對權值的訪問.其相比DianNao,它大體上提升了60倍的能量效率.

        ShiDianNao加速器包括1個突觸權值緩存(synapse buffer, SB)、2個儲存輸入輸出節(jié)點數(shù)據(jù)的緩存(NBin, NBout)、1個神經(jīng)功能單元(neural function unit, NFU)和1個算法邏輯單元(arith-metic logic unit, ALU),1個用來儲存指令和譯碼的緩存和譯碼器.其中,NFU用來進行加、乘、比較等基礎的運算,ALU專門用于激活函數(shù)的運算.

        NFU包含了一組處理基元(processing element, PE)陣列.基于2維滑窗的特點,同時卷積核的大小有限,處理基元的性質(zhì)為:每個基元代表一個神經(jīng)元(節(jié)點),排列在一個2維的網(wǎng)格拓撲結構中.它可以傳輸FIFO中的數(shù)據(jù)到其相鄰的基元中.

        以圖7所示的卷積層為例,假設PE陣列的大小為2×2,卷積層卷積核的大小為3×3,步長為1×1.在計算特征圖時,每個PE計算一個輸出神經(jīng)元(節(jié)點),計算結束后移動到一個新的基元中.在計算的第1個周期Cycle0,所有4個PE(PE0,0,PE0,1,PE1,0,PE1,1)從SB中獲取卷積核k0,0的值,從NBin中獲取第1個輸入節(jié)點的值(x0,0,x0,1,x1,0,x1,1),然后PE計算輸入節(jié)點和權值的乘積,把臨時結果儲存到寄存器中,同時從FIFO中獲取輸入節(jié)點值.PE1,0,PE1,1在Cycle1中從NBin讀取輸入節(jié)點x2,0,x2,1,在Cycle2中讀取x3,0,x3,1.PE0,0,PE0,1在Cycle1中從PE1,0,PE1,1的FIFO中讀取輸入節(jié)點x1,0,x1,1,在Cycle2中讀取x2,0,x2,1.同時,在Cycle1和Cycle2中廣播卷積核值k1,0,k2,0,儲存輸入節(jié)點值到FIFO中.乘法運算的結果和前一次計算的結果進行累加.Cycle3~Cycle5和Cycle6~Cycle8的操作類似.PEi,0(i=0,1)從PEi,1中獲取輸入節(jié)點值xi,1-xi+2,1,xi,2-xi+2,2.PEi,1(i=0,1)從NBin中獲取輸入節(jié)點值xi,2-xi+2,2,xi,3-xi+2,3.同時系統(tǒng)順序地從SB中讀取卷積核值k0,1-k2,1和k0,2-k2,2,并將它們廣播給所有的PE,乘法和累加運算仍然同之前一樣.這樣每個PE就完成了運算,然后將累加的和傳給ALU就得到了輸出的y0,0,y0,1,y1,0,y1,1.

        3.5 Cambricon-X

        Cambricon-X[56]是一款專門針對稀疏剪枝設計的人工智能處理器.其利用人工神經(jīng)網(wǎng)絡的稀疏性,減少運算量,同時減少功耗和面積.

        其總體結構如圖8所示,由Buffer Controller負責從NBin中讀取數(shù)據(jù)送給PE,同時將PE的執(zhí)行結果存放到NBout中,PE進行具體的運算.

        Fig. 8 Architecture of Cambricon-X圖8 Cambricon-X總體結構框圖

        其中,Buffer Controller的結構如圖9所示,同時從NBin中讀取神經(jīng)元,然后依據(jù)各PE中的稀疏權值對應的索引,篩選出該PE需要運算的神經(jīng)元,而后將篩選后的神經(jīng)元發(fā)送給相應的PE,與PE中SB存儲的稀疏權值進行運算.從而,有效利用了稀疏神經(jīng)網(wǎng)絡的權值稀疏性,將不需要計算的數(shù)據(jù)在送給運算部件之前先行剔除掉.同時,其BCFU則將旁路過來的input數(shù)據(jù)和PE的運算結果進行整合,得到最終的數(shù)據(jù),將其寫入到NBout中.

        Fig. 9 Architecture of Buffer Controller圖9 Buffer Controller結構框圖

        PE結構如圖10所示,其分為PEFU以及SB.PEFU即包含乘法以及加法樹,將稀疏選擇之后的神經(jīng)元以及權重進行乘法,然后將得到的結果通過加法樹得到最終結果.SB則存放稀疏之后的權重,與稀疏選擇之后的輸入一一對應.

        Fig. 10 Architecture of PE and PEFU圖10 PE和PEFU結構框圖

        Cambricon-X利用稀疏選數(shù),在16個PE的基礎之上,做到了544 GOP/s的峰值,但是65 nm的工藝之下面積僅有6.38 mm2,并且其功耗僅有954 mW.

        3.6 指令集

        Cambricon[57]是一種新型的用于人工智能芯片的指令集結構(ISA).這種裝載結構基于對現(xiàn)有的人工智能算法復雜的分析,集成了標量、向量、矩陣、邏輯、數(shù)據(jù)傳輸和控制指令等.基于10種有代表性的NN技術對指令集進行的評估表明,Cambricon對大范圍的人工智能算法有很強的表示能力,并且有比x86,MIPS和GPGPU等通用指令集更高的代碼密度.比起最新最先進的人工智能芯片DaDianNao(能夠適應3種神經(jīng)網(wǎng)絡),基于Cambricon的加速器原型只帶來了可以忽略不計的延時/能量/面積開銷,卻能夠覆蓋10種不同的神經(jīng)網(wǎng)絡基準.

        Cambricon的設計受到RISC ISA的啟發(fā):首先,將復雜、高信息量的、描述高層次的神經(jīng)網(wǎng)絡功能塊(如網(wǎng)絡層)分解為對應低層次運算的更短的指令(如點乘),這樣就可以使用低層次的運算來集成新的高層次的功能塊,這就保證了加速器有很廣泛的適用范圍.其次,簡短的指令大大地降低了指令譯碼器設計和驗證的復雜性.

        Cambricon的裝載結構只允許使用加載或儲存(load/store)指令對主內(nèi)存進行訪問.Cambricon不使用向量寄存器,而是將數(shù)據(jù)儲存在片上暫存器中.Cambricon包含了4種指令類型:計算類型、邏輯類型、控制類型、數(shù)據(jù)傳輸類型.盡管4種指令有效長度不同,但為了設計的簡單性和內(nèi)存對齊的作用,所有的指令均為64 b.

        Cambricon的控制指令和數(shù)據(jù)傳輸指令與MIPS指令類似.Cambricon包含2條控制指令:jump和conditionalbranch.為了支持向量和矩陣運算指令,Cambricon的數(shù)據(jù)傳輸指令支持可變數(shù)據(jù)尺寸.

        基于對GoogLeNet的定量分析,神經(jīng)網(wǎng)絡中99.992%的基礎運算可以被合并為向量運算,99.791%的向量運算可以被更進一步合并為矩陣運算.因此,人工智能算法可以分解為標量、向量和矩陣運算,而Cambricon充分地利用了這一點.

        1) 矩陣指令.Cambricon中含有6條矩陣指令.以MLP為例,每個全連接層進行的運算為y=f(Wx+b).其中的關鍵運算是Wx,這可以通過矩陣乘向量指令(matrix-mult-vector, MMV)實現(xiàn).為了避免轉置運算,還有VMM指令,在神經(jīng)網(wǎng)絡的權值更新中,會用到W=W+μΔW運算.因此有叉乘指令(outer-product, OP)、矩陣乘標量指令(matrix-mult-scalar, MMS)和矩陣加法(matrix-add-matrix, MAM)指令.此外Cambricon還提供了矩陣減法指令(matrix-subtract-matrix, MSM)指令用于玻爾茲曼機(RBM).

        2) 向量指令.不失一般性,以Sigmoid函數(shù)為例:對于向量A,執(zhí)行Sigmoid運算f(A)=eA(1+eA),即對向量A中的每個元素進行激活操作.首先,使用向量指數(shù)指令(vector-exponential, VEXP)對向量A的每個元素求指數(shù);其次,使用向量標量加法指令(vector-add-scalar, VAS)為上述結果向量eA的每個元素加1;最后,使用向量除法指令(vector-divide-vector, VDV)計算eA(1+eA).類似地,對于其他函數(shù)Cambricon提供相應的向量指令,如vector-mult-vector (VMV),vector-logarithm(VLOG)等.此外,Cambricon提供了向量隨機數(shù)指令(random-vector, RV),用于相關人工智能算法的實現(xiàn)中.

        3) 邏輯指令.最好的人工智能算法中往往使用比較運算或其他邏輯運算.Cambricon中使用vector-greater-than-merge (VGTM)指令用于支持最大匯聚(max-pooling)運算.此外,Cambricon還提供了vector-greater-than (VGT), vector AND(VAND)等指令.

        4) 標量指令.Cambricon仍然提供基礎的單元素標量運算和標量超越函數(shù)等指令.

        4 人工神經(jīng)網(wǎng)絡相關技術的發(fā)展

        4.1 權值與輸入量化

        4.1.1 二值網(wǎng)絡

        由于人工智能芯片中乘法器最消耗能量和空間,Courbariaux等人[58]提出使用只含有-1和1的二值化權重可以將復雜的乘法累加運算替換為簡單的累加運算,進而提升硬件的性能.二值化連接(BinaryConnect)方法基于2個關鍵點:1)累加平均大量的隨機梯度需要足夠的精度,但含噪聲的權重(可以認為離散化是一種噪聲)也同樣適用于隨機梯度下降法(SGD).SGD每步都很小并且含有噪聲,對每個權重而言,隨機梯度的求和將噪聲平均掉了,因此這些累加器需要足夠的精度(來計算平均).同時,研究發(fā)現(xiàn)隨機舍入可以用來進行無偏離散化.2)變化權重噪聲、失活(Dropout)和失連(DropConnect)等方法在激活值或權重中加入了噪聲.但這些噪聲權重實際上提供了一種正則化的方法,可以讓更模型有更好的推廣性(避免了過擬合).這些研究說明只有權重的期望值才需要很高的精度,噪聲實際上是有好處的.

        BinaryConnect方法中的權重只含有+1和-1兩種情況,這樣乘法累加運算就可以被加減運算取代.一種直接的二值化方法如下:

        這種固定的二值化方法可以通過平均大量輸入權重的離散值來補償信息的損失.另一種更精細準確的方法是隨機二值化方法:

        其中,σ是Hard Sigmoid 函數(shù):

        網(wǎng)絡的更新策略是:為了保證SGD算法正常工作,只在前向傳播和后向傳播時使用二值化權重,權重更新時仍使用精確的權重.

        4.1.2 三值網(wǎng)絡

        Hwang等人[59]提出了一種新的人工智能算法,它只需要三值(+1,0,-1)的權重和2~3位的定點量化信號.訓練算法仍使用反向傳播算法重訓練定點網(wǎng)絡,但使用了一些方法進行提高精度,如通過范圍和靈敏度分析進行精細信號分組(elaborate signal grouping)、同時量化權重和信號值、最優(yōu)量化參數(shù)搜索和對深度神經(jīng)網(wǎng)絡的考慮.

        由于對權重和信號使用不同數(shù)據(jù)類型太復雜,所以需要根據(jù)它們的范圍和量化敏感度對它們分組.在每層的權重中,只有偏置值(bias)需要很高的精度(它們的范圍通常比其他權重大很多).對偏置值使用較高的(如8 b)定點數(shù)類型不會帶來很大的開銷.隱層信號的量化敏感度都很低,但網(wǎng)絡輸入的量化敏感度十分取決于應用.一種傳統(tǒng)的量化方法是:通過最優(yōu)步長Δ直接量化訓練的浮點數(shù)權重,浮點數(shù)權重可以通過先使用玻爾茲曼機(RBM)進行預訓練,然后使用誤差反向傳播的精細調(diào)整來獲得.可以通過最小化L2誤差方法(類似Lloyd-Max量化)獲得初始值,然后使用窮舉搜索對量化步長進行微調(diào)來獲得最優(yōu)步長.為了減小搜索維度,可以使用貪心算法進行逐層搜索.最終Δ大約是Lloyd-Max方法結果的1.2~1.6倍.

        在權重精度很低時,直接量化方法有很高的輸出誤差.這可以通過使用定點優(yōu)化方法重訓練量化的神經(jīng)網(wǎng)絡來解決.直接對量化的神經(jīng)網(wǎng)絡使用反向傳播算法往往行不通,這是因為權重的更新值往往比量化的步長小很多.為了解決這個問題,該網(wǎng)絡同時保留高精度和低精度的權重和信號.高精度的權重用于計算誤差的累計和生成量化的權重,而低精度的權重用于后向傳播算法的前向和后向步驟.

        4.2 計算以及傳輸剪枝

        4.2.1 稀疏CNN

        Graham[60]通過研究發(fā)現(xiàn),在高分辨率人工智能算法中使用單像素筆畫所寫的字符是一種稀疏矩陣.同時圖片填充后也可以認為是稀疏的,充分利用矩陣的稀疏性可以更加高效地訓練更大更深的網(wǎng)絡.

        假設手寫字符是一個N×N的二值圖片,非零像素數(shù)目只有O(N),第1個隱層可以借助稀疏性計算得更快.傳統(tǒng)卷積層使用valid模式,但不是最優(yōu)的,解決方法有:1)對輸入圖片用零像素填充;2)在每個卷積層使用較少數(shù)目的填充,保證卷積使用full模式;3)對一組重疊的子圖使用卷積網(wǎng)絡.而稀疏性能夠組合這些好的特點.

        對于手寫字體而言,更慢的池化操作(窗較小的池化層,網(wǎng)絡更深)可以保留更多的空間信息,使網(wǎng)絡具有更好的可推廣性.對通常的輸入而言,慢的池化層相對需要更高的計算代價,但稀疏的輸入由于在網(wǎng)絡的前幾層保留了稀疏性,就只需要相對較低的能量代價.

        DeepCNet(l,k)的網(wǎng)絡結構為:l+1層卷積層,中間是l層2×2的池化層.第l卷積層的濾波器的數(shù)量是nk,第1層濾波器尺寸為3×3,后面的層的濾波器的尺寸為2×2.在DeepCNet的基礎上加入network-in-network層,NiN層卷積核尺寸為1×1,在每個池化層和最后一個卷積層的后面加入NiN層,生成DeepCNiN(l,k)網(wǎng)絡.在該網(wǎng)絡中,采用了2種措施來使反向傳播函數(shù)更加高效:首先,只對卷積層進行失活操作,對NiN層不進行操作.其次,使用了leaky修正線性單元:

        假設輸入全零時,隱層變量的狀態(tài)為基態(tài)(ground state)(由于偏置的存在,基態(tài)的值非零).當輸入稀疏數(shù)組時,只需要計算和基態(tài)不同的隱層變量的值.為了前向傳播網(wǎng)絡,對每層計算2種矩陣:1)特征矩陣(feature matrix)是一個行向量列表,一個代表ground state,一個代表該層中每個激活位置.矩陣的寬度時每個空間位置特征的數(shù)量.2)指針矩陣(pointer matrix)是一個和卷積層大小相同的矩陣.在其中儲存每個空間位置在特征矩陣中對應的行.

        4.2.2 ReLU運行時剪枝

        Akhlaghi等人[61]統(tǒng)計發(fā)現(xiàn),CNN中的ReLU層的大量輸出都是零值,說明了卷積層中大量的輸出為負值.同時,不同中間層的零值空間分布不同.基于這個特點,SnaPEA算法能夠提前判斷中間計算結果是否會產(chǎn)生零值來決定是否提前終止,進而減少算法的計算量.SnaPEA有2種模式:1)準確模式.不會降低分類的準確率.2)預測模式.通過預測提前中止計算,以節(jié)省更多的計算量,代價是分類準確度有一定降低.

        在準確模式下,將卷積核中的權重按照符號排序,正的權值在前,負的權值在后.在計算過程中定期檢查求和的符號位,一旦符號位為負就終止運算,在這種情況下不會降低分類準確率.

        在預測模式下,如果卷積運算在特定次數(shù)的MAC運算后低于相應的閾值,最終的結果就很可能是負的,于是提前終止運算.但是這種操作會降低最終分類的準確度,為了減小這種損失,需要確定2個參數(shù):閾值和相應的運算次數(shù).參數(shù)可以通過一個多變量約束的優(yōu)化問題來確定,進一步通過貪心算法來解決這個問題.該算法包括3個步驟:1)獨立測量準確率對每個卷積核引入不精確值(提前停止)的靈敏度,根據(jù)這個靈敏度確定每個卷積核的參數(shù);2)聯(lián)合每層各個核的參數(shù),為每層確定一組參數(shù);3)迭代調(diào)整各層參數(shù),使得在減少最大計算量的同時達到可以接受的準確率.由于確定參數(shù)的算法執(zhí)行一次,所以并不會在CNN執(zhí)行期間增加額外的運行開銷.

        預測模式執(zhí)行特定次數(shù)計算后根據(jù)閾值判斷是否終止計算,因此需要確定計算哪一部分權值.一種方法是將權重按照絕對值降序排序,選擇幅值較大的進行計算.但由于忽略了數(shù)據(jù)隨機性和數(shù)據(jù)之間的依賴,這種方法會導致正確率急劇下降.SnaPEA將權重按升序排序,并將其分為幾組,從每組中選取幅值最大的權重參與計算.在這種情況下,劃分的組數(shù)就是運算的次數(shù).

        4.3 特殊器件

        3.1節(jié)所述的DianNao系列芯片采用了分布式片上內(nèi)存來減小數(shù)據(jù)傳輸?shù)哪芰块_銷,此外還有其他降低數(shù)據(jù)傳輸能量開銷的方法:例如,讓片下高密度的內(nèi)存更加靠近計算單元,或者直接將計算單元集成到內(nèi)存中.在嵌入式系統(tǒng)中,還會將計算模塊集成到傳感器中.一些相關的研究中使用了模擬信號處理,但其有增加電路敏感性和設備非理想性的缺點,導致的結果是通常使用降低的精度進行計算.另一個問題是,DNN通常在數(shù)字域進行訓練,對于模擬信號處理,DAC和ADC就還需要額外的能量消耗.

        同時,除了如DaDianNao等,把DRAM集成到芯片中,還可以使用TSV技術(也稱3D內(nèi)存技術)將DRAM堆疊在芯片上.這種技術已經(jīng)以混合立方儲存器(HMC)和高帶寬內(nèi)存(HBM)的形式商業(yè)化了.相比二維 DRAM,三維內(nèi)存(3D DRAM)的電容更小,因此能夠?qū)捥嵘粋€量級,同時能夠節(jié)省5倍的能量.

        將處理單元集成在內(nèi)存中是另一種思路[62].例如,乘法累加運算可以集成在一個SRAM數(shù)組的位元(bit cell)中.在這項研究中,使用了5位DAC將字線(WL)轉換成代表特征向量的模擬電壓,使用位元(bit cell)儲存權重(±1),位元電流(IBC)計算出特征向量和權重的積,位元電流之間相加來對位線(VBL)放電.比起分離進行讀取和運算,這種方法節(jié)省了12倍的能量.

        乘法累加運算可以直接集成在先進的非易失性儲存器中(憶阻器).特別地,可以使用電阻器的電導作為權重,電壓作為輸入來進行乘法運算,電流是乘法的輸出.加法操作可以通過將不同憶阻器的電流相加進行.這種方法的優(yōu)點是,由于計算被集成在內(nèi)存中,所以不用進行數(shù)據(jù)的傳輸,進一步節(jié)省了能量消耗.可供用作非易失性儲存器的器件有:phase change memory (PCM),resistive RAM(ReRAM),conductive bridge RAM (CBRAM)和spin transfer torque magnetic RAM (STT-MRAM)等.該技術的缺點有:降低了計算精度、需要忍受額外的ADC/DAC開銷、數(shù)組大小受連接電阻的導線數(shù)目限制、對憶阻器的編程需要消耗很大的能量等.ISAAC將DaDianNao中的eDRAM替換為憶阻器,為了解決精度不足問題,其中使用了8個二位的憶阻器來進行16 b的點乘運算.

        在圖像處理領域,將數(shù)據(jù)從傳感器傳輸?shù)絻?nèi)存中占據(jù)了系統(tǒng)能量消耗的很大的一部分.因此有一些研究試圖讓處理器盡可能地接近傳感器.特別地,大部分研究針對的是如何將計算移動到模擬域以避免ADC的使用,進而節(jié)省能量.然而,電路的非理想性導致了模擬計算中只能使用更低的精度.有研究將矩陣乘法集成在ADC中,其中乘法的高位使用開關電容進行計算.此外,還有研究實現(xiàn)了模擬的累加運算,其中假設3 b權重和6 b激活值的精度是足夠的,這將傳感器中ADC轉換次數(shù)減少到1/21.更有研究將整個卷積層的運算在模擬域?qū)崿F(xiàn).

        除了可以將計算集成在ADC之前,將計算嵌入在傳感器本身也是可行的.有研究使用了Angle Sensitive Pixels傳感器來計算輸入的梯度,降低了10倍的數(shù)據(jù)傳輸消耗.此外,由于DNN第1層的輸出通常是類似梯度的特征圖,這使得有可能跳過第1層的計算,進一步減少能量消耗.

        5 未來工作展望

        人工智能日益成為工業(yè)界和學術界極其重要的一個領域.隨著人工智能算法日益復雜以及人工智能處理的數(shù)據(jù)日益增大,人工智能芯片相比GPU和CPU等傳統(tǒng)處理器,具有越來越明顯的優(yōu)勢.人工智能芯片可以滿足在日益復雜的應用場景中,對存儲性能和計算能力的巨大需求.隨著技術的發(fā)展和研究的深入,人工智能芯片已經(jīng)發(fā)展出了諸如DianNao系列的芯片系列,解決了很多現(xiàn)有的問題和應用場景.但是,目前的人工智能芯片,其訪存瓶頸和計算能耗依然有很多的提升空間.其未來可能的發(fā)展方向有5個方面:

        1) 隨著應用場景的增多,人工智能算法日益復雜,作為人工智能芯片,保持針對人工智能算法的通用性將會是一個巨大的挑戰(zhàn).

        2) 人工智能算法中,其計算過程具有非精確性特點,因此,使用低精度量化是減少人工智能算法的計算復雜度和開銷的一種重要的手段.其不僅可以如4.1節(jié)所說,使用二值網(wǎng)絡處理特定的算法,同時還可以尋找適用范圍更加廣泛、更加精準的算法.將這些算法應用在人工智能芯片之后,將極大地節(jié)省芯片功耗和面積.

        3) 由于現(xiàn)有的人工智能算法,其搜索空間龐大無比.因此,進一步利用其稀疏性質(zhì),減少人工智能算法的計算復雜度和開銷,將會使得人工智能芯片具有更低的功耗和面積.

        4) 隨著芯片集成度越來越高,如何在一個芯片中部署多個運算核單元,并且使得這些運算核協(xié)同工作,獲得較高的加速比,也逐漸成為一個重要的發(fā)展方向.

        5) 對于人工智能算法,其計算單元相對簡單,因此,探索新的物理器件例如光衍射、憶阻器等來進行存儲和運算,可以極大地優(yōu)化人工智能芯片的功耗和算法.

        猜你喜歡
        內(nèi)存指令運算
        聽我指令:大催眠術
        重視運算與推理,解決數(shù)列求和題
        有趣的運算
        “春夏秋冬”的內(nèi)存
        當代陜西(2019年13期)2019-08-20 03:54:22
        ARINC661顯控指令快速驗證方法
        測控技術(2018年5期)2018-12-09 09:04:26
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        “整式的乘法與因式分解”知識歸納
        撥云去“誤”學乘除運算
        坐標系旋轉指令數(shù)控編程應用
        機電信息(2014年27期)2014-02-27 15:53:56
        基于內(nèi)存的地理信息訪問技術
        久久国产精品国语对白| 精品国产制服丝袜高跟| 国产亚洲精久久久久久无码苍井空| 日产精品一区二区免费| 最新在线观看免费的a站国产| 伊甸园亚洲av久久精品| 久久精品国产亚洲av高清漫画| 中文字幕久久久久久久系列| 免费人成黄页在线观看国产| 日本丰满少妇xxxx| 女厕厕露p撒尿八个少妇| 国产高清a| av一区二区在线免费观看| 欧美成人国产精品高潮| 野外性史欧美k8播放| 2021久久精品国产99国产| 色视频不卡一区二区三区| 女人高潮内射99精品| 18禁美女裸体网站无遮挡| 人妻精品一区二区免费| 91国产精品自拍在线观看| 国产99久久久国产精品免费看| 伊人99re| av免费一区在线播放| 男女无遮挡高清性视频| 国产精品对白刺激久久久| 视频一区精品自拍| 9l国产自产一区二区三区| 国产精品高清一区二区三区不卡| 四虎影库久免费视频| 精品丝袜国产在线播放| 91精品国产综合久久久密臀九色 | 日产精品久久久久久久蜜臀 | 国产精品麻豆综合在线| 亚洲乱码中文字幕综合69堂| 精品人妖一区二区三区四区| 好吊色欧美一区二区三区四区| 亚洲国产欧美久久香综合| 亚洲精品国产一区二区免费视频| 亚洲精品无码永久在线观看你懂的| 夜夜综合网|