深入解讀“寒武紀”后,我們對Google TPU有了這些認識
由于Google并沒(méi)有公布TPU的設計,因此我們只能大概根據中科院目前的“寒武紀”神經(jīng)網(wǎng)絡(luò )芯片進(jìn)行推斷。
雷鋒網(wǎng)按:本文作者龔黎明,威盛電子高級芯片工程師。由于提及“寒武紀”芯片,雷鋒網(wǎng)特邀中國科學(xué)院計算技術(shù)研究所陳天石教授對本文做了修正把關(guān),以呈現更加完整專(zhuān)業(yè)的內容,特此感謝。
在Google I/O 2016的主題演講進(jìn)入尾聲時(shí),Google提到了一項他們這段時(shí)間在A(yíng)I和機器學(xué)習上取得的成果,一款叫做Tensor Processing Unit(張量處理單元)的處理器,簡(jiǎn)稱(chēng)TPU。
根據TPU團隊主要負責人介紹,TPU專(zhuān)為Google機器學(xué)習應用TensorFlow打造,能夠降低運算精度,在相同時(shí)間內處理更復雜、更強大的機器學(xué)習模型并將其更快地投入使用。Google數據中心早在一年前就開(kāi)始使用TPU,其性能把摩爾定律往前推進(jìn)到7年之后。之前打敗李世乭的AlphaGo就是采用了TPU做了運算加速。
根據Google所言,TPU只在特定應用中作為輔助使用,公司將繼續使用CPU和GPU。并且Google并沒(méi)有對外銷(xiāo)售TPU的打算。因此,TPU雖好,但僅限Google內部,而且即便使用TPU,也是用作輔助CPU和 GPU。
谷歌并沒(méi)有公布TPU是怎么設計的,因此似乎很難對其一探究竟。不過(guò),要知道谷歌的TPU并不是什么黑科技,只不過(guò)是正常的一款專(zhuān)用加速芯片。而且,這也不是世界上第一款用來(lái)做深度學(xué)習的專(zhuān)用芯片。IBM和我國中科院其實(shí)都有類(lèi)似成果。
IBM 在2014年研發(fā)出脈沖神經(jīng)網(wǎng)絡(luò )芯片TrueNorth,走的是“類(lèi)腦計算”路線(xiàn)。類(lèi)腦計算的假設是,相似的結構可能會(huì )出現相似的功能,所以假如用神經(jīng)電子元件制造與人腦神經(jīng)網(wǎng)絡(luò )相似的電子神經(jīng)網(wǎng)絡(luò ),是否可能實(shí)現人腦功能呢?這其實(shí)有點(diǎn)像人類(lèi)研究飛行器的過(guò)程。我們都知道鳥(niǎo)會(huì )飛是因為有翅膀,人沒(méi)有。所以假如給人也弄一對翅膀,人是不是也能飛?
早先人類(lèi)其實(shí)有這么一個(gè)探索過(guò)程。如今人類(lèi)要探索大腦,但是大腦何其復雜?IBM的這款芯片就是通過(guò)打造類(lèi)腦的芯片架構,來(lái)期望得到大腦同樣的功能,就算達不到,能模擬一下也很有意義。大意如此,當然實(shí)際上復雜多了。目前這款芯片理念很超前,還處于深入研究階段,算得上是黑科技。
今天要重點(diǎn)講的其實(shí)是中科院的這款“寒武紀”芯片。2016年3月,中國科學(xué)院計算技術(shù)研究所發(fā)布了全球首個(gè)能夠“深度學(xué)習”的“神經(jīng)網(wǎng)絡(luò )”處理器芯片,名為“寒武紀”。該課題組負責人之一、中科院計算所陳天石博士透露,這項成果將于今年內正式投入產(chǎn)業(yè)化。在不久的未來(lái),反欺詐的刷臉支付、圖片搜索等都將更加可靠、易用。下圖是“寒武紀”的芯片板卡。
之所以重點(diǎn)講,是因為Google的TPU芯片并沒(méi)有公開(kāi)設計細節,連是誰(shuí)代工的都沒(méi)有公開(kāi)。但是同樣作為深度學(xué)習的芯片,有理由相信中科院的“寒武紀”與Google的TPU在設計理念上是相同的。在講這個(gè)之前,先簡(jiǎn)單科普一下人工智能和深度學(xué)習。
1981年的諾貝爾醫學(xué)獎,頒發(fā)給了David Hubel和Torsten Wiesel,以及Roger Sperry。前兩位的主要貢獻是,發(fā)現了人的視覺(jué)系統的信息處理是分級的。如下圖所示:從原始信號攝入開(kāi)始(瞳孔攝入像素),接著(zhù)做初步處理(大腦皮層某些細胞發(fā)現邊緣和方向),然后抽象(大腦判定眼前物體的形狀,比如是橢圓形的),然后進(jìn)一步抽象(大腦進(jìn)一步判定該物體是張人臉),最后識別眼前的這個(gè)人。
而深度學(xué)習(Deep Learning),恰恰就是模仿人腦的機制來(lái)解釋數據。通過(guò)組合低層特征形成更加抽象的高層特征(或屬性類(lèi)別)。例如,在計算機視覺(jué)領(lǐng)域,深度學(xué)習算法從原始圖像去學(xué)習得到一個(gè)低層次表達,例如邊緣檢測器、小波濾波器等,然后在這些低層次表達的基礎上,通過(guò)線(xiàn)性或者非線(xiàn)性組合,來(lái)獲得一個(gè)高層次的表達。此外,不僅圖像存在這個(gè)規律,聲音也是類(lèi)似的。比如,研究人員從某個(gè)聲音庫中通過(guò)算法自動(dòng)發(fā)現了20種基本的聲音結構,其余的聲音都可以由這20種基本結構來(lái)合成!
對于深度學(xué)習來(lái)說(shuō),其思想就是堆疊多個(gè)層,上一層的輸出作為下一層的輸入。深度神經(jīng)網(wǎng)絡(luò )由一個(gè)輸入層,數個(gè)隱層,以及一個(gè)輸出層構成。每層有若干個(gè)神經(jīng)元,神經(jīng)元之間有連接權重。每個(gè)神經(jīng)元模擬人類(lèi)的神經(jīng)細胞,而結點(diǎn)之間的連接模擬神經(jīng)細胞之間的連接。
當然了,以上這些原理都不是重點(diǎn)。我們只需要明白深度神經(jīng)網(wǎng)絡(luò )模擬了大腦的神經(jīng)網(wǎng)絡(luò ),上圖的每個(gè)圈圈都類(lèi)似大腦的一個(gè)神經(jīng)元。通過(guò)采用專(zhuān)用芯片進(jìn)行神經(jīng)元的運算加速,相比于采用CPU這種通用運算器,可以大大提高神經(jīng)網(wǎng)絡(luò )的性能。根據“寒武紀”芯片的介紹,它可以一條指令完成多個(gè)神經(jīng)元的并行處理。據此推斷,Google的TPU很有可能也是這么設計的,也就是說(shuō),支持一條指令完成神經(jīng)元的多次計算。
“寒武紀”專(zhuān)用處理器還有配套的指令集,叫Cambricon。我們知道,指令集乃是一個(gè)處理器架構的核心。知道了一款處理器實(shí)現了哪些指令,其實(shí)也就知道了這款處理器適合做什么,也大概知道了這款處理器的硬件設計。
【雷鋒網(wǎng)注:有讀者認為寒武紀專(zhuān)用處理器配套的指令集叫DianNao,其實(shí)DianNao系列特指中科院計算所前期和國際合作者共同發(fā)表的學(xué)術(shù)論文提出的架構;而“寒武紀”特指寒武紀公司(中科院計算所的產(chǎn)業(yè)化公司)獨立開(kāi)發(fā)的商用芯片。寒武紀的正式英文名為“Cambricon”】
Cambricon指令集的特點(diǎn)是單指令可以做完一次向量或矩陣運算,因此假如我們知道了深度學(xué)習的具體算法,那么其實(shí)也就知道了每個(gè)神經(jīng)元可以規約為何種向量或矩陣運算,其實(shí)也就推斷出了Cambricon的指令集。以此類(lèi)推,如果我們知道了Google的深度學(xué)習算法,假設也是每條指令實(shí)現多個(gè)神經(jīng)元相關(guān)的向量或矩陣運算,那么其實(shí)也能推斷出TPU的指令集。這種假設應該是很有道理的,畢竟把一個(gè)神經(jīng)元的計算打包成一條指令,是非??茖W(xué)合理的專(zhuān)用加速器設計方案。
下圖是中科院計算所團隊成員作為第一作者與法國Inria、瑞士EPFL聯(lián)合發(fā)表于國際計算機架構年會(huì )(ISCA2015)的ShiDianNao在圖像處理中的應用,其中的紅色格柵方塊就是該芯片在系統中的位置。
圖中可以看到,整個(gè)系統連接了兩塊圖像傳感器,傳感器采集到的圖像通過(guò)Camera Serial Interfaces(CSI)接口連接到Video pipeline處理單元,進(jìn)行Bayer重建、白平衡、降噪、壓縮等等圖像處理。
而ShiDianNao則在該系統中進(jìn)行深度學(xué)習的模式識別,它內部實(shí)現了一個(gè)深度神經(jīng)網(wǎng)絡(luò ),經(jīng)訓練之后具有類(lèi)似人類(lèi)大腦一樣的識別能力,可以從圖像中識別出有一只貓,然后將識別出“貓”的信息通過(guò)GPIO/I2C接口輸出給主機。整個(gè)系統用一款微處理器做控制,協(xié)調各個(gè)部件的運行。整個(gè)系統的數據存儲,使用了256KB的SRAM,為了節省功耗,并提高性能,并沒(méi)有使用DRAM。
下圖給出了ShiDianNao處理器的深度神經(jīng)網(wǎng)絡(luò )的架構。根據文獻介紹,NBin是輸入神經(jīng)元的緩存,NBout是輸出神經(jīng)元的緩存,SB是突觸的緩存。核心部件是NFU(neural functional unit)單元,它負責實(shí)現一個(gè)神經(jīng)元的功能。ALU是數值運算單元,IB(decoder forinstructions)是指令譯碼器。
下圖是ShiDianNao處理器的布局版圖:
下圖是神經(jīng)元處理單元的核心部件NFU單元的結構。之前講過(guò),深度神經(jīng)網(wǎng)絡(luò )加速芯片的最大特點(diǎn)就是單指令可以完成多個(gè)神經(jīng)元的計算。因此神經(jīng)元計算單元的實(shí)現,就是這款加速芯片的核心。根據文獻介紹,每個(gè)NFU又是一個(gè)陣列,包含一堆PE單元。每個(gè)NFU單元實(shí)現了16bit x 16bit的定點(diǎn)整數乘法,相比于浮點(diǎn)乘法,這會(huì )損失一部分運算精度,但是這種損失可以忽略不計。
下圖進(jìn)一步給出了PE單元的結構,每個(gè)PE包含一個(gè)乘法器和一個(gè)加法器和比較器??梢詥未瓮瓿沙死奂舆\算或者累加運算或者一次比較運算。
由此,我們就自上而下的看完了整個(gè)ShiDianNao的架構設計。由于Google并沒(méi)有公布TPU的設計,中科院和寒武紀公司亦沒(méi)有公開(kāi)商用的寒武紀芯片的具體架構,因此我們只能大概根據中科院前些年與法國和瑞士的合作者在學(xué)術(shù)界公開(kāi)發(fā)表的ShiDianNao架構進(jìn)行推斷(我們假設寒武紀商用芯片和前些年的學(xué)術(shù)工作ShiDianNao在架構上有一脈相承之處,畢竟中科院計算所陳天石團隊的成員都是主要架構師或論文的第一作者)。
【雷鋒網(wǎng)注:DianNao系列架構和寒武紀在名稱(chēng)上已經(jīng)有明確的界限。DianNao系列特指前期中科院計算所會(huì )同國際同行共同提出的處理器架構,是面向學(xué)術(shù)界的。從商業(yè)角度出發(fā),寒武紀公司(中科院計算所下屬企業(yè))從未公開(kāi)過(guò)寒武紀商用芯片的具體架構?!?/p>
根據ShiDianNao架構的論文描述,結合之前的論述,我們可以大致得出以下猜測:
(1)Google的TPU很有可能也是單指令完成多個(gè)神經(jīng)元的計算。
(2)知道了Google的機器學(xué)習算法,就可以推斷出TPU支持的指令集。
(3)根據Google對TPU的描述“能夠降低運算精度”,猜測TPU內部可能也是采用更低位寬的定點(diǎn)或浮點(diǎn)乘法,雖然具體位寬未知。
(4)乘累加單元搭建的向量或矩陣指令仍然是基礎運算的核心。
(5)Google強調TPU有領(lǐng)先7年的性能功耗比(十倍以上的提升),據此猜測,TPU可能也沒(méi)有使用DRAM做存儲,可能仍然使用SRAM來(lái)存儲數據。但從性能功耗比提升量級上看,還遠未達到專(zhuān)用處理器的提升上限,因此很可能本質(zhì)上采用的是數據位寬更低的類(lèi)GPU架構,可能還是具有較強的通用性。
最后,記得關(guān)注微信公眾號:鎂客網(wǎng)(im2maker),更多干貨在等你!
硬科技產(chǎn)業(yè)媒體
關(guān)注技術(shù)驅動(dòng)創(chuàng )新
