深入解讀“寒武紀”后,我們對Google TPU有了這些認識

鎂客 9年前 (2016-05-31)

由于Google并沒有公布TPU的設計,因此我們只能大概根據中科院目前的“寒武紀”神經網絡芯片進行推斷。

雷鋒網按:本文作者龔黎明,威盛電子高級芯片工程師。由于提及“寒武紀”芯片,雷鋒網特邀中國科學院計算技術研究所陳天石教授對本文做了修正把關,以呈現更加完整專業的內容,特此感謝。

在Google I/O 2016的主題演講進入尾聲時,Google提到了一項他們這段時間在AI和機器學習上取得的成果,一款叫做Tensor Processing Unit(張量處理單元)的處理器,簡稱TPU。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

根據TPU團隊主要負責人介紹,TPU專為Google機器學習應用TensorFlow打造,能夠降低運算精度,在相同時間內處理更復雜、更強大的機器學習模型并將其更快地投入使用。Google數據中心早在一年前就開始使用TPU,其性能把摩爾定律往前推進到7年之后。之前打敗李世乭的AlphaGo就是采用了TPU做了運算加速。

根據Google所言,TPU只在特定應用中作為輔助使用,公司將繼續使用CPU和GPU。并且Google并沒有對外銷售TPU的打算。因此,TPU雖好,但僅限Google內部,而且即便使用TPU,也是用作輔助CPU和 GPU。

谷歌并沒有公布TPU是怎么設計的,因此似乎很難對其一探究竟。不過,要知道谷歌的TPU并不是什么黑科技,只不過是正常的一款專用加速芯片。而且,這也不是世界上第一款用來做深度學習的專用芯片。IBM和我國中科院其實都有類似成果。

IBM 在2014年研發出脈沖神經網絡芯片TrueNorth,走的是“類腦計算”路線。類腦計算的假設是,相似的結構可能會出現相似的功能,所以假如用神經電子元件制造與人腦神經網絡相似的電子神經網絡,是否可能實現人腦功能呢?這其實有點像人類研究飛行器的過程。我們都知道鳥會飛是因為有翅膀,人沒有。所以假如給人也弄一對翅膀,人是不是也能飛?

早先人類其實有這么一個探索過程。如今人類要探索大腦,但是大腦何其復雜?IBM的這款芯片就是通過打造類腦的芯片架構,來期望得到大腦同樣的功能,就算達不到,能模擬一下也很有意義。大意如此,當然實際上復雜多了。目前這款芯片理念很超前,還處于深入研究階段,算得上是黑科技。

今天要重點講的其實是中科院的這款“寒武紀”芯片。2016年3月,中國科學院計算技術研究所發布了全球首個能夠“深度學習”的“神經網絡”處理器芯片,名為“寒武紀”。該課題組負責人之一、中科院計算所陳天石博士透露,這項成果將于今年內正式投入產業化。在不久的未來,反欺詐的刷臉支付、圖片搜索等都將更加可靠、易用。下圖是“寒武紀”的芯片板卡。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

之所以重點講,是因為Google的TPU芯片并沒有公開設計細節,連是誰代工的都沒有公開。但是同樣作為深度學習的芯片,有理由相信中科院的“寒武紀”與Google的TPU在設計理念上是相同的。在講這個之前,先簡單科普一下人工智能和深度學習。

1981年的諾貝爾醫學獎,頒發給了David Hubel和Torsten Wiesel,以及Roger Sperry。前兩位的主要貢獻是,發現了人的視覺系統的信息處理是分級的。如下圖所示:從原始信號攝入開始(瞳孔攝入像素),接著做初步處理(大腦皮層某些細胞發現邊緣和方向),然后抽象(大腦判定眼前物體的形狀,比如是橢圓形的),然后進一步抽象(大腦進一步判定該物體是張人臉),最后識別眼前的這個人。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

而深度學習(Deep Learning),恰恰就是模仿人腦的機制來解釋數據。通過組合低層特征形成更加抽象的高層特征(或屬性類別)。例如,在計算機視覺領域,深度學習算法從原始圖像去學習得到一個低層次表達,例如邊緣檢測器、小波濾波器等,然后在這些低層次表達的基礎上,通過線性或者非線性組合,來獲得一個高層次的表達。此外,不僅圖像存在這個規律,聲音也是類似的。比如,研究人員從某個聲音庫中通過算法自動發現了20種基本的聲音結構,其余的聲音都可以由這20種基本結構來合成!

對于深度學習來說,其思想就是堆疊多個層,上一層的輸出作為下一層的輸入。深度神經網絡由一個輸入層,數個隱層,以及一個輸出層構成。每層有若干個神經元,神經元之間有連接權重。每個神經元模擬人類的神經細胞,而結點之間的連接模擬神經細胞之間的連接。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

當然了,以上這些原理都不是重點。我們只需要明白深度神經網絡模擬了大腦的神經網絡,上圖的每個圈圈都類似大腦的一個神經元。通過采用專用芯片進行神經元的運算加速,相比于采用CPU這種通用運算器,可以大大提高神經網絡的性能。根據“寒武紀”芯片的介紹,它可以一條指令完成多個神經元的并行處理。據此推斷,Google的TPU很有可能也是這么設計的,也就是說,支持一條指令完成神經元的多次計算。

