兩年前,我在公眾號發文分析了ISSCC2017 Deep-Learning Processors Session中的7篇文章。到今天,不僅AI晶片技術取得了長足的進步,大家寫文章的熱情也越來越高,相信後面會看到各種對ISSCC2019論文進行分析的文章。所以,我就不再單獨討論具體的論文了,只談一些綜合的感受。
這次我看到論文摘要的時候,首先是還是看Session 7和14的Machine Learning部分。而我最關注的是三星的論文“An 11.5TOPS/W 1024-MAC Butterfly Structure Dual-Core Sparsity-Aware Neural Processing Unit in 8nm Flagship Mobile SoC”。大家知道,三星在手機晶片中加入NPU是相對較晚的,應該說在設計中吸收了學界和業界這幾年AI晶片研發的經驗。另外,這也是業界首次公開在規模量產晶片(旗艦手機晶片)中的NPU細節,一方面反映了“真實”和“實用”(不追求指標驚人,而是有更明確的優化目標)的結果,另一方面也標誌著整個產業對NPU設計的認識已經比較成熟。
另外一個重要看點當然是Yann LeCun教授的演講。ISSCC本來是半導體產業中的“電路(circuit)”會議,這幾年越來越多的加入架構層面的內容。這次請AI大神做Keynote就更有意思了。大神在ISSCC講演的幾天之內還做了一波PR,也有宣傳Facebook自研晶片的意思。當然,大神的演講還是非常棒的,特別是對新架構的分析。這幾天已經有很多文章介紹這個研究,我這裡只貼一下他分享的的AI硬體相關的經驗教訓以及對未來的展望。
source:ISSCC2019
前兩個部分反映了上世紀90年底開始到今天的AI熱潮中AI硬體的嘗試以及整個AI發展中我們學習到的經驗和教訓。第三部分是對新架構的預測,這個我將在本文第三部分重點討論。第四部分主要講一些演算法的趨勢,特別是Self-Supervised Learning(蛋糕上的櫻桃)。
最後,他還分享了一下自己的一些其它思考,特別是對於SNN的質疑。這部分內容這兩天也引起很大爭議。SNN現在確實面臨實用性的問題,Neuromorphic的初衷是模仿人腦,但由於我們現在使用的模型太簡單,這種模型和演算法是否是正確路徑確實還有疑問。第二部分,他對模擬計算也有一些疑問,看起來也都是老問題。我自己沒有參會,所以不太清楚他具體的講法是什麼。不過我個人覺得模擬計算還是很有前途的(或者說是不得不走的路)。
source:ISSCC2019
如果說Yann LeCun教授對AI晶片的新架構提出了需求,那麼另外一個推動AI晶片技術進步的要素將是底層半導體技術的進步,這也正是ISSCC的重點。從這次會議來看,儲存技術(包括存內計算),模擬計算,矽光技術等等,在AI,5G等需求的驅動下都非常活躍。這些技術和AI晶片的關係之前都有介紹,本文就不贅述了。
Compilers for Machine Learning
就在ISSCC的同時,“The International Symposium on Code Generation and Optimization (CGO)”上的“Compilers for Machine Learning” workshop[2]也相當熱鬧。我們不妨先看看討論的內容:
會議除了目前三大AI/ML編譯器XLA(Tensorflow),TVM,Glow(Pytorch)之外;還有Intel的nGraph,PlaidML;Nvidia的TensorRT;Xilinx用於ACAP的編譯器。另外還有大神Chris的talk和其它來自學界的講演。會議大部分Slides在網上都可以看到,這裡就不具體介紹了。我在一年前寫過一篇文章“Deep Learning的IR“之爭””,主要討論IR的問題,和編譯器也是密切相關的。到今天,這個領域確實也是現在大家競爭的一個焦點。
XLA是比較早提編譯器概念的,但到現在主要還是針對Google的TPU進行優化。TVM相當活躍,前一段時間還搞了TVM conference,除了Amazon之外,華為,Intel,Xilinx,甚至“競爭對手” Facebook都有參加。TVM的“野心”也很大,從最早的編譯器已經發展到了TVM Stack(如下圖,和我之前文章裡貼的圖已經有了很大的變化),從新的IR(Relay),到自動編譯優化的AutoTVM,到開源AI硬體加速器(VTA),開了很多有意思的話題。
source:tvm.ai
Glow是Pytorch的一部分,在AI編譯器裡算後起之秀,吸收了XLA和TVM的經驗,有自己的特色,目前已經有一些廠商站臺,也比較活躍。
這三個編譯器的背後分別是Google,Amazon和Facebook三巨頭的支撐和相應Learning Framework的生態,應該是未來AI編譯器的主要玩家。而這些開源的編譯器專案,也為各個做AI晶片的廠商提供了編譯器框架的基礎,大大降低了大家自研編譯器的門檻。另一類編譯器是針對專門硬體的,主要是晶片大廠的自研編譯器,比如Nvidia的TensorRT,以及Intel,Xilinx的編譯器。雖然,目前手工優化庫也還是重要的優化方式,在一些架構上還是比編譯器的結果好很多,但總的來說,編譯器專案的繁榮,也是AI晶片產業逐漸成熟的表現。
AI晶片2.0
最後,我們詳細看看Yann LeCun教授對未來AI硬體的預測。他的思考主要是從演算法演進的需求出發,幾個重點包括:
Dynamic Networks,簡單來說就是神經網路的結構和資料相關,會根據輸入資料(或者中間結果)選擇不同的分支和操作。而目前AI加速,特別是對於Inference的加速,其高效執行的一個前提就是網路的確定性(靜態性),其控制流和資料流是可以預先安排和優化好的。動態網路相當於把這個前提打破了,對架構的靈活性有更高的要求,需要在靈活性和高效性之間得找到新的平衡點。
Neural Network on Graphs。目前的神經網路處理的基本資料主要是張量tensor,相應的,目前的AI硬體的基本要求是對tensor運算的加速。而對於圖網絡來說,資料變成了以tensor為節點和邊的圖。如果圖網絡成為主流,則又改變了AI硬體設計的一個前提。專門用於圖計算的晶片已經是一個重要的研究方向,落地的速度估計還得看演算法演講的速度有多快。
Memory-Augmented Networks。這個主要是對儲存架構的新需求,特別是對長期記憶的模擬(在大量儲存中實現Attention機制,我在之前的文章裡也討論過)。未來我們可能需要在大量memory中快速找到關注的內容,這要求儲存器不只像目前一樣實現簡單的存取功能,還需要具備查詢和運算能力,比如根據輸入向量找到一組值;或者一次讀取多個值,然後和一個輸入向量做運算並輸出結果。
Complex Inference and Search。這個問題簡單來說就是在做inference的時候可能也需要支援反向傳播計算,這當然會影響目前的單向inference運算加速的架構。
Sparse Activations。這個預測是說未來的神經網路可能是一個功能非常強大的巨型網路,但針對一個任務只需要啟用極少一部分(之前Jeff Dean也做過類似預測)。這個問題涉及兩個方面,一是如何利用稀疏性(比如像大腦一樣只有2%啟用);另一個問題在於這個巨型網路的儲存和運算。目前我們還不知道在這個方向上未來會發展到什麼程度,不過這個趨勢可能導致我們必須應對整個神經網路的儲存和運算架構中出現的新的瓶頸問題。
當然,上述一些演算法發展的趨勢是Yann LeCun教授的看法,未來我們還可能看到其它演算法上的演進甚至變革。晶片設計,特別是Domain-specific架構的晶片是由該領域的演算法驅動的。演算法的改變會影響我們的優化策略和trade off的sweet spot。正如Yann LeCun教授所說“New architectural concepts such as dynamic networks, graph data, associative-memory structures, and inference-through-minimization procedures are likely to affect the type of hardware architectures that will be required in the future.”。
第一代AI晶片從2016年開始爆發,到目前在架構設計上已經比較穩定,相關的編譯器的技術越來越成熟,整個產業格局基本成型。可以說,目前的AI晶片軟硬體技術已經為規模商用做好了準備(AI晶片0.5)。未來的一到三年中,我們應該可以看到“無晶片不AI”的景象(AI晶片1.0)。再看更遠的未來,隨著演算法演進,應用落地,會不斷給晶片提出新的要求,加上底層半導體技術的進步,我們可以期待在3到5年內看到第二次AI晶片技術創新的高潮(AI晶片2.0)。
Reference:
[1]. Yann LeCun, “Deep Learning Hardware: Past, Present, and Future”, ISSCC2019
[2]. "C4ML workshop at CGO 2019", https://www.c4ml.org/