論Kirin 970的人工智能NPU的工作原理
日前,美國(guó)知名科技媒體Android Authority主筆Gary Sims對(duì)麒麟970進(jìn)行了深度解讀,講述了麒麟970的人工智能NPU的工作原理,對(duì)芯片設(shè)計(jì)的深遠(yuǎn)影響,以及為用戶(hù)使用場(chǎng)景帶來(lái)的跨越式體驗(yàn)。
“神經(jīng)網(wǎng)絡(luò)(Neural Networks)”和“機(jī)器學(xué)習(xí)(Machine Learning)”是近兩年移動(dòng)處理器領(lǐng)域最流行的兩個(gè)詞。華為麒麟970的NPU(神經(jīng)網(wǎng)絡(luò)處理器)、Google Pixel 2內(nèi)置的IPU(圖像處理器),以及蘋(píng)果A11 Bionic,都是實(shí)現(xiàn)上述功能特性的專(zhuān)用硬件解決方案。
既然華為、Google和蘋(píng)果都在都在探索神經(jīng)引擎處理器,你可能以為機(jī)器學(xué)習(xí)需要特定的硬件。其實(shí)不然,神經(jīng)網(wǎng)絡(luò)可以在任何形式的處理器上運(yùn)行,從微處理器到CPU、GPU甚至是DSP。
所以,問(wèn)題的根本不在于處理器是否能利用神經(jīng)神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí),而在于它到底有多快,能提升多少效率。
如果時(shí)間倒退回30年前,當(dāng)年的桌面處理器是沒(méi)有的FPU(浮點(diǎn)運(yùn)算單元)芯片的,在486之后,Intel把FPU集成到了CPU內(nèi)部,浮點(diǎn)運(yùn)算性能大幅提升。而在很多實(shí)例計(jì)算中,全都是浮點(diǎn)數(shù)運(yùn)算。這樣以來(lái),有FPU和沒(méi)有FPU,運(yùn)算效率天差之別。
而如今,移動(dòng)處理器中的NPU也是類(lèi)似的情況。你可能覺(jué)得我們并不需要NPU,就能使用神經(jīng)網(wǎng)絡(luò),但實(shí)時(shí)情況是,華為正在用事實(shí)案例證明,當(dāng)遇到實(shí)時(shí)處理運(yùn)算的情況,NPU是必須的。
簡(jiǎn)單來(lái)說(shuō),“神經(jīng)網(wǎng)絡(luò)”可以理解為“機(jī)器學(xué)習(xí)”中“教”一臺(tái)機(jī)器區(qū)別分辨不同“事物”的一系列技術(shù)中的一種。上述“事物”可以是一張照片、一個(gè)單詞甚至是一種動(dòng)物的聲音,諸如此類(lèi)。
“神經(jīng)網(wǎng)絡(luò)”由很多“神經(jīng)元”組成,這些“神經(jīng)元”可以接收輸入信號(hào),然后通過(guò)網(wǎng)絡(luò)再向外傳播信號(hào),這取決于輸入的強(qiáng)度和自身閾值。
舉個(gè)簡(jiǎn)單的例子,神經(jīng)網(wǎng)絡(luò)正在監(jiān)測(cè)一組燈其中一個(gè)的開(kāi)關(guān),但在網(wǎng)絡(luò)中,這些燈的狀態(tài)只能0或者1來(lái)表達(dá),但不同的燈可能會(huì)出現(xiàn)一樣的開(kāi)關(guān)狀態(tài)。
那么問(wèn)題來(lái)了,神經(jīng)網(wǎng)絡(luò)怎么知道是該輸出0還是該輸出1呢?沒(méi)有規(guī)則或者程序能告訴神經(jīng)網(wǎng)絡(luò),輸出我們想得到的邏輯答案。
唯一的方面就是對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。大量的“樣本”和預(yù)期結(jié)果一起被注入到神經(jīng)網(wǎng)絡(luò)中,各種各樣的閾值反復(fù)微調(diào),不斷產(chǎn)生接近預(yù)期的結(jié)果。這個(gè)階段可以稱(chēng)為“訓(xùn)練階段”。
這聽(tīng)起來(lái)很簡(jiǎn)單,但實(shí)際上相當(dāng)復(fù)雜,尤其是遇到語(yǔ)言、圖像這種復(fù)雜樣本的時(shí)候。一旦訓(xùn)練達(dá)成,神經(jīng)網(wǎng)絡(luò)會(huì)自動(dòng)學(xué)會(huì)輸出預(yù)期結(jié)果,即便輸入的“樣本”之前從來(lái)沒(méi)有見(jiàn)過(guò)。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練成功后,本質(zhì)上就成了一種靜態(tài)神經(jīng)網(wǎng)絡(luò)模型,它就能應(yīng)用在數(shù)以百萬(wàn)計(jì)的設(shè)備上用于推理,在CPU、GPU甚至是DSP上運(yùn)行。這個(gè)階段可以稱(chēng)為“推理階段”。
Gary Sims指出,“推理階段”的難度要低于“訓(xùn)練階段”,而這正是NPU發(fā)揮專(zhuān)長(zhǎng)的地方。
所以,華為麒麟970最大的不同是,專(zhuān)門(mén)設(shè)置了NPU硬件芯片,它在處理靜態(tài)神經(jīng)網(wǎng)絡(luò)模型方面有得天獨(dú)厚的優(yōu)勢(shì),不僅更快,還更有效率。事實(shí)上,NPU甚至能以17-33fps實(shí)時(shí)處理智能手機(jī)攝像頭拍攝的“直播”視頻。
從架構(gòu)來(lái)看,麒麟970像是一臺(tái)“發(fā)電站”,內(nèi)置8顆CPU和12顆GPU,另有移動(dòng)網(wǎng)絡(luò)連接以及多媒體處理模塊,晶體管規(guī)模達(dá)到了史無(wú)前例的55億顆。據(jù)華為透露,NPU大約內(nèi)含1.5億晶體管,不到整個(gè)芯片的3%。
這對(duì)于一款移動(dòng)處理器來(lái)說(shuō)尤為重要。首先,NPU的加入不會(huì)明顯增大處理器的尺寸、成本,這就意味著,NPU不僅能放入旗艦手機(jī),一些中端手機(jī)也能適用。在未來(lái)5年,NPU將對(duì)Soc設(shè)計(jì)產(chǎn)生深遠(yuǎn)影響。
其次是功耗和效率。NPU并非“電老虎”會(huì)犧牲手機(jī)的續(xù)航,相反它能高效的幫CPU承擔(dān)大量推理運(yùn)算的任務(wù),反而能節(jié)省不少功耗。
在最后的總結(jié)中,Gary Sims表示,如果華為能吸引更多第三方App開(kāi)發(fā)者使用NPU,其前景不可限量。想象一下,當(dāng)App在使用圖像、聲音、語(yǔ)音識(shí)別的時(shí)候,全部都能本地處理,不再需要網(wǎng)絡(luò)連接或者云服務(wù),App的使用體驗(yàn)將大大提升和加強(qiáng)。