概要:2017年,人工智能最火的風(fēng)口一定是AI芯片。
2017年,人工智能最火的風(fēng)口一定是AI芯片。
AI芯片的出現(xiàn),與深度學(xué)習(xí)技術(shù)的成熟及應(yīng)用密不可分。深度學(xué)習(xí)的過程可以簡化理解為利用大量標(biāo)注的數(shù)據(jù)進(jìn)行訓(xùn)練,訓(xùn)練出一個行之有效的模型,再將這一模型運(yùn)用于新數(shù)據(jù)的推斷。
這個耳熟能詳?shù)谋?a href="http://www.1cnz.cn/v/tag/2562/" target="_blank">算法是建立在多層大規(guī)模神經(jīng)網(wǎng)絡(luò)之上的,后者本質(zhì)上是包含了矩陣乘積和卷積操作的大運(yùn)算量函數(shù)。往往需要先定義一個包含回歸問題的方差、分類時的交叉熵的代價函數(shù),再數(shù)據(jù)分批傳遞進(jìn)網(wǎng)絡(luò),根據(jù)參數(shù)求導(dǎo)出代價函數(shù)值,從而更新整個網(wǎng)絡(luò)模型。這通常意味著至少幾百萬次的相乘處理,計算量巨大。通俗來說,包含了數(shù)百萬次A*B+C的計算,算力消耗巨大。
為解決這一問題,AI芯片應(yīng)運(yùn)而生。2017年開始,圍繞AI芯片,半導(dǎo)體行業(yè),戰(zhàn)事升級,賽場上新老玩家暗潮涌動,連橫合眾,大有“AI芯片太多,設(shè)備都不夠用了”之勢。
時間進(jìn)入2018年,備受關(guān)注的大小公司都將正式推出自研AI芯片。這些芯片也都被業(yè)界寄予厚望,是否能解決或者部分解決終端計算難題?什么樣的芯片才能夠真正適應(yīng)終端智能的需求?
這些都是我們十分好奇且關(guān)注的問題。于是也與一些創(chuàng)業(yè)者進(jìn)行了交流。本文即是其中的一篇,來自于與探境科技CEO魯勇的訪談。目前探境科技正研發(fā)適用于終端的AI芯片,在創(chuàng)業(yè)前魯勇曾在芯片廠商Marvell任高管,從事過存儲芯片的相關(guān)工作,而存儲正是計算之外所有芯片另一核心。基于過往的經(jīng)歷、經(jīng)驗與觀察,魯勇認(rèn)為,做適用于終端的AI芯片,除了要在計算方面提升,存儲優(yōu)化同樣至關(guān)重要。
以下為正文,來自36氪對魯勇的訪談內(nèi)容,36氪基于訪談內(nèi)容對其觀點(diǎn)進(jìn)行了整理。
一
AI算法在芯片實(shí)現(xiàn)時遇到的核心問題不是計算資源而是存儲問題,強(qiáng)如GPU提供眾多的計算資源,而實(shí)際計算能力與計算資源大為降低。
概括來說,存儲問題分為兩個部分,一個是帶寬問題,一個是功耗問題,這兩個問題的解決其實(shí)也是耦合在一起的。
具體來說,深度學(xué)習(xí)算法使用大量存儲資源,即包括靜態(tài)模型參數(shù),也包括網(wǎng)絡(luò)層之間的動態(tài)數(shù)據(jù)。對于靜態(tài)模型參數(shù)權(quán)重,動輒幾十兆上百兆樣本數(shù)量,無法在片上SRAM保存,因此需要存入外部DRAM。DRAM與AI計算芯片間帶寬有限,如果芯片上計算資源很大,但受存儲帶寬的瓶頸限制,實(shí)際計算力大為下降。
打比方來說,負(fù)責(zé)存儲的DRAM和與負(fù)責(zé)計算的芯片就像是位于河兩岸的倉庫,整個運(yùn)算的過程可以類比從存儲的倉庫搬取數(shù)據(jù)、搬運(yùn)過橋,將數(shù)據(jù)搬入計算的單元進(jìn)行處理,并高速循環(huán)往復(fù)。而當(dāng)前的AI芯片技術(shù)重點(diǎn)提升將數(shù)據(jù)搬入計算單元后的處理速度,但因為搬出數(shù)據(jù)、過橋的過程基本未發(fā)送變化,因此整體的效率提升還相對有限。
與之對應(yīng)的方法即是克服存儲帶寬的手段:一是減少數(shù)據(jù)量,降低所需數(shù)據(jù)帶寬,就是說想辦法只要從倉庫搬出少量數(shù)據(jù),就可以達(dá)到同樣的效果;二是更科學(xué)的調(diào)度數(shù)據(jù)使用,提升調(diào)度的效率。
(1)減少數(shù)據(jù)容量
如果數(shù)據(jù)量降低了,這將總體上減少對DRAM的訪問,在DRAM物理帶寬保持不變的前提下,降低了DRAM的依賴性,提高了整體性能,同時減少DRAM訪問也將大幅減少系統(tǒng)功耗開銷。因此首先需要解決的問題是減少靜態(tài)參數(shù)權(quán)重的大小。通常的解決辦法包括參數(shù)定點(diǎn)化,將每個32bit浮點(diǎn)數(shù)減少為16bit以下的定點(diǎn)數(shù),至少能降低50%甚至75%的存儲容量,也同樣幅度的降低了存儲帶寬的需求。實(shí)踐證明16bit定點(diǎn)化可以采用線性量化的方式,而16bit以下定點(diǎn)化根據(jù)模型的不同,有些需要采用非線性量化才可以達(dá)到維持模型性能的目的。
目前主要有模型剪枝、設(shè)計適于終端設(shè)備的簡化網(wǎng)絡(luò)兩種實(shí)現(xiàn)方式。模型剪枝作為進(jìn)一步降低模型容量和存儲帶寬的方式,是基于神經(jīng)網(wǎng)絡(luò)模型存在大量冗余信息的基礎(chǔ),而另一種從源頭開始重新設(shè)計適于終端設(shè)備的簡化網(wǎng)絡(luò)的方式也在逐漸興起,從同樣規(guī)模的網(wǎng)絡(luò)性能來看,新設(shè)計的網(wǎng)絡(luò)可能比舊網(wǎng)絡(luò)通過剪枝再訓(xùn)練的方式更為簡單快捷,性能也更好。
(2)更科學(xué)的調(diào)度數(shù)據(jù)使用
深度學(xué)習(xí)的計算大量使用乘累加,即完成AXB+C的工作,這種乘累加單元(MAC)每次運(yùn)算需要三個輸入,完成一個輸出。參與運(yùn)算的數(shù)據(jù)包括事先準(zhǔn)備好的權(quán)重參數(shù)和網(wǎng)絡(luò)層產(chǎn)生的中間數(shù)據(jù)。每個乘累加完成后的輸出通常也會作為下一次運(yùn)算的輸入,因此如何調(diào)度這些數(shù)據(jù)成為關(guān)鍵。
功耗角度來說,從DRAM獲取數(shù)據(jù)所消耗的功耗最大,從SRAM中獲取數(shù)據(jù)其次,從本地寄存器中獲取數(shù)據(jù)消耗功耗最低,但從成本角度考慮剛好相反,因此這三個不同層次的存儲器的使用非常關(guān)鍵,我們希望盡可能減少DRAM的訪問,最理想的結(jié)果是僅從DRAM中讀取一次事先存好的模型參數(shù),而不依賴DRAM做任何其他工作。
從宏觀上看,整個深度學(xué)習(xí)運(yùn)算計算一次,進(jìn)入MAC的總數(shù)據(jù)量遠(yuǎn)大于靜態(tài)數(shù)據(jù)的容量,因為無論是模型參數(shù)還是中間數(shù)據(jù)都多次被重復(fù)使用,因此實(shí)際所需的數(shù)據(jù)帶寬非常大,并且當(dāng)所有這些數(shù)據(jù)都僅通過DRAM被緩存使用時,其功耗開銷也是驚人的,因此充分利用各級緩存的特性非常重要,設(shè)計一個合理的數(shù)據(jù)流,將多次被重復(fù)使用的數(shù)據(jù)放在離計算資源較近的地方,少量讀取的數(shù)據(jù)放在DRAM中,將提高計算性能,降低系統(tǒng)功耗。
二
那么問題來了,如何才能設(shè)計一款真正適用于終端的AI芯片。
簡單的設(shè)計一個卷積加速器并不能帶來深度學(xué)習(xí)計算性能上的提高,合格的計算架構(gòu)需要結(jié)合對存儲問題的分析來設(shè)計,不僅要考慮計算架構(gòu),也要考慮存儲的數(shù)據(jù)流控制,因此深度學(xué)習(xí)的計算特點(diǎn)并非是一個簡單粗暴的并行計算問題。
首先還是要考慮浮點(diǎn)和定點(diǎn)計算的問題,8 位的整數(shù)乘法比IEEE 754標(biāo)準(zhǔn)下16位浮點(diǎn)乘法降低 6 倍的能耗,占用的芯片面積也少 6 倍;而整數(shù)加法的差異是13倍的能耗與38倍的面積,因此終端AI芯片采用定點(diǎn)計算將獲得巨大收益。當(dāng)定點(diǎn)成為設(shè)計目標(biāo)的時候,要充分考慮軟硬件的結(jié)合,不同網(wǎng)絡(luò)對定點(diǎn)位數(shù)的影響程度是不一樣的,數(shù)據(jù)量化的具體方式也有差異,有線性量化也有非線性量化的方法,因此針對應(yīng)用場景結(jié)合軟件協(xié)同設(shè)計非常有必要。
其次深度學(xué)習(xí)不是簡單粗暴的并行計算但仍然有明顯的并行計算特征,因此考慮存儲問題后放入更多的計算資源會大幅提高計算性能。首先將最多被重復(fù)使用的數(shù)據(jù)放在接近計算資源的地方,這符合較為流行的In Memory Computing(存儲計算一體化)的思想,并且考慮到當(dāng)前工業(yè)水平,這更為實(shí)際,而通過重新設(shè)計包括計算單元的存儲單元或采用ReRAM等方式是未來的 發(fā)展方向。
第三要考慮到深度學(xué)習(xí)數(shù)據(jù)的另一重要特性,即數(shù)據(jù)稀疏化特性,也就是說在參與運(yùn)算的數(shù)據(jù)中有大量的零值數(shù)據(jù)存在,這些零值數(shù)據(jù)即可以在存儲中被壓縮存放,降低存儲容量和帶寬需求,也可以在計算中被進(jìn)一步調(diào)度,減少運(yùn)算壓力,提高運(yùn)算的有效性能。這些零值數(shù)據(jù)不僅存在于模型參數(shù)中,也大量存在于神經(jīng)網(wǎng)絡(luò)各層運(yùn)算的中間數(shù)據(jù)中,這兩方面都需要進(jìn)行考慮。稀疏數(shù)據(jù)在多核心并行計算中的調(diào)度是個復(fù)雜的問題,而不同網(wǎng)絡(luò)結(jié)構(gòu)也會帶來不同的影響,因此將軟硬件協(xié)同設(shè)計,動態(tài)調(diào)度的調(diào)度器是非常復(fù)雜的設(shè)計難點(diǎn)。
最后要考慮針對不同網(wǎng)絡(luò)的資源有效利用率問題,由于神經(jīng)網(wǎng)絡(luò)差異化較大,如果希望針對不同網(wǎng)絡(luò)都有較高的資源有效利用率,則需要在較細(xì)的顆粒度上進(jìn)行優(yōu)化,進(jìn)一步加深了數(shù)據(jù)流調(diào)度器的復(fù)雜度。
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423159 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100719 -
AI
+關(guān)注
關(guān)注
87文章
30728瀏覽量
268892 -
人工智能
+關(guān)注
關(guān)注
1791文章
47183瀏覽量
238266 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5500瀏覽量
121113
原文標(biāo)題:AI芯片之爭白熱化的當(dāng)下,如何設(shè)計一款真正適用于終端的AI芯片?
文章出處:【微信號:AItists,微信公眾號:人工智能學(xué)家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論