“寒武紀”專用處理器還有配套的指令集,叫Cambricon。我們知道,指令集乃是一個處理器架構的核心。知道了一款處理器實現了哪些指令,其實也就知道了這款處理器適合做什么,也大概知道了這款處理器的硬件設計。

【雷鋒網注:有讀者認為寒武紀專用處理器配套的指令集叫DianNao,其實DianNao系列特指中科院計算所前期和國際合作者共同發表的學術論文提出的架構;而“寒武紀”特指寒武紀公司(中科院計算所的產業化公司)獨立開發的商用芯片。寒武紀的正式英文名為“Cambricon”】

Cambricon指令集的特點是單指令可以做完一次向量或矩陣運算,因此假如我們知道了深度學習的具體算法,那么其實也就知道了每個神經元可以規約為何種向量或矩陣運算,其實也就推斷出了Cambricon的指令集。以此類推,如果我們知道了Google的深度學習算法,假設也是每條指令實現多個神經元相關的向量或矩陣運算,那么其實也能推斷出TPU的指令集。這種假設應該是很有道理的,畢竟把一個神經元的計算打包成一條指令,是非??茖W合理的專用加速器設計方案。

下圖是中科院計算所團隊成員作為第一作者與法國Inria、瑞士EPFL聯合發表于國際計算機架構年會(ISCA2015)的ShiDianNao在圖像處理中的應用,其中的紅色格柵方塊就是該芯片在系統中的位置。

圖中可以看到,整個系統連接了兩塊圖像傳感器,傳感器采集到的圖像通過Camera Serial Interfaces(CSI)接口連接到Video pipeline處理單元,進行Bayer重建、白平衡、降噪、壓縮等等圖像處理。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

而ShiDianNao則在該系統中進行深度學習的模式識別,它內部實現了一個深度神經網絡,經訓練之后具有類似人類大腦一樣的識別能力,可以從圖像中識別出有一只貓,然后將識別出“貓”的信息通過GPIO/I2C接口輸出給主機。整個系統用一款微處理器做控制,協調各個部件的運行。整個系統的數據存儲,使用了256KB的SRAM,為了節省功耗,并提高性能,并沒有使用DRAM。

下圖給出了ShiDianNao處理器的深度神經網絡的架構。根據文獻介紹,NBin是輸入神經元的緩存,NBout是輸出神經元的緩存,SB是突觸的緩存。核心部件是NFU(neural functional unit)單元,它負責實現一個神經元的功能。ALU是數值運算單元,IB(decoder forinstructions)是指令譯碼器。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

下圖是ShiDianNao處理器的布局版圖:

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

下圖是神經元處理單元的核心部件NFU單元的結構。之前講過,深度神經網絡加速芯片的最大特點就是單指令可以完成多個神經元的計算。因此神經元計算單元的實現,就是這款加速芯片的核心。根據文獻介紹,每個NFU又是一個陣列,包含一堆PE單元。每個NFU單元實現了16bit x 16bit的定點整數乘法,相比于浮點乘法,這會損失一部分運算精度,但是這種損失可以忽略不計。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

下圖進一步給出了PE單元的結構,每個PE包含一個乘法器和一個加法器和比較器??梢詥未瓮瓿沙死奂舆\算或者累加運算或者一次比較運算。

深入解讀“寒武紀”后,我們對Google TPU有了這些認識

由此,我們就自上而下的看完了整個ShiDianNao的架構設計。由于Google并沒有公布TPU的設計,中科院和寒武紀公司亦沒有公開商用的寒武紀芯片的具體架構,因此我們只能大概根據中科院前些年與法國和瑞士的合作者在學術界公開發表的ShiDianNao架構進行推斷(我們假設寒武紀商用芯片和前些年的學術工作ShiDianNao在架構上有一脈相承之處,畢竟中科院計算所陳天石團隊的成員都是主要架構師或論文的第一作者)。

【雷鋒網注:DianNao系列架構和寒武紀在名稱上已經有明確的界限。DianNao系列特指前期中科院計算所會同國際同行共同提出的處理器架構,是面向學術界的。從商業角度出發,寒武紀公司(中科院計算所下屬企業)從未公開過寒武紀商用芯片的具體架構?!?/p>

根據ShiDianNao架構的論文描述,結合之前的論述,我們可以大致得出以下猜測:

(1)Google的TPU很有可能也是單指令完成多個神經元的計算。

(2)知道了Google的機器學習算法,就可以推斷出TPU支持的指令集。

(3)根據Google對TPU的描述“能夠降低運算精度”,猜測TPU內部可能也是采用更低位寬的定點或浮點乘法,雖然具體位寬未知。

(4)乘累加單元搭建的向量或矩陣指令仍然是基礎運算的核心。

(5)Google強調TPU有領先7年的性能功耗比(十倍以上的提升),據此猜測,TPU可能也沒有使用DRAM做存儲,可能仍然使用SRAM來存儲數據。但從性能功耗比提升量級上看,還遠未達到專用處理器的提升上限,因此很可能本質上采用的是數據位寬更低的類GPU架構,可能還是具有較強的通用性。

最后,記得關注微信公眾號:鎂客網(im2maker),更多干貨在等你!

鎂客網


科技 | 人文 | 行業

微信ID:im2maker
長按識別二維碼關注

硬科技產業媒體

關注技術驅動創新

分享到