人工智能芯片智能嗎?
人工智能芯片這個詞,很有神秘感,似乎這個芯片會十分智能。人工智能芯片,確切地應該被稱為“實現(xiàn)智能算法的芯片”,而不是“具有智能的芯片”。事實上,如果真的去看芯片的“智能性”和復雜性,那這些人工智能芯片大概比不上CPU。因為人工智能芯片能夠運行的算法是比較單一的(如TPU的核心是矩陣乘法)、控制流是比較簡單的。
人工智能芯片為什么能更“快“--勝在專注
首先,“快”這個詞在計算機科學里可以有兩個含義,一個是說低延遲(low latency),一個是說高吞吐量(high throughput)。我們說“更快”,可能指的是完成一項任務延遲更低,或者是單位時間內(nèi)可以完成更多的任務。這兩者不是相互蘊含的,但是是相關的。其關聯(lián)被Little‘s Law所定義。而人工智能芯片的“快”,也可以是延遲低和/或吞吐量高。
然后,人工智能芯片為什么快?一句話就可以回答:同一個算法,用接近硬件的編程語言(如C)實現(xiàn)起來通常比Java等快,而直接用硬件實現(xiàn)則應該更快。下面具體討論延遲和吞吐量。
延遲低:很多芯片做機器學習算法的推理(inference)比用CPU或者GPU更快。這通過專用電路、片上存儲等實現(xiàn)。專用電路消除了CPU的指令加載、解碼等時間,片上存儲極大減少了數(shù)據(jù)(包括樣本數(shù)據(jù)和模型數(shù)據(jù))從內(nèi)存加載的時間。吞吐高:當大家說“GPU比CPU快”,指的是其吞吐量。事實上GPU運行的時鐘頻率比CPU低不少,延遲也就更高。GPU吞吐量高,是通過移除CPU上大量的復雜控制邏輯(分支預測等)和具有一致性的緩存(cache),取代之以大量運算單元和不具有一致性的片上存儲(用于寄存器和共享內(nèi)存)來實現(xiàn)的。TPU吞吐量更高,因為它可以進一步移除GPU必須的圖形計算單元(光柵raster或者光線跟蹤ray tracing)、雙精度(double precision)單元、單精度(single
precision)單元等,取而代之以大量的半精度(FP16)和1/4精度(INT8)單元。
從此可以看出,從延遲和吞吐兩個角度來看,專用芯片都是勝在專注--能做種類更少的事情,但是做得更延遲低,或者單位時間內(nèi)完成的任務更多。
專用芯片的缺點也很明顯,一次性投入大,編程難,產(chǎn)品化耗時長,風險大(算法改變了怎么辦?)。
摩爾定律和Dennard scaling
摩爾定律說,每18個月,晶體管的面積變成一半,即相同面積芯片上晶體管數(shù)量翻倍。這從幾個方面能讓計算更“快”:
晶體管變小,則其門電路變化狀態(tài)的速度更快,CPU單核的頻率可以更高(lantency)。這一點由下面將介紹的Dennard scaling定量描述。晶體管變多,則可以加入更復雜的控制邏輯(分支預測等)和緩存,讓單線程的執(zhí)行更快(latency)。晶體管變多,可以增加并行的單元,讓吞吐量增大(throughput)。
Dennard scaling說,晶體管變小以后,所需電壓和電流同比例變小,可以大幅度增加頻率而維持總功率不變。這樣CPU單核的頻率可以變得更高。
現(xiàn)在這兩個定律已經(jīng)都部分失效。從摩爾定律來說,主流芯片晶體管的feature size目前在7-14nm,5nm和3nm可能可以達到但是會過程緩慢,而且工藝及其復雜和造價昂貴(近期GLOBALFOUNDRIES放棄7nm的生產(chǎn)即是證明)。再往后,由于漏電造成的發(fā)熱,晶體管大概不能再繼續(xù)縮小了。從Dennard scaling來說,由于漏電發(fā)熱和晶體管維持工作需要的一個基本電壓,芯片的頻率也不能再繼續(xù)增加。
這兩個定律都失效以后,從某種意義上說,芯片發(fā)展的路線已經(jīng)從做加法(更復雜的芯片、更多的功能,頻率更高,更多核)發(fā)展到做減法(更專注某個/某類應用,用更簡單的數(shù)字格式)了。今年圖靈獎兩位獲得者講的domain specific architecture,就是類似的思想。另外,還可以堆疊大量的芯片,讓其高速互聯(lián)(通過專用的交換電路例如NVLink,而不是更慢的PCIe總線)來達到高性能。