通用or專用,,智能算力芯片架構(gòu)該如何設(shè)計(jì)?
常用芯片中最通用的就屬CPU,。以英特爾,、AMD為代表,幾乎可以做任何事情,,但是無法做到極致的性能和功耗,。能做到極致能效比的是專用芯片,既所謂的ASIC,。但是它的編程性差,,應(yīng)用的范圍就比較窄。
而在這兩個(gè)極端之間還有很多選擇,,比如GPU,,這些年越來越成為行業(yè)的熱點(diǎn)。GPU是一個(gè)相對(duì)比較通用的處理器,,現(xiàn)在稱之為GPGPU,,具有良好的編程性,特別適合大規(guī)模數(shù)據(jù)并行類應(yīng)用,。還有一類在硬件靈活度上更大的就是FPGA(現(xiàn)場(chǎng)可編程門陣列),,這類器件可以通過硬件描述語言來改變邏輯結(jié)構(gòu),性能和功耗會(huì)更好,,只是編程的難度較大,。
通過分析過去五年具有代表性的芯片公司的股價(jià)走勢(shì),就可以對(duì)行業(yè)的發(fā)展趨勢(shì)窺見一斑:英特爾近五年股價(jià)上漲了50%,;Xilinx(全球領(lǐng)先的FPGA公司)股價(jià)大概上漲了2.6倍,;而英偉達(dá)(當(dāng)紅的GPGPU壟斷企業(yè))過去五年股價(jià)上漲了16倍。我們即便不去追究深層次的原因,,僅憑股價(jià)的成長(zhǎng)也可以判斷行業(yè)已經(jīng)作出了選擇,,GPGPU已經(jīng)成為未來計(jì)算的主角和核心。
同時(shí),,以史為鑒,從GPU的發(fā)展歷史看,,它是如何一步一步成長(zhǎng)為行業(yè)王者的,?
GPU早在上世紀(jì)八十年代就已經(jīng)出現(xiàn)了,那時(shí)對(duì)于游戲的需求催生了特殊的專用于圖形渲染的硬件,,這就是早期的GPU,。在1990年-2000年這段時(shí)間,涌現(xiàn)了很多GPU廠商,每家公司規(guī)模并不大,,有很多代表性的專用芯片產(chǎn)品,。但是到了2005年左右,大家意識(shí)到在圖形學(xué)這個(gè)領(lǐng)域算法變化很快,,可能每隔幾個(gè)月甚至每隔幾周就會(huì)發(fā)生翻天覆地的變化,。但芯片需要18個(gè)月才能完成一次更迭,如果把硬件完全固定下來就無法跟上行業(yè)發(fā)展的節(jié)奏,。
所以,,人們開始探索把原來不可變的執(zhí)行流水線,設(shè)計(jì)成可以部分編程的架構(gòu),,這種架構(gòu)更加靈活,,可以更加高效的適應(yīng)算法的變化。真正的GPGPU行業(yè)大發(fā)展始于2006年出現(xiàn)的CUDA(Compute Unified Device Architecture,,統(tǒng)一計(jì)算設(shè)備架構(gòu)),,它是一種精心設(shè)計(jì)的、可對(duì)GPGPU直接編程的接口和語言,。從此以后,,對(duì)于大量的數(shù)據(jù)并行應(yīng)用就可以方便地使用CUDA編程,從而釋放出GPGPU中可觀的算力,。
所以回看過去幾十年GPU的發(fā)展之路,,是一條從“專用”過渡到“比較通用”,直到現(xiàn)在“非常通用”的發(fā)展路徑,。如果我們用來類比今天的人工智能,,是否也有相同的趨勢(shì)?AI需要極致的算力和能效比,,做成專用芯片可能是合適的,。但AI算法的變化又非常快,,可能以“天”計(jì),,這又要求我們不能做成非常固定的硬件,可能最后也會(huì)收斂到一個(gè)偏通用的架構(gòu),。這是我們的一個(gè)推論,。
GPGPU的發(fā)展離不開“摩爾定律”
摩爾定律已經(jīng)被“社死”了很多年,在很多年前就有人說摩爾定律要終結(jié)了,,但這些年摩爾定律非但沒有終結(jié),,而且還活得很好。
如今5納米工藝可以量產(chǎn),,3納米也沒問題,,1納米也能夠預(yù)見,,摩爾定律仍然會(huì)持續(xù)下去,而且會(huì)持續(xù)相當(dāng)長(zhǎng)的時(shí)間,。但確實(shí),,計(jì)算機(jī)不會(huì)變得更快。因?yàn)轭l率不會(huì)變得更高,,所以CPU的性能總體趨于穩(wěn)定,。但計(jì)算機(jī)能夠集成的計(jì)算資源和存儲(chǔ)資源還是會(huì)不斷翻倍,因?yàn)槟柖墒沟糜布啥让扛?8個(gè)月提升一倍,。
摩爾定律和GPGPU可謂“佳偶天成”,,數(shù)據(jù)并行是一種可擴(kuò)展性最強(qiáng)的并行方式,只要有海量的數(shù)據(jù)并行性,,同時(shí)芯片又能夠按照摩爾定律不斷堆砌硬件資源,,GPGPU的性能就會(huì)不斷提升。歷史已經(jīng)證明GPGPU的勝出歸根結(jié)底是摩爾定律的功勞,。
既然針對(duì)某個(gè)特定應(yīng)用做到極致能效比的方式是專用芯片,,那么專用芯片是否會(huì)比GPGPU更加有優(yōu)勢(shì)呢?
實(shí)際上GPGPU的架構(gòu)也不是一成不變的,,也會(huì)加入專用的單元用于處理專業(yè)的任務(wù),,從而使得GPGPU的發(fā)展與時(shí)俱進(jìn),它可以是專用和通用的結(jié)合體,。比如Volta這一代的GPGPU,,在流處理器里就把計(jì)算資源分成幾塊,既有計(jì)算整型數(shù)的單元也有強(qiáng)大的浮點(diǎn)數(shù)單元,。
為了適應(yīng)人工智能的發(fā)展,,還特意加入了新的單元,叫Tensor Core,,其實(shí)就是為AI量身定做的專用計(jì)算單元,。所以,GPGPU的架構(gòu)也在不斷更新,、不斷地去適應(yīng)新型應(yīng)用所需要的底層算力,。
如果說傳統(tǒng)GPGPU的算力并行度是以一個(gè)數(shù)據(jù)點(diǎn)為基本的粒度,在這個(gè)規(guī)模上并行,,那么到了Tensor Core就變成了以小矩陣塊為基本粒度并行了,,它在每一個(gè)周期都可以完成一個(gè)4×4矩陣相乘的結(jié)果,所以并行度和算力都高于傳統(tǒng)GPGPU的設(shè)計(jì),。
這個(gè)概念還可以推而廣之,,比如說華為的昇騰AI處理器中的核心單元3D Cube,實(shí)際上就是一個(gè)矩陣計(jì)算的陣列塊,,而它的規(guī)模比Tensor Core還要大,,是以16×16為單位來做矩陣計(jì)算的,因此它的粒度更大,,并行度更高,,并且做同樣的矩陣計(jì)算平均下來功耗更低。但是基本單元塊粒度過大的話,,相對(duì)于程序來說控制就復(fù)雜,,通用性和適用性就下降。所以各個(gè)公司都是盡量在功耗,、性能以及并行的粒度和可編程性之間找到一個(gè)平衡點(diǎn),。
為了適應(yīng)人工智能的發(fā)展,現(xiàn)代GPGPU還做了很多革新,。比如引入了多樣化的數(shù)制,。人工智能的應(yīng)用對(duì)計(jì)算精度的要求可以放寬,沒有必要一定按照標(biāo)準(zhǔn)的浮點(diǎn)數(shù)規(guī)則去運(yùn)算,。英偉達(dá)最新的Ampere架構(gòu)中就引入了新的數(shù)制TF32,。之所以起名叫TF32,意思是用這個(gè)標(biāo)準(zhǔn)來做,,最后訓(xùn)練出來的網(wǎng)絡(luò)精度不會(huì)下降,,但TF32只有19位,它的計(jì)算方式和標(biāo)準(zhǔn)的浮點(diǎn)數(shù)不同,,也正因?yàn)榘盐粚挏p少了,,所以性能可以顯著提升。
此外,,Ampere架構(gòu)還采用結(jié)構(gòu)化的稀疏,。我們?cè)谏窠?jīng)網(wǎng)絡(luò)中發(fā)現(xiàn),很多節(jié)點(diǎn)的權(quán)重都接近于0,,而和0計(jì)算是白白浪費(fèi)算力,,所以在Ampere架構(gòu)中也考慮了結(jié)構(gòu)化的稀疏,每進(jìn)行四次計(jì)算就可以規(guī)定有兩個(gè)是結(jié)構(gòu)化的0,,實(shí)踐發(fā)現(xiàn)如果可以把網(wǎng)絡(luò)訓(xùn)練成這樣,,那么在Ampere架構(gòu)下運(yùn)算起來就會(huì)得到兩倍的性能提升。
所以說,,GPGPU里面也會(huì)發(fā)生各種各樣的優(yōu)化,,也在與時(shí)俱進(jìn)。人工智能需要新型的計(jì)算芯片支持,,大致可分為云端和終端,。
在云端要適應(yīng)各種需求變化和應(yīng)用,并且既要能做訓(xùn)練也要能做推理,,所以看起來就是GPGPU的天下,。英偉達(dá)這樣的公司也在不斷的進(jìn)化,,不斷的推陳出新來保證產(chǎn)品的競(jìng)爭(zhēng)力。
而在終端的需求相對(duì)比較單一,,應(yīng)用固定一些,,所以理論上設(shè)計(jì)專用硬件來追求極致的能效比是合理的。但終端的問題是加速器永遠(yuǎn)只是一小部分,,需要其他各種IP的配合協(xié)作才能組成一個(gè)完整的產(chǎn)品,。比如說手機(jī)里面有豐富的功能,不是說只要人工智能做的好,,手機(jī)就能賣得好,。所以掌握傳統(tǒng)渠道和市場(chǎng)的終端芯片廠商,也會(huì)推出自己的解決方案,,很有可能會(huì)后發(fā)制人,。
市場(chǎng)需要的不是“好”的芯片,而是“好用”的芯片
我們要感謝這個(gè)時(shí)代帶給行業(yè)極大的發(fā)展機(jī)遇,,甚至吸引了互聯(lián)網(wǎng)巨頭和海量的資本加入到這個(gè)戰(zhàn)場(chǎng),。
此前,中國(guó)的互聯(lián)網(wǎng)企業(yè)重視用戶體驗(yàn)和商業(yè)模式,,較少參與底層的硬件和芯片開發(fā),,但現(xiàn)在情況完全不同了。世界面臨產(chǎn)業(yè)的大變革,、大重組,、大轉(zhuǎn)移。而芯片產(chǎn)業(yè)的發(fā)展本質(zhì)靠的是資本推動(dòng),,當(dāng)硬科技成為行業(yè)風(fēng)口,,就會(huì)產(chǎn)生大量的機(jī)會(huì)和變化。
這是一個(gè)非常好的時(shí)代,,芯片產(chǎn)業(yè)總是由先進(jìn)工藝推動(dòng)的,,我們可以樂觀的預(yù)期未來推動(dòng)先進(jìn)工藝的未必是美國(guó)的英特爾或英偉達(dá),或許可能是中國(guó)的某家高科技公司呢,?但另一方面,,我們也必須看到英偉達(dá)研發(fā)一款新品的投入是以十億美金計(jì),如果一個(gè)芯片公司的銷售達(dá)不到這個(gè)規(guī)模,,肯定是無法持續(xù)的,。
當(dāng)前海量的資本都瘋狂的涌入這個(gè)賽道,而芯片是一個(gè)需要打持久戰(zhàn)的行業(yè),,一旦收入無法跟上,,或無法成長(zhǎng)為某個(gè)賽道的頭部,結(jié)局就可能很悲慘,即便是“飛起來的豬”也可能很快掉下來,。
我們必須理解市場(chǎng)需要的不是“好”的芯片,,而是“好用”的芯片。所謂好的芯片就是絕對(duì)算力高,、硬件指標(biāo)高,,這個(gè)相對(duì)容易做到。但是做到好用就很困難,,做出來的芯片沒辦法把潛力發(fā)揮出來,這是目前AI芯片公司的通病,。
還是以史為鑒,,英偉達(dá)其實(shí)也是一步一步從不好用做到好用,走過了一個(gè)漫長(zhǎng)的階段,。早期的GPU是很不好用的,,沒有什么人會(huì)用GPU編程,只有那些所謂的“極客”會(huì)考慮使用GPU,,拼命把其中的算力榨取出來,。可以說早期的GPU比現(xiàn)在的AI芯片更不好用,。
這時(shí)候就需要有一批行業(yè)領(lǐng)袖和技術(shù)大咖挺身而出,,代表性的人物包括UIUC的胡文美教授(Wen-mei Hwu),他們發(fā)明了CUDA,,從此有了可以直接對(duì)GPU進(jìn)行編程的語言,,使得GPU的潛力得以充分發(fā)揮,從而真正走上了騰飛之路,。又經(jīng)過十年左右的發(fā)展,,形成了一個(gè)非常強(qiáng)大的生態(tài),可以支持各種各樣的應(yīng)用,,豐富了高級(jí)語言的屬性,,能夠支持更為復(fù)雜的模型和算法,并且逐步在很多行業(yè)形成壟斷,。所以說GPGPU的發(fā)展不是一蹴而就的,,是經(jīng)過十多年的不懈奮斗才走到了今天。
發(fā)展國(guó)產(chǎn)自主GPGPU的三種可能性
當(dāng)我們回過頭來探索國(guó)產(chǎn)自主GPGPU的發(fā)展之路,,首先就是要沉得住氣,,耐得下心,切不可急功近利,、操之過急,。事物的發(fā)展要遵循客觀規(guī)律,資本永遠(yuǎn)是雙刃劍,,既可載舟亦可覆舟,。
一款芯片的絕對(duì)算力有多高,,集成了多少個(gè)晶體管并不重要,關(guān)鍵是把芯片的潛力充分釋放給用戶,,這需要一個(gè)良好的生態(tài)和完整的軟件棧,,才能讓用戶樂于接受,不用改變太多的習(xí)慣就可以迅速移植現(xiàn)有的工作,。講起來容易,,實(shí)際做起來很難,需要長(zhǎng)期的努力,,因?yàn)檫@世界上并不存在一個(gè)通用的辦法或者一個(gè)通用架構(gòu)就可以解決這個(gè)問題,。
現(xiàn)在流行說“兼容CUDA”,但要真正兼容出效率很難,。即便英偉達(dá)做GPGPU這么多年,,其實(shí)也是由無數(shù)個(gè)專用的優(yōu)化累積起來才能夠看上去如此的通用,這其中凝聚著大量工程師多年的心血,。我們從頭做起也需要花費(fèi)同樣的代價(jià),,沒有捷徑可走,大家一定要意識(shí)到這個(gè)問題的復(fù)雜性和長(zhǎng)期性,。
在此,,我們嘗試探討發(fā)展國(guó)產(chǎn)自主GPGPU的三種可能性:
第一條道路叫“農(nóng)村包圍城市”。策略是從專用芯片做起,,把某一個(gè)小的領(lǐng)域做精做強(qiáng),,占據(jù)一個(gè)山頭,然后再占第二個(gè),、第三個(gè),,形成一個(gè)個(gè)的革命根據(jù)地,逐漸實(shí)現(xiàn)農(nóng)村包圍城市,。但也要防止各家企業(yè)在小的山頭上惡性競(jìng)爭(zhēng)乃至自相殘殺,,從而忘記了我們真正的歷史使命和遠(yuǎn)大目標(biāo)。經(jīng)常發(fā)生的誤區(qū)是:當(dāng)一個(gè)企業(yè)爬上一座山頂?shù)臅r(shí)候,,只顧著欣賞眼前的風(fēng)景而忘記了去征服更高的高山,。
第二條道路來自“龜兔賽跑”的啟發(fā)。在歷史上小企業(yè)挑落行業(yè)巨頭的案例也是屢有發(fā)生的,,比如說,,英特爾的指令集在桌面電腦上一家獨(dú)大,但后來ARM能夠成功挑戰(zhàn)英特爾,,就是抓住了移動(dòng)互聯(lián)網(wǎng)帶來的歷史機(jī)遇,。英特爾在這個(gè)時(shí)候打盹了,并沒有意識(shí)到行業(yè)發(fā)生的深刻變革(再加上幕后推手蘋果公司的推波助瀾)。當(dāng)下人工智能時(shí)代帶來的變革可能還要超越移動(dòng)互聯(lián)網(wǎng),,但令人吃驚的是在這個(gè)大變革的時(shí)代,,實(shí)際上是兔子跑得比烏龜快?!巴米印本褪怯ミ_(dá),,英偉達(dá)沒有停下前進(jìn)的步伐,沒有犯當(dāng)年英特爾的錯(cuò)誤,,至今還保持著當(dāng)年初創(chuàng)企業(yè)的活力,,很多行業(yè)突破性的技術(shù)是最先出現(xiàn)在英偉達(dá)的產(chǎn)品上。
兔子跑得快已經(jīng)很棘手,,而糟糕的是,,我們作為后發(fā)者,國(guó)內(nèi)的芯片人才本來就極為緊缺,,但由于資本的驅(qū)動(dòng),短期內(nèi)催生出很多芯片公司,,據(jù)說今年新成立的芯片公司是去年的3倍,,而培養(yǎng)的人才不可能一下子成長(zhǎng)這么多。都說要集中優(yōu)勢(shì)兵力才能殲滅強(qiáng)敵,,但現(xiàn)狀是,,我們把為數(shù)不多的兵力分散到多個(gè)戰(zhàn)場(chǎng),從而陷入越打越弱的怪圈,。以史為鑒,,只有當(dāng)對(duì)手疏忽的時(shí)候,抓住戰(zhàn)機(jī)畢其功于一役才有大的勝算,,這往往需要有極大的戰(zhàn)略定力,,甚至還需要有些運(yùn)氣。在芯片行業(yè),,千萬要防止一哄而上之后的一哄而散,!
第三條道路也是目前我們認(rèn)為最有機(jī)會(huì)的道路,就是開源,??康氖潜娙耸安窈陀薰粕剑氖羌?xì)水長(zhǎng)流,,拼的是“天荒地老”,。通過開源戰(zhàn)勝?gòu)?qiáng)大的對(duì)手,在軟件生態(tài)方面已經(jīng)戰(zhàn)果累累,,在硬件上也已經(jīng)開始顯示威力,。我們有理由相信,開源硬件即便不能一統(tǒng)江湖,至少也可以分庭抗禮,。
我們認(rèn)為,,現(xiàn)階段國(guó)內(nèi)完全有機(jī)會(huì)做一個(gè)開源開放的、免費(fèi)公益的GPGPU項(xiàng)目,,目的是打造一個(gè)全棧式的平臺(tái),,提供開源硬件,編譯器,、算子庫(kù)等,,并且在指令集的設(shè)計(jì)上盡可能接近或者兼容CUDA生態(tài)圈。我們的研究團(tuán)隊(duì)最近攥寫了一本關(guān)于GPGPU體系結(jié)構(gòu)的專用教材,,書名是《通用圖形處理器設(shè)計(jì)-GPGPU編程模型和架構(gòu)原理》,,預(yù)計(jì)明年初正式出版發(fā)行。同時(shí)希望號(hào)召國(guó)內(nèi)最大的程序員社區(qū),,大家攜起手來,,摒棄門戶之見,都來支持國(guó)產(chǎn)自主GPGPU,,盡快把這個(gè)生態(tài)做大做強(qiáng),。
通過這些方式,經(jīng)過十年以上的努力,,我們堅(jiān)信在這一塊的劣勢(shì)會(huì)逐步得到彌補(bǔ),,逐漸縮小和國(guó)外巨頭之間的差距。