更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

矽說發表於2019-03-04

一年一度的ISSCC終於結束,矽說也如約和大家來盤點今年的ISSCC。按慣例,第一波總是AI。關於ISSCC  2019上AI 論文的session設定與熱點預覽,請見 AI晶片新機遇 —— ISSCC 2019 人工智慧晶片技術前瞻,這裡不多贅述。今天小編更多地是想和大家談談AI處理器session設定兩年以來開始遇到的瓶頸——如何尋找在專用與靈活度間的落腳點?這是一個To Be or Not to Be 的問題,如果一旦閃失,可能就釀成了哈姆雷特的悲劇。

在進入這個問題之前,首先我們要明確AI處理器本身就是一類專用處理器。AI處理器的出現主要是類似CPU的通用處理器無法滿足深度學習的高算力。注意,這裡的無法滿足,指的是做不到,而不是沒有足夠多的錢做。通用CPU的單位面積的能效太低,即使跑出單位面積火箭發射的熱量來,也無法支援如此大規模的計算。能實現AI處理的GPU/TPU都是面向張量(Tensor)計算優化的專用處理器,簡而言之,他們在處理矩陣計算時的效率是CPU的100倍以上。但問題是,一旦落實到具體演算法後,總有比矩陣運算更優化的方案。越專用,效率越高。不過,卻有一條橫亙在更加專用的設計面前的終極天塹——

AI演算法的發展速度遠遠快於AI晶片的研發速度

所以過於定製的設計很可能在晶片出世後已無用武之地,比如大家還記得去年的這個時候,DNN守護者Hinton曾經提出過一個叫做Capsule的演算法麼?兩者間的折衷點,是定義一顆晶片的核心問題。

那些年,我們一起追過特定演算法

ISSCC 2019的machine learning處理器session,基本可以分為兩個流派。第一個流派是體系結構級,主要體現在session 7。其中的一個重要特點是,大部分設計(特別是學校出的)都是為了某一個應用場景而定製。

比如清華大學劉勇攀教授組的論文7.5:A 65nm 0.39-140.3 TOPS/W 1-to-12b Unified NN Processor 。相比於傳統的AI處理器,主要面向以資料複用和矩陣乘為核心的優化途徑,這篇論文獨闢蹊徑,找到了基於CirDNN的專用加速體系結構:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

CirCNN是發表在兩年前體系結構頂會Micron上的一種將無規律的係數網路變為有規律的塊迴圈的辦法,主要手段是基於FFT變化:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

該方法的特點是,係數和計算的pattern在FFT轉換後都迅速減少,無論從網路結構和計算效能上都帶來明顯的優勢,從下圖可見,該演算法可以帶來超過100倍的片上儲存空間的優勢。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

由此,論文7.5基於該演算法的特殊性,提出了精度可變的FFT和2維資料複用的MAC陣列,並優化了片上儲存器的讀寫模式以提高吞吐率。但是,CirCNN究竟可以適用多少實際網路,仍然值得繼續關注。

另一個例子是來在密歇根大學的論文7.3,是一款面向雙目SLAM導航而實現的專用處理器,但是在龐雜的SLAM體系中,該晶片僅考慮瞭如何提取特徵以及如何通過跟蹤特徵來計算距離。換言之,其僅僅實現了SLAM前端的專用晶片。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

該晶片的核心包括,基於CNN-SLAM(Triplet)的演算法,檢測特徵。在電路實現上接近經典的CNN加速器。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

除了特徵點提取,在SLAM中的特徵點跟蹤這一核心功能裡,該晶片設計了為Perspective-n-Point (PnP)演算法優化的專用硬體,核心就是在解各種線性方程:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

由於兩者都極度專用,因此,該晶片的效能,相比於NV Jetson TX系列等瓦級功耗要小的多,僅用240mW,就可以實時處理80幀每秒的資料。

此外,AI Session常客的KAIST Yoo教授組,針對強化學習(Reinforcement Learning)中,儲存頻寬的高要求,在論文7.4提出了專用的浮點壓縮硬體,根據資料的出現頻率,對高頻資料進行壓縮,類似Huffman Coding,以解決其中的頻寬,儲存空間的問題:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

但,可以吐槽的是,強化學習不僅頻寬、儲存空間要求高,並且需要實時的高精度訓練,但是論文7.4對此並無涉及。

有多少模擬計算可以重來?

Machine Learning的另一個流派就是電路,主要包括session 14和session 24 存內計算的部分。而講到電路,實際上數字部分能做的事情畢竟非常有限,高效能乘法加法的坑已經被synthesizer挖完了。所以這一部分全部被模擬計算電路佔據了,而且模擬計算在低精度上的高能效也是有目共睹的。(不過更多的時候,大家喜歡把模擬計算披上存算一體非馮的外衣。)

首先,介紹由東南大學楊軍教授和清華大學尹首一教授合作的論文24.4。其是基於脈衝寬度調製的二進位制係數網路的存內計算實現。二進位制係數網路,即其係數只有+/- 1和0三種可能,此時乘加單元就會退化為加減或者不操作單元。這類操作在時間域上,就是將一個脈衝的寬度增加或者減少,如下所示:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

