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

適用于電機(jī)控制的電流濾波方法
NVIDIA擴(kuò)展適用于AI工廠數(shù)字孿生的Omniverse Blueprint
TPS6521825 適用于 NXP i.MX 8M mini 的電源管理 IC數(shù)據(jù)手冊

TPS6521855 適用于 TI AM64x 的電源管理 IC (PMIC)數(shù)據(jù)手冊

如何綜合性測試一款電源芯片?——以ASP3605芯片為例
圖形顯示控制芯片RA6809可適用于哪些應(yīng)用場景
開源鴻蒙版AI終端主板AIoT-3588A彩頁
行業(yè)集結(jié):共同定制 RK3566 集成 AI 眼鏡的前沿 AR 方案
【AI開發(fā)板】正點(diǎn)原子K230D BOX開發(fā)板來了!一款性能強(qiáng)悍且小巧便攜的AI開發(fā)板!
NVIDIA推出適用于網(wǎng)絡(luò)安全的NIM Blueprint
選擇適用于汽車應(yīng)用的基準(zhǔn)電壓

一款適用于光伏應(yīng)用的半橋評估板設(shè)計(jì)

評論