0
本文作者: 奕欣 | 2017-05-26 10:11 | 專題:雷峰網(wǎng)公開課 |
基于神經(jīng)網(wǎng)絡(luò)的人工智能近年取得了突破性進(jìn)展,正在深刻改變?nèi)祟惖纳a(chǎn)和生活方式,是世界各國爭相發(fā)展的戰(zhàn)略制高點。
神經(jīng)網(wǎng)絡(luò)作為實現(xiàn)人工智能任務(wù)的有效算法之一,已經(jīng)在各種應(yīng)用場景獲得廣泛的應(yīng)用。從云端到移動端,不同應(yīng)用場景也對神經(jīng)網(wǎng)絡(luò)的計算能力提出了不同的需求。
神經(jīng)網(wǎng)絡(luò)的廣泛應(yīng)用離不開核心計算芯片。目前的主流通用計算平臺包括 CPU 和 GPU,存在著能效較低的問題(能效即能量效率,是性能與功耗的比值)。為了獲得更高的能效,我們需要設(shè)計一種專用的神經(jīng)網(wǎng)絡(luò)計算芯片來滿足要求。國際IT巨頭,如英特爾、谷歌、IBM,都在競相研發(fā)神經(jīng)網(wǎng)絡(luò)計算芯片。
然而,神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)多樣、數(shù)據(jù)量大、計算量大的特點,給硬件設(shè)計帶來了巨大挑戰(zhàn)。因此,在設(shè)計面向神經(jīng)網(wǎng)絡(luò)的高性能、高能效硬件架構(gòu)時,我們需要思考清楚以下三個問題:
好的計算模式應(yīng)該是怎樣的?
為了支持這樣的計算模式,架構(gòu)應(yīng)該怎樣設(shè)計?
已經(jīng)實現(xiàn)的硬件架構(gòu),針對具體算法和應(yīng)用需求,如何配置成最優(yōu)的計算模式?
雷鋒網(wǎng)本期公開課特邀請到清華大學(xué)微納電子系四年級博士生涂鋒斌,為我們分享神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)的設(shè)計經(jīng)驗。他將通過介紹其設(shè)計的可重構(gòu)神經(jīng)網(wǎng)絡(luò)計算架構(gòu) DNA (Deep Neural Architecture),與大家分享在設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時需要思考的問題。他在完成設(shè)計的同時,解決了這些問題,并對現(xiàn)有的硬件優(yōu)化技術(shù)做出了總結(jié)。
本文根據(jù)雷鋒網(wǎng)硬創(chuàng)公開課演講原文整理,并邀請了涂鋒斌進(jìn)行確認(rèn),在此感謝。由于全文篇幅過長,分(上)(下)兩部分。
上篇傳送門:
清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 硬創(chuàng)公開課總結(jié)
公開課視頻:
講完了計算模式的優(yōu)化,我們接下來針對硬件架構(gòu)設(shè)計給大家做一些分享。
我們研究工作的核心主要集中在計算模式的優(yōu)化上面,而硬件架構(gòu)本身其實更多的是如何去配合好的計算模式。
如圖所示,這是 DNA 架構(gòu)的一個整體的框架圖。DNA 的全稱是 「Deep Neural Architecture」,它的整體架構(gòu)和我們之前提到的硬件架構(gòu)模型是類似的,當(dāng)然在具體的細(xì)節(jié)上就是會有一些參數(shù),還有一些數(shù)據(jù)、通路上會做一些細(xì)致的一些策劃。值得一提的就是說我們的計算核心內(nèi)部有兩個計算引擎,共享同一個同一塊局部輸入寄存器,但有各自的輸出寄存器,而架構(gòu)主要有三個特點:
針對網(wǎng)絡(luò)各層的配置信息
架構(gòu)在片上會存儲一些針對網(wǎng)絡(luò)各層的配置信息(Configuration Context),存儲在控制器內(nèi)部(藍(lán)色虛框)
可重構(gòu)的數(shù)據(jù)通路
即從 Output Buffer 反饋回 Output REGs 的通路(紅線)是可重構(gòu)的。此外,整體的輸入數(shù)據(jù)通路也是可重構(gòu)的形態(tài)。
另外在 CE 內(nèi)部,它也會有一些可重構(gòu)的數(shù)據(jù)通路,我們之后會展開。
「Ping-Pong」緩存設(shè)計
我們的設(shè)計中必須要考慮的一點,在于我們必須承認(rèn),對現(xiàn)有的這些深度神經(jīng)網(wǎng)絡(luò)而言,它的計算量數(shù)據(jù)量非常大,以致無法在片上完整地存儲整個網(wǎng)絡(luò)的數(shù)據(jù)和權(quán)重,所以在計算過程中,我們不得不與外部的存儲進(jìn)行頻繁地訪問。為了在計算過程中對存儲器的訪問不影響這些計算的性能,使得計算單元一直處于工作狀態(tài),我們需要對于每一塊的這些存儲進(jìn)行一個「Ping-Pong」Buffer 的緩存設(shè)計,意思就是說在當(dāng)前 Buffer 在工作的時候,它的另一塊 Buffer 在外面保留數(shù)據(jù),使得我當(dāng)前 Buffer 用完的時候,下一次需要用到的數(shù)據(jù)也準(zhǔn)備好了。
此外,我們對 CE 內(nèi)部(Convolution Engine)內(nèi)部做了一些額外的設(shè)計——4 級 CE 結(jié)構(gòu),這里提一些主要的概念。我做了一個空間上的展開圖。
它主要有四個級別:
第一個層次叫做輸入寄存器級(Input REG Level),對應(yīng)的是 CE 內(nèi)部的局部輸入寄存器;
第二個級別叫數(shù)據(jù)傳輸級別,或稱數(shù)據(jù)共享級(Data Sharing Level)。它主要是進(jìn)行數(shù)據(jù)通路的重構(gòu),以支持我們剛剛提到的并行卷積映射方法,是很重要的一個部分。
第三部分就是最核心的計算機,即 MAC 級(MAC Level),MAC 就是乘加單元的意思,就是最核心計算以一個 16×16 的陣列實現(xiàn)。
第四級就是和輸入級對應(yīng)的輸出寄存器級。
而我們前面也提到,CE 是由很多個 PE 構(gòu)成的,那么此處 CE 的第二至第四層這三個級別,他們對應(yīng)的是 PE 的三個級別,實際上 PE 也是一個三級的結(jié)構(gòu),和 CE 結(jié)構(gòu)是對應(yīng)的,比如對于一個 CE 來說,總共有 16 個 PE,所對應(yīng)的就是 16 個 Map 和 16 個數(shù)據(jù)傳輸級的寄存器,從數(shù)值上我們也可以看到它的對應(yīng),具體就不多展開了。
采用了并行卷積映射方法的時候,如何共享所使用的輸入數(shù)據(jù)呢?我們設(shè)計了一個數(shù)據(jù)傳輸網(wǎng)絡(luò)(Data Sharing Network,DSN)。這三個圖分別對應(yīng)的是 16×16、8×8 和 4×4 的網(wǎng)絡(luò),以不同的塊和尺寸來進(jìn)行數(shù)據(jù)的傳輸,傳輸?shù)姆较蛑饕腥齻€,包括從左往右的橫向、從上往下的縱向、以及斜 45 度角的從左上往右下的斜向,以相鄰的數(shù)據(jù)塊進(jìn)行數(shù)據(jù)的傳遞。
我們這里以步長為 2 且使用 DSN0 的一個案例簡單看一看。我們之前說到,對于步長為 2 的情況,并行計算四張 Map,而每張 Map 的數(shù)據(jù)其實是復(fù)用的。具體來說,紅色小塊代表的是 Map0 的第一個點,它所收集到的輸入數(shù)據(jù)是可以直接共享給它相鄰的三個(綠色、紫色和藍(lán)色)的三張 map 上面的,而它們只需要直接從紅色小塊上的 PE 上獲取各自所需要的數(shù)據(jù),并不需要從外部導(dǎo)進(jìn)來。這樣的話,其實從一定程度上減少了訪存的次數(shù)。
有了一個架構(gòu)之后,我們需要有一套的工作流程去指導(dǎo)怎么使用它。
我們的主要工作流程主要分為兩個階段,一個是編譯階段,第二個是執(zhí)行階段。
階段 1:編譯
我們需要輸入神經(jīng)網(wǎng)絡(luò)的一些參數(shù),以及硬件的約束,比如 Buffer 的容量,還有計算資源的個數(shù)等描述硬件架構(gòu)的一個參數(shù),一旦硬件架構(gòu)設(shè)計好后,這些參數(shù)是可以提出來的;
在我們的編譯框架里面,需要對網(wǎng)絡(luò)的每一層逐一地進(jìn)行調(diào)度,并執(zhí)行一個調(diào)度框架,它內(nèi)部其實是在解決一個優(yōu)化問題,優(yōu)化問題是什么?
用戶可以設(shè)定是要優(yōu)先優(yōu)化性能還是優(yōu)先優(yōu)化能效,或者優(yōu)化兩個目標(biāo),而它的約束條件就是我們硬件上的一些參數(shù),比如說我緩存的需求不能超過片上的緩存大小等,這些都可以通過一個約束條件進(jìn)行約束。通過執(zhí)行一個調(diào)度框架,我們可以得到每一層的調(diào)度結(jié)果,分別由數(shù)據(jù)復(fù)用模式和卷積映射方式構(gòu)成,并用一些參數(shù)化形式表達(dá)。
對神經(jīng)網(wǎng)絡(luò)的每一層進(jìn)行這樣調(diào)度,我們就得到每層的一個調(diào)度表,從而生成目標(biāo)神經(jīng)網(wǎng)絡(luò)的配置信息,這時候我們就可以進(jìn)入執(zhí)行階段,配置信息會放入到主處理器里。
階段 2:執(zhí)行
在執(zhí)行過程當(dāng)中,大家看左邊大的矩形就是我們的 DNA 架構(gòu),它會不斷地從處理中讀取配置信息,隨后會根據(jù)需求從片外的 DRAM 里讀取數(shù)據(jù)和權(quán)重,在片上進(jìn)行神經(jīng)網(wǎng)絡(luò)的計算,在計算過程中因為片上存儲有限,它會將數(shù)據(jù)再寫出到片外的 DRAM,這個過程是不斷的迭代,就以圖中 1234 的次序進(jìn)行迭代,以完成整個神經(jīng)網(wǎng)絡(luò)一個計算,這是我們所說的逐層加速的一個策略。
我們在這里簡單地展示了 AlexNet 的網(wǎng)絡(luò)在 DNA 架構(gòu)上的一個調(diào)度結(jié)果。
圖上呈現(xiàn)的是神經(jīng)網(wǎng)絡(luò)的每一個層,這里其實既包括卷積層,也包括全連接層;采用了數(shù)據(jù)復(fù)用模式與卷積映射方法。從參數(shù)中我們可以看到,對 AlexNet 的不同的層,它有不同的調(diào)度結(jié)果,這其實也是符合我們預(yù)期的。
到目前為止,我們已經(jīng)講完了基本的計算模式和架構(gòu)設(shè)計,接下來我們就看一看一些實驗結(jié)果。
這是 DNA 架構(gòu)的實現(xiàn)結(jié)果圖,圖上每個模塊也標(biāo)出了對應(yīng)的區(qū)域,右邊是主要的一些參數(shù),我們使用的是 TSMC 65nm LP,面積是 4.0×4.0 平方毫米,片上的 Buffer 容量是 280KB,在 220MHz 的工作頻率下,控制性能達(dá)到了 204.8 GOPS,而平均的性能是 194.4 GOPS,平均功耗是 479mW,需要注意的是,這里的功耗指的只是架構(gòu)芯片設(shè)計的功耗;架構(gòu)內(nèi)部的數(shù)據(jù)寬度(Precision),它是 16 Bit 的定點寬度。
我們直接看一下結(jié)果。我們使用的是 AlexNet、VGG、GoogLeNet 與 ResNet 這四個非常經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),這兩個圖分別展示了總能耗降低及 PE 利用率提升的情況:
片上緩存訪問的降低達(dá)到 1.4 到 2.2 倍,主要是與 Input Reuse、Output Reuse 與 Weight Reuse 來相比。
片外 DRAM 訪問降低了 7.6 到 11.4 倍;
總能耗的降低達(dá)到了 5.9 到 8.4 倍,這是一個比較大的一個提升,
計算資源利用率平均提升了 3.4 倍。而平均的利用率是達(dá)到 93%,這是非常高的一個值。
除了方法上的比較,我們還和目前頂尖的這些工作進(jìn)行了一些比較,這主要和英偉達(dá)的 K40,還有 FPGA'15、ISSCC'16 等非常經(jīng)典的神經(jīng)網(wǎng)絡(luò)架構(gòu)的文章進(jìn)行一些比較,具體的話不進(jìn)行過多展開。
這張表展現(xiàn)的是 AlexNet 上的一些具體分析結(jié)果,大家主要看一些參數(shù)。
第一個是計算資源利用率,我們評估了一下,在 FPGA'15、ISSCC'16 的工作上,計算資源利用率大約只有 68%,而用 DNA 架構(gòu),可以獲得 88% 的一個計算資源利用率,達(dá)到 1.3 倍的提升,還是個比較大的一個提升。
另外值得提的一點是,我們的能效是 FPGA'15 的 44.6 倍,是 ISSCC'16 的 1.8 倍。大家看名字也能知道,前者是在 FPGA 上實現(xiàn)的,而后者是在 ASIC 上實現(xiàn)的。
特別強調(diào)一點,我們這里比較的能效是系統(tǒng)能效。大家通常喜歡比較的是純芯片的內(nèi)部能效,不考慮片外存儲,其實并不是特別公平。
我們在評估芯片本身的能耗以外,還評估了片外 DRAM 的能耗,綜合起來我們稱之為系統(tǒng)能效,我們認(rèn)為這樣的比較是相對合理的。在這種比較下,我們獲得的能效提升也是非常好的。
最后,我們與更多的一些工作進(jìn)行比較。這一張表格里有展現(xiàn)出來,我們直接看結(jié)論。
我們的 DNA 架構(gòu),它的系統(tǒng)級能效比 CPU 提高了三個數(shù)量級,比 GPU 高兩個數(shù)量級,比 FPGA 高一個數(shù)量級,基本上達(dá)到我們的設(shè)計需求。
基于 DNA 架構(gòu),我們完成了一款 Thinker 芯片,這是一款可重構(gòu)的神經(jīng)網(wǎng)絡(luò)計算芯片。左邊是芯片的照片,右邊是我們搭的芯片 demo 演示圖,相關(guān)的成果已經(jīng)發(fā)表了數(shù)篇的頂級會議文章和權(quán)威期刊文章。
值得一提的是,我們在今年 ISSCC(該領(lǐng)域的頂級會議)上作了 poster 的展示。
此外,這款芯片作為清華的杰出的代表性工作,參加了 2016 年的全國雙創(chuàng)周展覽,獲得李克強總理的高度贊許。李總理表示,希望 Thinker 芯片盡快拓展應(yīng)用領(lǐng)域,實現(xiàn)規(guī)?;a(chǎn),實現(xiàn)芯片行業(yè)的自主創(chuàng)新。這是一個非常高的評價,我們會繼續(xù)努力,實現(xiàn)總理對我們的期望。
首先回到最開始提出的三個問題,我們對這三個問題都做了非常好的解決。
好的計算模式是怎么樣的?
首先它需要具備一個混合的數(shù)據(jù)復(fù)用模式,另外還需要一個并行的卷積映射方法降低總能耗,以提升計算資源利用率。
為了支持這樣的計算模式,架構(gòu)應(yīng)該怎么設(shè)計?
我們設(shè)計了一款可重構(gòu)的神經(jīng)網(wǎng)絡(luò)計算架構(gòu) DNA,它具有可重復(fù)的數(shù)據(jù)傳輸通路和計算引擎。
我們對針對計算模式做了一個很好的架構(gòu)設(shè)計,相比 CPU、GPU 和 FPGA 都有多個數(shù)量級的系統(tǒng)級能效提升。
已經(jīng)實現(xiàn)的架構(gòu),針對具體算法和應(yīng)用需求,如何配置成最優(yōu)的計算模式?
我們設(shè)計了一個基于網(wǎng)絡(luò)層的調(diào)度框架,配合架構(gòu)的使用,將調(diào)度問題轉(zhuǎn)化成一個優(yōu)化問題。這樣一來,針對任意的網(wǎng)絡(luò),其他的架構(gòu)也可以使用我們的調(diào)度框架,將調(diào)度問題轉(zhuǎn)換成優(yōu)化問題,配置成用戶想要的最優(yōu)計算模式。
這些所有的相關(guān)成果已經(jīng)發(fā)表在今年的 IEEE Transactions on Very Large Scale Integration System(TVLSI)上。
最后我們對現(xiàn)有的優(yōu)化技術(shù)做一些思考。
最開始我們在分析的時候提出了兩個主要公式,分別對能耗和性能進(jìn)行評估。這兩個公式其實是一個非常好的一個描述,或者說建模的分析方法。
我們也對近幾年出現(xiàn)在頂級會議和權(quán)威期刊上,針對神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)所使用的硬件優(yōu)化技術(shù)以及算法優(yōu)化技術(shù)進(jìn)行了整理。
計算模式優(yōu)化
第一類就是其實是和我們這份工作很相關(guān)的,就是計算模式方面的優(yōu)化。它主要優(yōu)化的是什么?它通過降低訪存次數(shù)來以及提高計算資源的利用率來實現(xiàn)能效、能耗和性能的優(yōu)化。
模型壓縮、降低數(shù)據(jù)精度及二值化
這些技術(shù)主要能夠降低單位 DRAM 和 Buffer 訪問的能耗以及單位計算的能耗。
非易失存儲器
第三類是在學(xué)術(shù)界非常流行的非易失存儲器,簡稱 NVRAM,將這種新型的存儲器應(yīng)用到我們的架構(gòu)設(shè)計當(dāng)中。NVRAM 具有一個非易失的特點,然后它的通常它的功耗是很低的,可以降低單位存儲訪問的能耗;有的工作,比如說使用 NVRAM 進(jìn)行乘加計算陣列的構(gòu)建,甚至可以降低單位計算能耗。
稀疏化
無論是算法還是硬件,稀疏化是大家目前都非常關(guān)注的一個特點。不管是數(shù)據(jù)還是權(quán)重,神經(jīng)網(wǎng)絡(luò)其實有大量的零以及接近零的數(shù)值,我們通過人為的一些控制,使得數(shù)據(jù)里面出現(xiàn)更多的零,這樣我們可以減少從存儲器中訪問數(shù)據(jù)的次數(shù),甚至可以降低操作數(shù),因為如果是零的話,我可以不做計算,因為零乘以任何數(shù)都是零。
神經(jīng)網(wǎng)絡(luò)的基本計算就是零,所以稀疏化的好處就是可以降低訪問次數(shù)和操作次數(shù),對于能效的好處是非常明顯的。
動態(tài)電壓頻率調(diào)節(jié)
動態(tài)電壓頻率調(diào)節(jié)簡稱 DVFS,它是一個非常經(jīng)典的、大家很常用的電路技術(shù)。我們可以通過降低電壓和頻率,來降低單位訪存和計算能耗。如果我希望獲得很高的性能,我可以通過提升電壓以提升頻率,來獲得更好的性能。
我們可以發(fā)現(xiàn),目前現(xiàn)有的這些優(yōu)化技術(shù),其實都對應(yīng)我們對性能或者能效的設(shè)計或優(yōu)化的需求。
通過對現(xiàn)有這些技術(shù)的分析,也可以啟發(fā)我們所做的事情。比如說,我們?nèi)绻胗眯碌募夹g(shù),可以回顧一下這兩個公式,是否真的有效,是否解決了關(guān)鍵的問題?這其實是我很想分享給大家的觀點。
這里有我的一些聯(lián)系方式,包括個人主頁、知乎專欄,電子郵箱等,歡迎大家與我聯(lián)系。
我在維護(hù)的 GitHub 項目名為「Neural Networks on Silicon」,因為我們領(lǐng)域近幾年呈現(xiàn)爆發(fā)式的發(fā)展,有大量新的工作出現(xiàn),我在 GitHub 上做了一個小小的項目,整理了一下近兩年出現(xiàn)在這個領(lǐng)域頂級會議上的一些論文,也會對部分有意思的工作做一些評論。大家有興趣的話可以看一看。其實這也是一個蠻好的整理,但因為現(xiàn)在的工作實在太多了,大家也可以幫助我一起整理。
這頁 PPT 上呈現(xiàn)了剛剛涉及到的一些重要參考文獻(xiàn)。
好,謝謝大家,現(xiàn)在進(jìn)入提問環(huán)節(jié)。
1. 你們的工作和國內(nèi)外神經(jīng)形態(tài)芯片相比(非加速器),有哪些優(yōu)勢?
我簡單介紹一下,我們的神經(jīng)網(wǎng)絡(luò)硬件芯片這一塊主要有兩個流派,一塊是神經(jīng)網(wǎng)絡(luò)加速器范疇,另外一個是神經(jīng)形態(tài)芯片,英文叫做 neuromorphic chip. 而我們的工作屬于神經(jīng)網(wǎng)絡(luò)加速器的范疇,而題主提到的神經(jīng)形態(tài)芯片屬于另外一類芯片,以 IBM 的 TrueNorth 為代表。那么二者的主要區(qū)別是什么?
它們主要是算法原型不一樣。前者或者說我們的工作主要針對的是人工神經(jīng)網(wǎng)絡(luò),特別是強調(diào)就是當(dāng)前非常流行的,以深度學(xué)習(xí)為代表的神經(jīng)網(wǎng)絡(luò),而后者的算法模型是我們稱之為叫脈沖神經(jīng)網(wǎng)絡(luò),英文叫做 spiking neural network。
在脈沖神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)里面,數(shù)據(jù)以脈沖信號的形式進(jìn)行信號信息的傳輸,這樣一種網(wǎng)絡(luò),或者說這樣的計算方法,其實更接近我們最開始提到的生物上的什么樣的模型,
首先,二者因為目標(biāo)算法不一樣,所以不好直接比較性能和功耗,如果你看到一些直接比較功耗的工作話,我覺得并不是特別公平,因為連目標(biāo)算法都不一樣,設(shè)計的目的也不一樣。我們做科研非常講究公平比較,為了更公平的比較,其實硬件層面其實并不是很好的一個比較方式,比如從算法層面來比較深入學(xué)習(xí)和脈沖神經(jīng)網(wǎng)絡(luò)。當(dāng)前的主流觀點是前者的精度更高(識別人臉),而后者因為更具備生物上的一些特點,在能效上更有優(yōu)勢。
我個人的觀點是:就目前而言,深度學(xué)習(xí)幾乎統(tǒng)治了模式識別的各個應(yīng)用領(lǐng)域,是當(dāng)下更好的一種選擇,但是科學(xué)是螺旋式發(fā)展的,深度學(xué)習(xí)不可能永遠(yuǎn)地統(tǒng)治下去,我覺得也應(yīng)該不會是人工智能的最終形態(tài)。
脈沖神經(jīng)網(wǎng)絡(luò),其實代表的是科學(xué)探索的一個方向,但我覺得也并不是唯一的方向。如果關(guān)注人工智能這塊的話,我們其實會看到有很多其他的方向也在展開,比如說量子計算。
人工智能的最終形態(tài)并不一定是制造一個人的大腦,或者人腦。關(guān)鍵在于是否能夠解決問題,比如說我們要識別人臉,什么樣的算法才是好的算法,那么怎樣的算法才能解決問題,這才是關(guān)鍵。而它具體的形態(tài)并不是我們特別關(guān)心的,這里有個比較恰當(dāng)?shù)睦臃窒斫o大家,好比人要飛翔,其實并不需要有一個鳥一樣的心態(tài),歷史上已經(jīng)證明過,很多人制造了翅膀也飛不上去,其實我們只要造一架飛機就夠了,甚至我們還能飛上天空甚至飛出銀河系。我們不在乎形態(tài)是怎樣,關(guān)鍵是要能夠解決問題。
2. 你們在第二代架構(gòu)在設(shè)計上有哪些構(gòu)想?
這位同學(xué)應(yīng)該是看了我知乎專欄上的一些文章。其實剛剛有提到,現(xiàn)在有一些比較大家常用的一些技術(shù),就像稀疏化等,其實在我們的二代架構(gòu)設(shè)計當(dāng)中已經(jīng)有一些考慮?;旧喜荒苷f有多大創(chuàng)新,但我們都會考慮進(jìn)來。
這是我們現(xiàn)在在做的一些工作,主要想解決大家真正在用神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)的時候會遇到的一些實際的問題,如果有新的成果發(fā)表出來,也會及時地分享給大家。
3. 芯片只針對推斷進(jìn)行優(yōu)化嗎?推斷其實就是前向計算的過程,沒有包括訓(xùn)練的過程嗎?
在第一代神經(jīng)網(wǎng)絡(luò)芯片 Thinker 上,我們主要只針對正向計算做了優(yōu)化,如果大家對訓(xùn)練過程比較了解的話,其實訓(xùn)練的過程當(dāng)中有大量的正向計算的過程,當(dāng)然它還包含了一個反向的誤差傳播的過程,在我們第一代芯片當(dāng)中沒有考慮誤差傳播的過程,我們已經(jīng)在做一些相關(guān)的工作,如果做出來之后會及時地和大家分享一下我們的一些想法。
4. 如何看待「芯片+人工智能」這樣一種模式?
我簡單講講吧,大家從新聞上已經(jīng)能看到很多報道,說人工智能時代到來了,其實人工智能或者這個概念,我覺得更多是媒體在為了宣傳的方便,所以靠一個很好的帽子,也更方便大家理解。
其實我們剛才也提到,大家經(jīng)常說到人工智能,其實它背后有更多的內(nèi)容,比如深度學(xué)習(xí)、機器學(xué)習(xí)等,深度學(xué)習(xí)本質(zhì)上就是神經(jīng)網(wǎng)絡(luò),只是經(jīng)過很多年的擴(kuò)展之后或者說發(fā)展之后,成為現(xiàn)在的樣子。
那么人工智能硬件或者說芯片,簡單來說叫做智能硬件。它在未來就是一定會代替人做很多事情,這是未來的一個發(fā)展趨勢。隨著生活智能化,未來的智能硬件會越來越多,會代替人做很多事情。比方工廠里使用一些機械臂,或者說一些生產(chǎn)線上的工具,可以代替人做體力勞動。
智能硬件在未來,肯定會代替人去做一些稍微低級點的智力勞動。人的偉大,其實是在于創(chuàng)造工具、使用工具,我們會制造越來越多的智能工具,替代我們做很多我們不想做的事情或者說反復(fù)的事情,讓我們用有限的精力去做更多的、更高層次的一些智能任務(wù)吧。所以我覺得「人工智能+芯片」或者說智能硬件的一個模式在未來肯定是會一直發(fā)展下去的,是不會變的。
5. 如何看待 GPU、FPGA、ASIC 的未來?
我談一點自己的見解,GPU、FPGA、ASIC 是當(dāng)下智能硬件,或者說人工智能芯片的三個極點。GPU 可以認(rèn)為是偏向通用的一類硬件,然后 ASIC 是相對專用的一種硬件,而 ASIC 是介于二者之間的一種硬件,它們各有千秋,然后各有所長。當(dāng)前 GPU 廣泛地應(yīng)用于訓(xùn)練過程或者說大量數(shù)據(jù)的訓(xùn)練。FPGA 可以根據(jù)應(yīng)用的需求非常適應(yīng)性的去改變配置,把不同的算法燒進(jìn)去,完成不同的功能。
狹義上的 ASIC,可以具體的某一種應(yīng)用,或者說比方說做一款芯片來專門實現(xiàn)人臉識別。大家可以看到,我們剛剛介紹的基于 DNA 架構(gòu)的 Thinker 芯片,其實是一種可重構(gòu)的 ASIC,這種結(jié)構(gòu)叫做 CGRA(Coarse Grained Reconfigurable Architecture),它其實有點像 FPGA,它可以重構(gòu)配置來支持不同的算法。我們可以支持任意網(wǎng)絡(luò)規(guī)模、任意參數(shù)的神經(jīng)網(wǎng)絡(luò),它的好處是我們采用大量粗粒度的 PE 形式的計算資源,使之能夠快速地、高效地、在線地配置計算資源的形態(tài)來支持不同算法。
其實我個人覺得,針對未來可能會發(fā)展成一種融合的形態(tài),不知道大家有沒有注意到,英偉達(dá)最新發(fā)布的 V100 其實是有 Tensor Core 的,因此我覺得未來的通用計算可以處理很多復(fù)雜的控制或者邏輯等。
而一些很關(guān)鍵的計算,比方說神經(jīng)網(wǎng)絡(luò)里面的神經(jīng)元計算,或者說一些核心的計算,會做成一些專用的 ASIC、可配置的核,放入通用的一個處理器如 CPU 和 GPU,甚至是 FPGA 里面。其實這就是融合的一種思想。
此外 CPU 通常用于訓(xùn)練一個過程,有很多實際的應(yīng)用場景,或者說我們剛才提到云端與移動端,移動端的話有大量的低功耗的需求,此時用 CPU 平臺就顯得不是那么合適,所以說其實我外部的控制邏輯可以稍微簡單一點,像我們用到的我們設(shè)計的這款可重構(gòu)的芯片就可以直接運用到其中。
對于神經(jīng)網(wǎng)絡(luò)的應(yīng)用來說,它其實是有一定通用性的,所以在移動端,它其實有很大的潛力,作為一個處理的核心來做神經(jīng)網(wǎng)絡(luò)計算,來實現(xiàn)如圖像識別或者語音識別的任務(wù)。
今天的公開課就到此結(jié)束了,非常感謝大家來收聽和觀看雷鋒網(wǎng)的硬創(chuàng)公開課。我和我們組也會繼續(xù)做神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)的一些研究,剛剛跟大家分享的也是我們過去一些研究的成果和思考。我們現(xiàn)在也在做一些非常有意思的研究,也歡迎大家跟我們交流,如果有一些新的成果,我也會及時和大家分享,今天的公開課就到此結(jié)束,謝謝大家,再見。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。