一年一度的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的專用加速體系結構:
CirCNN是發表在兩年前體系結構頂會Micron上的一種將無規律的係數網路變為有規律的塊迴圈的辦法,主要手段是基於FFT變化:
該方法的特點是,係數和計算的pattern在FFT轉換後都迅速減少,無論從網路結構和計算效能上都帶來明顯的優勢,從下圖可見,該演算法可以帶來超過100倍的片上儲存空間的優勢。
由此,論文7.5基於該演算法的特殊性,提出了精度可變的FFT和2維資料複用的MAC陣列,並最佳化了片上儲存器的讀寫模式以提高吞吐率。但是,CirCNN究竟可以適用多少實際網路,仍然值得繼續關注。
另一個例子是來在密歇根大學的論文7.3,是一款面向雙目SLAM導航而實現的專用處理器,但是在龐雜的SLAM體系中,該晶片僅考慮瞭如何提取特徵以及如何透過跟蹤特徵來計算距離。換言之,其僅僅實現了SLAM前端的專用晶片。