AI芯片:清華天機芯片內部結構分析(TianJic)

最近,清華七年磨一劍,放出一大招,文章直接登上NATURE的封面。
《Towards artificial general intelligence with hybrid Tianjic chip architecture》。
文章介紹了整個TianJic的結構及具體應用。
本文延續以往一貫的風格,僅僅研究文章中公開的內部計算架構。

一、整體思路

人工智能通常有兩個主要方向:
(1)一種是面向計算科學的方向
(2)一種是面向神經科學的方向
如下圖所示。
在這裏插入圖片描述

1.面向計算科學方向

這個方向,整體思路是用大量精確計算來實現人工智能。比如ANN,具體會引入CNN,LSTM等計算。

2.面向神經科學方向

這個方向,整體思路是模仿人類大腦的工作原理,實現人工智能。比如SNN。

3.小結

這兩個方向,可以看作原理不同的兩類實現方式。之前的研究都是各自分離的。清華天機首次嘗試將兩種計算方式融合到一個芯片架構中,相輔相成,建立新的人工智能系統。
想必這也是爲啥能登上Nature封面的一個重大原因吧。

二、計算核心結構

2.1 ANN與SNN

因爲ANN與SNN的計算流程如下,存在一定程度的相似,可以共用部分運算邏輯。
比如,ANN中的CNN,主要做的是乘累加;
SNN,會用到加法。
具體,如下圖所示。

在這裏插入圖片描述

2.2 融合ANN與SNN

二者可以共用加法邏輯。
清華用一個MUX去選擇,當是SNN時,就跳過乘法邏輯,直接進入加法邏輯。
如下圖所示。
在這裏插入圖片描述

2.3 TianJic FCore

上方的基礎單元結構確定後,然後多個這樣的邏輯組合起來,形成了TianJic的整體架構,成爲FCore。
如下圖所示。
在這裏插入圖片描述
可以看出,左側的Axon,輸入的是activition,右側的Synapse mem,輸入的是權重,經過中間的Dendrite的乘加邏輯後,將計算中間結果傳遞給下方的Soma,根據是SNN或者ANN,選擇對應的計算路徑,分別處理。

2.4 FCore Array

單個FCore可以通過配置,成爲執行SNN或ANN的邏輯功能。
多個FCore,通過配置成SNN或ANN,再組合在一起,可以靈活配置組合形成不同拓撲結構。有點FPGA的可重構思想在裏面。
比如某個SNN的FCore的輸出可以作爲另外一個ANN的FCore的輸入。
如下圖所示。
在這裏插入圖片描述

三、核心計算架構 FCore

3.1 FCore

FCore的整體結構可以從文章後面的補充附圖略窺一二。
如下圖所示。

在這裏插入圖片描述
從上圖中可知,整個FCore由多個模塊組合而成。
Axon模塊,主要提供輸入的圖像數據(activision);
Synapse模塊,主要提供權重參數;
Dendrite模塊,執行乘法和加法計算;
Soma模塊,執行後續的激活/pooling等功能。
Router模塊,調配數據的傳遞,類似一個DMA結構,或者,實現可重構配置的功能。

這麼一看,其實清華TianJic的架構,也很常見。
乍一看,比較像谷歌的TPU。但是,再看,又更像寒武紀的DianNao。
仔細一看,就是這二者的結合。
整體來說,架構的安排更加類似DianNao。
因爲FCore的16個MAC並沒有串聯在一起形成陣列,而是單獨的存在,非常類似寒武紀的DianNao架構。但是呢,又不是完全學的寒武紀的DianNao,大概就是,融合了PuDianNao與TPU的設計思路。

FCore怎麼計算呢?
舉個例子,計算某個卷積時,假設該卷積是3X3的,那麼,就是9個乘法結果的累加。
由於FCore的每個MAC並沒有串聯一起,反而類似單獨並行的存在,所以,估計是一個MAC,單獨完成某個卷積需要的9次乘法,將每次的乘法結果傳遞給下面的加法,然後,等下一次的乘法結果到了就繼續累加,一直等到9個乘法結果都累加在一起了,然後將計算結果傳遞給Soma模塊的Potential Memory。
這麼一看,FCore的計算方法,反而與寒武紀的PuDianNao比較像。

當然,我也只是單純憑藉文章中的文字及圖片做的猜測,或許會有不準確的地方,所以只是寫出來給大家當作娛樂一下,不要當真,我也不負責的,解釋歸清華啊。

四、TianJic 優缺點分析

從上面的分析中,簡單認識了一下FCore的計算方式。
那麼就順勢來看看TianJic的優點及缺點。

4.1 優點

這個就很明顯了,最大的優點是融合了ANN與SNN兩種不同類型的計算於一體。
單個的FCore,通過複用存儲邏輯、計算邏輯,達到同一塊芯片通過靈活配置可計算SNN和ANN。(感覺清華系的芯片,總是有一種可重構的思路在裏面)
多個的FCore,通過配置成可執行ANN或SNN,然後再串聯組合,形成功能多變的系統。多個FCore組成陣列,配置成不同的功能,就能夠適應不同的需求。
整體來說,比較靈活。

4.2 缺點

清華畢竟是我考不上的學校,裏面的人那自然是很厲害了,設計的芯片想必是沒有缺點全是優點的。
不過,我就吹毛求疵吧,提一下吧。

最大的感受是:算力不夠!

從截圖看,一個Dendrite模塊,才16個MAC,這個算力就很小了。
對比一下:
DianNao 單核有16X16=256個乘法器, 16個加法器
TPU1 單核有256X256=64K個MAC(乘加單元,等同包含一個乘法器,一個加法器)
TianJic 的整個chip 有156個FCore(核),單個FCore 有 16個MAC

這麼一對比,就發現,TianJic的單核運算單元太少了,別說與多年前的TPU1比了,就是DianNao都能秒殺FCore。FCore表現出來就是算力不夠。如果是在DianNao那個年代,還行,但是現在都是9102年了,這點算力根本不夠的。
估計,這也是爲啥TianJic會有156核組成陣列的原因了。
不過,就算能夠用多個FCore組合成算力更強大的陣列,但是感覺還不如增大單個FCore的計算資源。
多個FCore組合在一起,多核之間數據的傳輸延遲,功耗,都遠遠大於單個FCore內部的傳輸消耗,兩者消耗的功耗與延遲根本不在一個數量級。
所以,我單純覺得算力太弱,如果組成足夠算力的陣列,功耗又真的不小,看着就像一個FPGA,可重構。但是實際應用時,算力與功耗無法平衡,感覺挺雞肋的。

別打我,不說了~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章