摘要:深度神經(jīng)網(wǎng)絡(luò)所代表的人工智能技術(shù)被認(rèn)為是這一次技術(shù)變革的基石之一。導(dǎo)語深度神經(jīng)網(wǎng)絡(luò)目前是許多人工智能應(yīng)用的基礎(chǔ)。深度神經(jīng)網(wǎng)絡(luò)概述根據(jù)應(yīng)用情況不同,深度神經(jīng)網(wǎng)絡(luò)的形態(tài)和大小也各異。
深度神經(jīng)網(wǎng)絡(luò)(DNN)所代表的人工智能技術(shù)被認(rèn)為是這一次技術(shù)變革的基石(之一)。近日,由 IEEE Fellow Joel Emer 領(lǐng)導(dǎo)的一個(gè)團(tuán)隊(duì)發(fā)布了一篇題為《深度神經(jīng)網(wǎng)絡(luò)的有效處理:教程和調(diào)研(Efficient Processing of Deep Neural Networks: A Tutorial and Survey)》的綜述論文,從算法、模型、硬件和架構(gòu)等多個(gè)角度對(duì)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行了較為全面的梳理和總結(jié)。鑒于該論文的篇幅較長,機(jī)器之心在此文中提煉了原論文的主干和部分重要內(nèi)容,更多內(nèi)容請點(diǎn)擊文末「閱讀原文」下載原論文了解。
論文地址:https://arxiv.org/pdf/1703.09039.pdf
目前,包括計(jì)算機(jī)視覺、語音識(shí)別和機(jī)器人在內(nèi)的諸多人工智能應(yīng)用已廣泛使用了深度神經(jīng)網(wǎng)絡(luò)(deep neural networks,DNN)。DNN 在很多人工智能任務(wù)之中表現(xiàn)出了當(dāng)前較佳的準(zhǔn)確度,但同時(shí)也存在著計(jì)算復(fù)雜度高的問題。因此,那些能幫助 DNN 高效處理并提升效率和吞吐量,同時(shí)又無損于表現(xiàn)準(zhǔn)確度或不會(huì)增加硬件成本的技術(shù)是在人工智能系統(tǒng)之中廣泛部署 DNN 的關(guān)鍵。
本文旨在提供一個(gè)關(guān)于實(shí)現(xiàn) DNN 的有效處理(efficient processing)的目標(biāo)的進(jìn)展的全面性教程和調(diào)查。特別地,本文還給出了一個(gè) DNN 綜述——討論了支持 DNN 的多種平臺(tái)和架構(gòu),并強(qiáng)調(diào)了的有效處理的技術(shù)的關(guān)鍵趨勢,這些技術(shù)或者只是通過改善硬件設(shè)計(jì)或者同時(shí)改善硬件設(shè)計(jì)和網(wǎng)絡(luò)算法以降低 DNN 計(jì)算成本。本文也會(huì)對(duì)幫助研究者和從業(yè)者快速上手 DNN 設(shè)計(jì)的開發(fā)資源做一個(gè)總結(jié),并凸顯重要的基準(zhǔn)指標(biāo)和設(shè)計(jì)考量以評(píng)估數(shù)量快速增長的 DNN 硬件設(shè)計(jì),還包括學(xué)界和產(chǎn)業(yè)界共同推薦的算法聯(lián)合設(shè)計(jì)。
讀者將從本文中了解到以下概念:理解 DNN 的關(guān)鍵設(shè)計(jì)考量;通過基準(zhǔn)和對(duì)比指標(biāo)評(píng)估不同的 DNN 硬件實(shí)現(xiàn);理解不同架構(gòu)和平臺(tái)之間的權(quán)衡;評(píng)估不同 DNN 有效處理技術(shù)的設(shè)計(jì)有效性;理解的實(shí)現(xiàn)趨勢和機(jī)遇。
I. 導(dǎo)語
深度神經(jīng)網(wǎng)絡(luò)(DNN)目前是許多人工智能應(yīng)用的基礎(chǔ) [1]。由于 DNN 在語音識(shí)別 [2] 和圖像識(shí)別 [3] 上的突破性應(yīng)用,使用 DNN 的應(yīng)用量有了爆炸性的增長。這些 DNN 被部署到了從自動(dòng)駕駛汽車 [4]、癌癥檢測 [5] 到復(fù)雜游戲 [6] 等各種應(yīng)用中。在這許多領(lǐng)域中,DNN 能夠超越人類的準(zhǔn)確率。而 DNN 的出眾表現(xiàn)源于它能使用統(tǒng)計(jì)學(xué)習(xí)方法從原始感官數(shù)據(jù)中提取高層特征,在大量的數(shù)據(jù)中獲得輸入空間的有效表征。這與之前使用手動(dòng)提取特征或?qū)<以O(shè)計(jì)規(guī)則的方法不同。
然而 DNN 獲得出眾準(zhǔn)確率的代價(jià)是高計(jì)算復(fù)雜性成本。雖然通用計(jì)算引擎(尤其是 GPU),已經(jīng)成為許多 DNN 處理的砥柱,但提供對(duì) DNN 計(jì)算更專門化的加速方法也越來越熱門。本文的目標(biāo)是提供對(duì) DNN、理解 DNN 行為的各種工具、有效加速計(jì)算的各項(xiàng)技術(shù)的概述。
該論文的結(jié)構(gòu)如下:
Section II 給出了 DNN 為什么很重要的背景、歷史和應(yīng)用。
Section III 給出了 DNN 基礎(chǔ)組件的概述,還有目前流行使用的 DNN 模型。
Section IV 描述了 DNN 研發(fā)所能用到的各種資源。
Section V 描述了處理 DNN 用到的各種硬件平臺(tái),以及在不影響準(zhǔn)確率的情況下改進(jìn)吞吐量(thoughtput)和能量的各種優(yōu)化方法(即產(chǎn)生 bit-wise identical 結(jié)果)。
?Section VI 討論了混合信號(hào)回路和新的存儲(chǔ)技術(shù)如何被用于近數(shù)據(jù)處理(near-data processing),從而解決 DNN 中數(shù)據(jù)流通時(shí)面臨的吞吐量和能量消耗難題。
Section VII 描述了各種用來改進(jìn) DNN 吞吐量和能耗的聯(lián)合算法和硬件優(yōu)化,同時(shí)最小化對(duì)準(zhǔn)確率的影響。
Section VIII 描述了對(duì)比 DNN 設(shè)計(jì)時(shí)應(yīng)該考慮的關(guān)鍵標(biāo)準(zhǔn)。
II. 深度神經(jīng)網(wǎng)絡(luò)(DNN)的背景
在這一部分,我們將描述深度神經(jīng)網(wǎng)絡(luò)(DNN)在人工智能這個(gè)大框架下的位置,以及一些促進(jìn)其發(fā)展的的概念。我們還將對(duì)其主要的發(fā)展歷程和現(xiàn)階段主要的應(yīng)用領(lǐng)域做一個(gè)簡單的介紹。
A. 人工智能和深度神經(jīng)網(wǎng)絡(luò)
根據(jù) John McCarthy 的論述,深度神經(jīng)網(wǎng)絡(luò)(也稱為深度學(xué)習(xí))是人工智能(AI)大框架下的一部分。而人工智能(AI)是利用科學(xué)與工程學(xué)創(chuàng)造具有如同人類那樣能實(shí)現(xiàn)目標(biāo)的智能機(jī)器。人工智能這個(gè)詞就是這位計(jì)算機(jī)科學(xué)家在上個(gè)世紀(jì) 50 年代所創(chuàng)造出的。深度學(xué)習(xí)和整個(gè)人工智能的關(guān)系就如下圖所示。
圖 1:深度學(xué)習(xí)在人工智能大框架下的位置
B. 神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)(DNN)
神經(jīng)網(wǎng)絡(luò)從神經(jīng)元涉及對(duì)輸入值求加權(quán)和進(jìn)行計(jì)算這一概念而獲得靈感。這些加權(quán)和對(duì)應(yīng)于突觸完成值的縮放以及其和神經(jīng)元值間的組合。此外,因?yàn)橛?jì)算與神經(jīng)元級(jí)聯(lián)相關(guān)聯(lián),并且其為簡單線性代數(shù)的運(yùn)算,所以神經(jīng)元不會(huì)僅僅輸出加權(quán)和。相反,在神經(jīng)元中有函數(shù)執(zhí)行組合輸入的運(yùn)算,而這種函數(shù)應(yīng)該是非線性運(yùn)算。在非線性運(yùn)算的過程中,神經(jīng)元只有在輸入超過一定閥值時(shí)才生成輸出。因此通過類比,神經(jīng)網(wǎng)絡(luò)將非線性函數(shù)運(yùn)用到輸入值的加權(quán)和中。我們等一下會(huì)描述一些非線性函數(shù)。
圖 2:簡單的神經(jīng)網(wǎng)絡(luò)例子。(a) 神經(jīng)元和突觸,(b) 為每一層計(jì)算加權(quán)和,(c) 前向和反向(循環(huán))網(wǎng)絡(luò),(d) 全連接與稀疏
(a)中展示了計(jì)算神經(jīng)網(wǎng)絡(luò)的示意圖。圖的前端是輸入層,該層會(huì)接受輸入數(shù)據(jù)值。這些數(shù)據(jù)值前向傳播到神經(jīng)網(wǎng)絡(luò)中間層的神經(jīng)元中,中間層也常稱為神經(jīng)網(wǎng)絡(luò)的隱藏層。一個(gè)或多個(gè)隱藏層的加權(quán)和最終前向傳播到輸出層,該輸出層會(huì)最終向用戶呈現(xiàn)神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果。為了將腦啟發(fā)的術(shù)語和神經(jīng)網(wǎng)絡(luò)相匹配,神經(jīng)元的輸出通常稱為激活(activation),并且突觸如(a)所示通常稱為權(quán)重(weight)。
在上方表達(dá)式中,W_ij 代表著權(quán)重、x_i 為輸入激活、y_i 是輸出激活,而 f(·) 就代表著在 III-2 中描述的非線性激活函數(shù)。
在神經(jīng)網(wǎng)絡(luò)的領(lǐng)域內(nèi),有一門稱為深度學(xué)習(xí)的研究。普通神經(jīng)網(wǎng)絡(luò)基本上層級(jí)不會(huì)很多,而在深度學(xué)習(xí)里,神經(jīng)網(wǎng)絡(luò)的層級(jí)數(shù)量十分巨大,現(xiàn)如今基本上神經(jīng)網(wǎng)絡(luò)可以達(dá)到 5 到 1000 多層。
C. 推理 vs 訓(xùn)練
這一節(jié)中,如圖 4 所示,我們將把圖像分類用作訓(xùn)練 DNN 的一個(gè)強(qiáng)勁的實(shí)例。評(píng)估 DNN 時(shí),我們輸入一個(gè)圖像,DNN 為每一個(gè)對(duì)象分類輸出分值向量;分值較高的分類將成為圖像中最有可能的對(duì)象分類。訓(xùn)練 DNN 的總體目標(biāo)是決定如何設(shè)置權(quán)重以較大化正確分類(來自標(biāo)注的訓(xùn)練數(shù)據(jù))的分值并最小化其他不正確分類的分值。理想的正確分值與 DNN 基于其當(dāng)前權(quán)重計(jì)算的分值之間的差被稱為損失值(L)。因此訓(xùn)練 DNN 的目標(biāo)是找到一組權(quán)重以最小化大型數(shù)據(jù)集中的平均損失值。
圖 4:圖像分類任務(wù)
D. 開發(fā)歷史
1940 年代 - 神經(jīng)網(wǎng)絡(luò)被提出?
1960 年代 - 深度神經(jīng)網(wǎng)絡(luò)被提出?
1989 年 - 識(shí)別數(shù)字的神經(jīng)網(wǎng)(LeNet)出現(xiàn)?
1990 年代 - 淺層神經(jīng)網(wǎng)硬件出現(xiàn)(Intel ETANN)
2011 年 - DNN 語音識(shí)別取得突破性進(jìn)展(Microsoft)
2012 年 - 用于視覺的 DNN 開始替代人工放大(AlexNet)
2014 年+ - DNN 加速器研究興起(Neuflow、DianNao 等等)
圖 5 的表柱是這些年來 ImageNet 競賽中每屆冠軍的表現(xiàn)。你可以看到最初算法較精確度的錯(cuò)誤率在 25% 或更多。2012 年,多倫多大學(xué)的 AlexNet 團(tuán)隊(duì)通過 GPU 來提升其計(jì)算能力并采用深度神經(jīng)網(wǎng)絡(luò)方法,把錯(cuò)誤率降低了近 10% [3]。他們的成功帶來了深度學(xué)習(xí)風(fēng)格的算法的井噴,以及圖像識(shí)別技術(shù)的持續(xù)進(jìn)步。
圖 5:ImageNet 競賽 [10] 結(jié)果
E. DNN 的應(yīng)用
從多媒體到醫(yī)療,DNN 對(duì)很多應(yīng)用大有裨益。在這一節(jié)中,我們將展示 DNN 正在發(fā)揮影響的領(lǐng)域,并凸顯 DNN 有望在未來發(fā)揮作用的新興領(lǐng)域。
圖像和視頻
語音和語言
醫(yī)療
游戲
機(jī)器人
F. 嵌入 vs 云
執(zhí)行 DNN 推斷處理的嵌入平臺(tái)有著嚴(yán)格的能耗、計(jì)算和存儲(chǔ)成本限制。當(dāng) DNN 推斷在云中執(zhí)行時(shí),語音識(shí)別等應(yīng)用經(jīng)常有強(qiáng)烈的延遲需求。因此,在本文中,我們將聚焦于推斷處理而不是訓(xùn)練的計(jì)算需求。
III. 深度神經(jīng)網(wǎng)絡(luò)概述
根據(jù)應(yīng)用情況不同,深度神經(jīng)網(wǎng)絡(luò)的形態(tài)和大小也各異。流行的形態(tài)和大小正快速演化以提升模型準(zhǔn)確性和效率。所有深度神經(jīng)網(wǎng)絡(luò)的輸入是一套表征網(wǎng)絡(luò)將加以分析處理的信息的值。這些值可以是一張圖片的像素,或者一段音頻的樣本振幅或者某系統(tǒng)或者游戲狀態(tài)的數(shù)字化表示。
處理輸入的網(wǎng)絡(luò)有兩種主要形式:前饋以及循環(huán)(圖 2c)。前饋網(wǎng)絡(luò)中,所有計(jì)算都是在前一層輸出基礎(chǔ)上進(jìn)行的一系列運(yùn)作。最終一組運(yùn)行就是網(wǎng)絡(luò)的輸出,比如,這張圖片包括某個(gè)特定物體的概率是多少,某段音頻出現(xiàn)某個(gè)單詞的概率是多少,或者下一步行動(dòng)的建議等。在這類深度神經(jīng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)并無記憶,輸出也總是與之前網(wǎng)絡(luò)輸入順序無關(guān)。
相反,循環(huán)網(wǎng)絡(luò)(LSTM 是一個(gè)很受歡迎的變種)是有內(nèi)在記憶的,允許長期依存關(guān)系影響輸出。在這些網(wǎng)絡(luò)中,一些中間運(yùn)行生成的值會(huì)被存儲(chǔ)于網(wǎng)絡(luò)中,也被用作與處理后一輸入有關(guān)的其他運(yùn)算的輸入。在這篇文章中,我們關(guān)注的是前饋網(wǎng)絡(luò),因?yàn)榈侥壳盀橹?,少有人關(guān)注硬件加速,特別是循環(huán)網(wǎng)絡(luò)的。
深度神經(jīng)網(wǎng)絡(luò)也可以是全連接的(FC,也指多層感知器),如圖 2(d)最左部分所示。在一個(gè)全連接層中,所有輸出與所有輸入都是相連接的。這需要相當(dāng)數(shù)量的存儲(chǔ)和計(jì)算空間。謝天謝地,在許多應(yīng)用中,我們可以移除激活(activations)之間的一些連接,方法就是將權(quán)重設(shè)置為零而不影響準(zhǔn)確性。結(jié)果會(huì)產(chǎn)生一個(gè)稀疏連接層。圖 2(d)最右端的層就是一個(gè)稀疏連接層。
通過限制對(duì)結(jié)果有影響的權(quán)重?cái)?shù)量,我們也可以實(shí)現(xiàn)更高效的計(jì)算。如果每個(gè)輸出僅僅是一個(gè)固定大小輸入窗口的函數(shù),就會(huì)出現(xiàn)這類結(jié)構(gòu)化稀疏性。如果這套權(quán)重被用于每一個(gè)輸入計(jì)算,就會(huì)進(jìn)一步提高效率。這一權(quán)重共享能顯著降低權(quán)重的存儲(chǔ)要求。
通過將計(jì)算構(gòu)建為卷積,一種非常流行的窗口式的權(quán)重共享的網(wǎng)絡(luò)誕生了,如圖 6(a) 所示,其僅使用少量臨近的激活來計(jì)算加權(quán)和的輸出(即,該過濾器有一個(gè)有限的接受域,與輸入的距離超過特定值的所有權(quán)重都將被設(shè)置為 0),而且這一套權(quán)重能被每個(gè)輸入共享來計(jì)算(即,濾波器是空間不變的)。這種結(jié)構(gòu)稀疏性的形式正交于源自網(wǎng)絡(luò)(修改情況如本文部分 VII-B2 所述)的稀疏性。所以,卷積神經(jīng)網(wǎng)絡(luò)就是一種受歡迎的深度神經(jīng)網(wǎng)絡(luò)形式 [35]。
1) 卷積神經(jīng)網(wǎng)絡(luò)(CNN)
圖 6:卷積的維度。(a) 傳統(tǒng)圖像處理中的二維卷積,(b) CNN 中的高維卷積
圖 7:卷積神經(jīng)網(wǎng)絡(luò)
表 1:CONV/FC 層的形狀參數(shù)
給定表 I 中的形狀參數(shù)(shape parameters),卷積層的計(jì)算可以定義為:
2)非線性(Non-Linearity)
圖 8:多種形式的非線性激活函數(shù)(來自 Caffe Tutorial [43])
3)池化(Pooling)
圖 9:多種形式的池化(來自 Caffe Tutorial [43])
4)歸一化(Normalization)
控制輸入在層級(jí)中的分布能顯著地加快訓(xùn)練速度并提升準(zhǔn)確度。因此,輸入激活在層級(jí)上的分布(σ, μ)需要?dú)w一化處理,使其變換為均值為 0、標(biāo)準(zhǔn)差為 1 的分布。在批量歸一化(batch normalization)中,歸一化值如方程(2)所示將進(jìn)一步縮放和平移,參數(shù)(γ, β)是從訓(xùn)練 [44] 中學(xué)到的兩個(gè)小常數(shù),它們能避免數(shù)值問題。
A. 流行的 DNN 模型
在過去的二十多年里出現(xiàn)了很多種 DNN 模型。每一種都稱其擁有不同的「網(wǎng)絡(luò)架構(gòu)」,因?yàn)樗麄円罁?jù)不同層級(jí)數(shù)量、濾波器形狀(如過濾尺寸,濾波器和通道的數(shù)量)、層級(jí)類型以及連接方式而劃分。正確地理解這些不同的方法和它們發(fā)展的趨勢對(duì)于提高 DNN 引擎的效率至關(guān)重要。
其中包括:
LeNet [9] 于 1989 年提出,是最早的 CNN 方式之一。其中更為人熟知的是第八版的 LeNet-5,其中包含兩個(gè)卷積層和兩個(gè)全連接層 [45]。
AlexNet[3] 是第一次贏得 ImageNet 挑戰(zhàn)賽的 CNN 網(wǎng)絡(luò)(2012 年)。它由五個(gè)卷積層和三個(gè)全連接層組成。
Overfeat [46] 與 AlexNet 具有非常相似的架構(gòu):五個(gè)卷積層和三個(gè)全連接層。
VGG-16 [47] 更進(jìn)一步,使用了 16 層的深度神經(jīng)網(wǎng)絡(luò),其中包含 13 個(gè)卷積層,3 個(gè)全連接層。
GoogLeNet[48] 更深,有 22 個(gè)層,它首次引入了起始模塊(見下圖)。
ResNet [11],即殘差網(wǎng)絡(luò)(Residual Net),使用殘差連接可以讓層級(jí)更加深入(34 層以上)。該網(wǎng)絡(luò)第一次讓 DNN 在 ImageNet 挑戰(zhàn)賽中的表現(xiàn)超過了人類,top-5 錯(cuò)誤率在 5% 以下。
圖 11:GoogleNet[48] 的起始模塊(Inception module)通道長度實(shí)例,其中每個(gè) CONV 層在 ReLU 層之后(圖中未顯示)。
圖 12:ResNet[11] 中的快捷模塊。其中最后一個(gè) CONV 層之后的 ReLU 層被快捷連接。
表 2:目前流行的 DNN [3, 11, 45, 47, 48] 模型,其中正確率都基于在 ImageNet [10] 中 TOP-5 誤差。
IV. DNN 開發(fā)資源
DNN 得以快速發(fā)展的一個(gè)關(guān)鍵因素是研究社區(qū)與產(chǎn)業(yè)界使得一系列開發(fā)資源變得可用。這些資源對(duì) DNN 加速器的開發(fā)也很關(guān)鍵,提供工作負(fù)載的特性、在模型復(fù)雜性和準(zhǔn)確率上促進(jìn)權(quán)衡性的探索。這一章節(jié)將描述了對(duì)此領(lǐng)域感興趣的人能快速上手的一些資源。
A. 框架(Frameworks)
為了 DNN 開發(fā)的簡便以及讓訓(xùn)練網(wǎng)絡(luò)可共享,不同的團(tuán)隊(duì)開發(fā)出了不同的深度學(xué)習(xí)框架。這些開源庫包含了面向 DNN 的軟件庫。Caffe 在 2014 年由 UC 伯克利大學(xué)開源,它支持 C、C++、Python 和 MATLAB。TensorFlow 由谷歌團(tuán)隊(duì) 2015 年開源,支持 C++和 Python,也支持多 CPU 和 GPU。它要比 Caffe 更靈活,計(jì)算表達(dá)是數(shù)據(jù)流圖到張量管理(多維度陣列)。另一個(gè)流行的框架是 Torch,由 Facebook 和 NYU 開發(fā),它支持 C、C++和 Lua。當(dāng)然,還有其他的一些框架,比如 Theano、MXNet、CNTK,這在 [57] 中有所描述。
這些框架的存在不只是方便了 DNN 研究人員和應(yīng)用設(shè)計(jì)者,它們對(duì)編程高性能或更高效的 DNN 計(jì)算引擎也是無價(jià)的。例如,大部分框架可以使用英偉達(dá)的 cuDNN 庫在 GPU 上進(jìn)行快速運(yùn)算。這一加速對(duì)框架的使用者而言是很明顯的。類似地,硬件加速器這種如此易懂的結(jié)合也能在 Eyeriss 這樣的芯片上獲得 [58]。
最終,這些框架對(duì)硬件研究人員來說也是無價(jià)的資源(工作負(fù)載),它們可被用于設(shè)計(jì)不同工作負(fù)載的實(shí)驗(yàn)、性能分析(profiling)不同的工作負(fù)載、探索硬件與軟件之間的權(quán)衡。
B. 模型(Model)
C. 流行的分類數(shù)據(jù)集
在許多公開的數(shù)據(jù)集中有許多人工智能任務(wù)可用來評(píng)估 DNN 的準(zhǔn)確率。公開數(shù)據(jù)集對(duì)對(duì)比不同方法的準(zhǔn)確率而言非常的重要。最簡單也最常見的任務(wù)是圖像分類。圖像分類涉及到在給定的完整圖像中,選擇出 N 類物體中的 1 類,它不需要進(jìn)行定位于檢測。
其中包括:
MNIST:它包含手寫數(shù)字的 28×28 像素的灰度圖像,里面有 10 大類別(10 個(gè)數(shù)字)、6 萬張訓(xùn)練圖像和 1 萬張測試圖像。
CIFAR:這是一個(gè)包含不同物體 32×32 像素的彩色圖像數(shù)據(jù)集。
ImageNet:它包含的圖像是 256×256 彩色像素,有 1000 多類。
圖:13 MNIST 數(shù)據(jù)集(10 類、6 萬張訓(xùn)練圖像、1 萬張測試圖像)[59] vs. ImageNet 數(shù)據(jù)集 (1000 多類、130 萬張訓(xùn)練圖像、10 萬張測試圖像)[10]
D. 用于其它任務(wù)的數(shù)據(jù)集
V. 用于 DNN 處理的硬件
在這部分里,我們將討論在不同的硬件平臺(tái)中進(jìn)行高效處理而不降低準(zhǔn)確性的策略(所有在本節(jié)中的方法都要輸出完全相同的結(jié)果)。
對(duì)于 CPU 與 GPU 這樣的時(shí)間敏感架構(gòu),我們將討論在它們的運(yùn)行中如何減少乘法次數(shù)以增加吞吐量。
對(duì)于加速器這樣的空間敏感架構(gòu),我們討論數(shù)據(jù)流如何能低成本地從存儲(chǔ)器中被調(diào)用,以減少能耗。
圖 14:高度并行的計(jì)算范式
A. 在 CPU 和 GPU 平臺(tái)上加速核(kernel)計(jì)算
圖 15:映射到全連接層(a)的矩陣乘法,當(dāng)從單個(gè)輸入特征圖計(jì)算單個(gè)輸出特征圖時(shí),使用矩陣向量乘法。(b)當(dāng)從 N 個(gè)輸入特征圖計(jì)算 N 個(gè)輸出特征圖時(shí),使用矩陣乘法。
圖 16:映射到卷積層的矩陣乘法(a)將卷積映射到 Toeplitz 矩陣。(b)將 Toeplitz 矩陣擴(kuò)展到多個(gè)通道和濾波器。
圖 17:用于加速 DNN 的 FFT。
B. 為加速器設(shè)計(jì)的 Energy-Efficient Dataflow
圖 18:每個(gè) MAC 的存取
圖 19:存儲(chǔ)層級(jí)和數(shù)據(jù)移動(dòng)能量
圖 20:DNN 中的數(shù)據(jù)復(fù)用機(jī)會(huì)
圖 22:DNN 的數(shù)據(jù)流。(a) 權(quán)重固定(WS),(b) 輸出固定(OS),(c) 沒有局部復(fù)用(NLR)
VI. 近場數(shù)據(jù)處理
在上一章節(jié)中,我們強(qiáng)調(diào)了數(shù)據(jù)流通主導(dǎo)了能源的消耗。雖然空間架構(gòu)盡可能將儲(chǔ)存器安放在離計(jì)算很近的位置(如放入 PE),但同時(shí)我們也在努力將高密度存儲(chǔ)器安置在近計(jì)算的位置,或者直接將計(jì)算集成到存儲(chǔ)器本身中。在嵌入式系統(tǒng)中,我們還努力將計(jì)算放入到傳感器(最先收集數(shù)據(jù)的元件)中。在本論文的這個(gè)章節(jié)中,我們將討論如何通過使用混合信號(hào)回路(mixed-signal circuit)設(shè)計(jì)和高級(jí)存儲(chǔ)技術(shù)將處理盡可能放置在離數(shù)據(jù)近的地方以減少數(shù)據(jù)流通。
A. DRAM
B. SRAM
C. 非易失性電阻式存儲(chǔ)(Non-volatile Resistive Memories)
D. 傳感器
圖 33。通過 (a) SRAM bit-cell 和 (b) 非易失性電阻式存儲(chǔ)進(jìn)行模擬計(jì)算
VII. DNN 模型和硬件的聯(lián)合設(shè)計(jì)(CO-DESIGN)
對(duì) DNN 模型和 DNN 硬件進(jìn)行聯(lián)合設(shè)計(jì)可以為處理效率帶來進(jìn)一步的提升。在傳統(tǒng)上,DNN 模型的設(shè)計(jì)目標(biāo)是較大化準(zhǔn)確度,而不會(huì)考慮太多實(shí)現(xiàn)的復(fù)雜性。但是,這可能會(huì)使得設(shè)計(jì)很難實(shí)現(xiàn)。DNN 模型和硬件和聯(lián)合設(shè)計(jì)可以有效地聯(lián)合較大化準(zhǔn)確度和吞吐量,同時(shí)最小化能耗和成本,這能增加采用的可能性。這種方法已經(jīng)在其它重要的且廣泛應(yīng)用的多媒體應(yīng)用(比如視頻壓縮)中得到了證明。之前的時(shí)候,視頻標(biāo)準(zhǔn)大多關(guān)注算法開發(fā)。從 MPEG-2 到 H.264/AVC,在編碼效率上實(shí)現(xiàn)了 2 倍的提升,而解碼器復(fù)雜性卻增加了 4 倍 [110]。最近,的視頻編碼標(biāo)準(zhǔn) H.265/HEVC [111] 使用了算法和硬件的聯(lián)合設(shè)計(jì);結(jié)果其相對(duì)于 H.264/AVC 在編碼效率上實(shí)現(xiàn)了又 2 倍的提升 [112],而解碼器復(fù)雜性也只增加了 2 倍。在這一節(jié),我們將重點(diǎn)介紹幾個(gè) DNN 模型和硬件聯(lián)合設(shè)計(jì)方面的研究。注意和第 V 節(jié)不同,這一節(jié)所提出的技術(shù)可能會(huì)改變準(zhǔn)確度;盡管其目標(biāo)是在最小化準(zhǔn)確度改變的同時(shí)顯著減少能耗并提高吞吐量。
這些方法可以大致分為以下幾類:
降低運(yùn)算和操作數(shù)的精度。這包括將浮點(diǎn)數(shù)改為定點(diǎn)數(shù)、減少位寬、移到對(duì)數(shù)域和權(quán)重共享。
降低運(yùn)算的數(shù)量和模型的大小。其中的技術(shù)包括:壓縮、剪枝和設(shè)計(jì)緊湊的網(wǎng)絡(luò)架構(gòu)。
表 3:為 AlexNet 降低數(shù)值精度的方法。這里的準(zhǔn)確度是在 ImageNet 上測得的 top-5 error。* 表示不適用于第一層和/或最后的層
VIII. 用于 DNN 評(píng)估和比較的基準(zhǔn)指標(biāo)
A. DNN 模型的指標(biāo)
為了評(píng)估一個(gè)給定模型的屬性,我們應(yīng)該考慮以下元素:
在 ImageNet 這樣的數(shù)據(jù)集上的 top-5 error 方面的模型準(zhǔn)確度。另外,使用了哪種類型的數(shù)據(jù)增強(qiáng)(比如,多次裁剪、集成模型)。
對(duì)于該 DNN 模型,要么應(yīng)該使用眾所周知的模型,要么就應(yīng)該報(bào)告模型的參數(shù),包括層的數(shù)量、濾波器大小、濾波器的數(shù)量和通道的數(shù)量。
權(quán)重的數(shù)量會(huì)影響該模型的存儲(chǔ)需求,應(yīng)該報(bào)告。如果可能,也應(yīng)該報(bào)告非零權(quán)重的數(shù)量,因?yàn)檫@能反映理論上的最小存儲(chǔ)需求。
需要執(zhí)行的 MAC 的量應(yīng)被報(bào)告,因?yàn)槠浠蚨嗷蛏僦甘玖私o定 DNN 的運(yùn)算量和吞吐量。如果可能,也應(yīng)該報(bào)告非零 MAC 的量,因?yàn)檫@能反映理論上的最小計(jì)算需求。
表 4:流行的 DNN 指標(biāo)。稀疏性(sparsity)根據(jù)報(bào)告的非零(NZ)權(quán)重和 MAC 得到
B. DNN 硬件的指標(biāo)
為了測量 DNN 硬件的有效性,我們要考慮這些指標(biāo):
硬件設(shè)計(jì)的能量效率,包括每非零 MAC(非零權(quán)重和激活)的能量和 MAC 的位寬(bitwidth)。
片外(off-chip)帶寬(如,DRAM 帶寬)應(yīng)該報(bào)告的包括片外的每非零 MAC(非零權(quán)重和激活)的訪問和 MAC 的位寬
區(qū)域效率(area efficiency)衡量的是芯片的成本,要考慮內(nèi)存(寄存器或 SRAM)的尺寸和類型和控制邏輯的量。
吞吐量(throughput)應(yīng)該基于多種 DNN 的運(yùn)行時(shí)間來報(bào)告,以考慮映射和內(nèi)存帶寬的影響,這能提供比峰值吞吐量更有用和信息更豐富的指標(biāo)。?
表 5:Eyeriss 基準(zhǔn)指標(biāo)示例 [90]
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/4512.html
摘要:幸運(yùn)的是,這些正是深度學(xué)習(xí)所需的計(jì)算類型。幾乎可以肯定,英偉達(dá)是目前執(zhí)行深度學(xué)習(xí)任務(wù)較好的選擇。今年夏天,發(fā)布了平臺(tái)提供深度學(xué)習(xí)支持。該工具適用于主流深度學(xué)習(xí)庫如和。因?yàn)榈暮啙嵑蛷?qiáng)大的軟件包擴(kuò)展體系,它目前是深度學(xué)習(xí)中最常見的語言。 深度學(xué)習(xí)初學(xué)者經(jīng)常會(huì)問到這些問題:開發(fā)深度學(xué)習(xí)系統(tǒng),我們需要什么樣的計(jì)算機(jī)?為什么絕大多數(shù)人會(huì)推薦英偉達(dá) GPU?對(duì)于初學(xué)者而言哪種深度學(xué)習(xí)框架是較好的?如何將...
摘要:深度學(xué)習(xí)自動(dòng)找到對(duì)分類重要的特征,而在機(jī)器學(xué)習(xí),我們必須手工地給出這些特征。數(shù)據(jù)依賴深度學(xué)習(xí)和傳統(tǒng)機(jī)器學(xué)習(xí)最重要的區(qū)別在于數(shù)據(jù)量增長下的表現(xiàn)差異。這是深度學(xué)習(xí)一個(gè)特別的部分,也是傳統(tǒng)機(jī)器學(xué)習(xí)主要的步驟。 前言 機(jī)器學(xué)習(xí)和深度學(xué)習(xí)現(xiàn)在很火!突然間每個(gè)人都在討論它們-不管大家明不明白它們的不同! 不管你是否積極緊貼數(shù)據(jù)分析,你都應(yīng)該聽說過它們。 正好展示給你要關(guān)注它們的點(diǎn),這里...
摘要:深度學(xué)習(xí)在過去的幾年里取得了許多驚人的成果,均與息息相關(guān)。機(jī)器學(xué)習(xí)進(jìn)階筆記之一安裝與入門是基于進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),被廣泛用于語音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域。零基礎(chǔ)入門深度學(xué)習(xí)長短時(shí)記憶網(wǎng)絡(luò)。 多圖|入門必看:萬字長文帶你輕松了解LSTM全貌 作者 | Edwin Chen編譯 | AI100第一次接觸長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)時(shí),我驚呆了。原來,LSTM是神...
閱讀 2195·2023-04-25 20:45
閱讀 1103·2021-09-22 15:13
閱讀 3679·2021-09-04 16:48
閱讀 2603·2019-08-30 15:53
閱讀 961·2019-08-30 15:44
閱讀 986·2019-08-30 15:43
閱讀 1038·2019-08-29 16:33
閱讀 3459·2019-08-29 13:08