很顯然,相比於傳統數位電路設計,該方法的能效會高很多。不過,該方法如其名稱,僅支援係數為一位精度的網路,對於高效能網路,該電路過於專用,並不合適。

另一個設計來自佐治亞理工大學,論文14.1。採用數字與混合訊號時域混合的方法實現高效能運算。這個組在去年的ISSCC上提出了時間域的混合訊號方法,就是將一個頻率和一個脈衝作與即可得到乘法結果,

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

但是,該方法能功耗與計算結果強相關,乘積接近0時功耗很低,乘積越大功耗越高,甚至遠遠超過數位電路的計算。為此,他們將該方法作為高位寬計算的LSB乘法電路,而高位採用標準數字計算,實現數字混合訊號的混合乘法。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

下圖比較了純時域方法和混合方法,隨著位數的升高,計算能量的幅度變化縮小了很多。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

但是,基於時間域的乘法計算,線性度非常“感人”,並不適用與一般網路,但是針對能自校準的系統使用而言卻是不錯的低功耗選擇。該電路應用在一個僅有全連結網路的多層感知機中,由聯合強化學習的方法可以自校準。可見,這個精度上的創新,仍然停留在專用的領域。

還有臺灣清華大學與電子科大合作的基於開關電容的多位元乘法,應用於存內計算中:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

但與上述計算一樣,模擬計算的精度限制很難超過4位,因此智慧適用與相對低精度的應用需求中。不過,模擬計算到底能不能被工業界買單,體系結構和演算法大佬們總有點不太看好:大佬級的觀點不僅有Bill Dally,現在的英偉達首席科學家,

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

本次開會邀請的Lecun Yann大佬也在keynote怒懟了一波,(exotic也是個神奇的英語單詞,字典上的翻譯是具有異國情調的。)

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

他自狠來他自惡,我自通用沖銷量

相比於漫天遍地的專用AI設計,仍然有不少靈活性強的通用AI設計,雖然也是為了特定場景定製,但是其專用性仍然僅僅限制到了某個程度。而此類設計,多來自於真正要賣錢的大公司,比如如下這款Intel的面向機器人的專用處理器晶片。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

與上述的CNN-SLAM類似,該晶片也專注於機器人的導航,然後其目標更加明確,要完整覆蓋整個SLAM演算法和運動,從里程計odemetry,到多感測器融合的擴充套件卡爾曼濾波器,到路徑規劃等等一系列計算:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

然而縱觀其系統架構,除了路徑規劃Path Planner和運動控制外,其他的SLAM都是基於Tensillica的DSP實現,神經網路加速器也是標準的CNN架構,不做過多優化。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

類似的策略也出現在Toshiba的車規級自動駕駛晶片中,整個晶片可以說是中規中矩,即使新設計的DNN加速器,也涵蓋了可能的各種DNN操作,比如已經很久沒看到的Sum/Average層:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

另外,在靈活的電路層面上,密歇根大學的論文14.2提出了一種存內計算的電路結構,通過bit serial的串型微指令操作,可以實現任意精度的整點和浮點MAC等一系列的ALU計算。其在每個儲存器entry的行中設計了一個序列的計算邏輯小單元,計算其中A和B的常見邏輯結果。通過每個bit的操作,實現對應的乘法、加法或其他運算。

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇

該設計中,傳統的指令集並不作用於每個資料,而且單獨地作用在每個bit上,bit和bit之間相互作用由微指令。通過微指令間不同的整合方式,實現不同位寬的操作。下表體現了該設計在不同精度情況下的算力:

更專用還是更靈活,AI處理器的選擇 | ISSCC 2019數字篇


但是,可以從測試結果看出,支援不同精度的靈活性會導致其計算效能的下降。該設計用28nm,但是8位乘法的能效值僅有0.55TOPS/W,甚至低於一般的綜合結果。當然,這個損失是可以理解的。(相比於其他電路上的革新,未來幾年,個人認為bit serial是會優先被大公司採納的DNN計算電路新技術,因為這可能是目前唯一個靈活支援不同精度計算的硬體方法。只有bit serial的硬體,才會使這兩年來漫天發展的低精度DNN演算法真正硬體落地。第一篇和DNN搭上關係的bit seria硬體計算l是ISSCC 2018的UNPU。)

更專用,還是更靈活

縱觀ISSCC 2019的AI處理器paper,簡而言之,就是追求極端效能的都是都是專用設計,無論從體系結構還是從電路上,針對專用場景的優化總是能帶來效能上的提升。ISSCC這種唯效能論的會議,對學校來說做專用總是更有希望一點。

然而能落地的最終還是更通用的方案,從eyeriss到今天,data flow已經成為AI處理器的標準技能,然而大量商用的設計仍然只考慮矩陣運算加速就可見一斑。一顆能賺錢的晶片可是要出貨千萬的,即使以效能為代價,高靈活度仍然是晶片定義的第一原則。

向左走,還是向右走,To be or not to be,總是一個問題。

相關文章