
芯東西(公眾號:aichip001)
編輯 | ?GACS
9月(yue)14日~15日,2023全球(qiu)AI芯片峰會(hui)(GACS 2023)在深圳南山圓滿(man)舉(ju)行。在次日AI大(da)算(suan)力芯片專場上,上海交通大(da)學(xue)計算(suan)機科學(xue)與(yu)(yu)工程系(xi)教(jiao)授梁(liang)曉峣(yao)分享了題為《開源(yuan)GPGPU平臺“青花瓷”的技術進展與(yu)(yu)生態建(jian)設》的主(zhu)題演講(jiang)。
梁曉峣教授以目前AI芯片領域的“王者”英偉達作為切入點,解讀了英偉達是如何在“瘋狂的大模型時代”中,通過數制、稀疏性、互連、內存帶寬方面的4項革新,以及涵蓋編程語言、運行環境等完善的軟件生態建設應對挑戰,從而鞏固自己的地位的。他認為,在英偉達以V100為代表的處理器中,CUDA Core和Tensor Core這兩個主要單元幫助英偉達奠定(ding)了AI時代(dai)算力基座的行業地位。
為了建設國內的開源生態,梁曉峣團隊于去年推出自研GPGPU平臺“青花瓷”,該平臺支持大規模的并行通用計算、科學計算、AI計算等。梁曉峣團隊定義的“青花瓷”指令集分為9個大類,功能組合超過100個,支持應用超過100個,通過這套自定義指令,能夠實現架構通用性(xing)(xing)、性(xing)(xing)能先(xian)進(jin)性(xing)(xing)、生態兼容度。梁曉峣強調,青花瓷平臺不收取任何費用,完全免費開放給大家使用。
以下為梁曉峣的演講實錄:
感謝主辦(ban)方的邀請,這是我(wo)連續第二次在(zai)芯片論壇給(gei)大家做匯報。如果說從(cong)去年(nian)到今年(nian)發(fa)生了一件特別重(zhong)要的事情,毫無疑(yi)問就(jiu)是大模型,它的橫空出世改變了我(wo)們人類的世界。大模型可以做的事情非常多,包(bao)括(kuo)在(zai)一些標準化測試當中,它的機器評分(fen)、人工智能(neng)評分(fen)已經超越了人類。
大模型最關鍵的就是大,即它的參數量非常大,動輒幾十億,甚至上百、上千億的規模。像最大的GPT-3模型,可以達到1700多億參數。伴隨著參數,實際上就是算力的挑戰。因為每一個參數都需要參與計算,這么大的參數量就帶來巨大的算力。對于GPT-3最大的模型,用現在市場上最主流的A100 GPU,即使把1000塊A100 GPU互連在一起,也需要訓練30多天的時間,可見大模型對算(suan)力的(de)需求(qiu)是有(you)多么(me)的(de)巨大。
其實(shi)進入信(xin)息社會以(yi)來(lai)(lai),人類(lei)社會發展(zhan)史就是(shi)(shi)一部算力(li)發展(zhan)史。從最(zui)早期,人們采用(yong)分立(li)元件三極(ji)管(guan),搭出了一個(ge)(ge)人類(lei)歷史上第(di)一臺通用(yong)計(ji)算機ENIAC。這(zhe)個(ge)(ge)計(ji)算機有(you)(you)著(zhu)非常(chang)大(da)的(de)(de)(de)體(ti)積,但它的(de)(de)(de)算力(li)可能也只是(shi)(shi)相當(dang)于今天一個(ge)(ge)計(ji)算器的(de)(de)(de)算力(li)。隨著(zhu)集成(cheng)電(dian)(dian)路的(de)(de)(de)出現(xian),我們發現(xian)可以(yi)把晶(jing)(jing)體(ti)管(guan)集成(cheng)在(zai)(zai)晶(jing)(jing)圓、芯片(pian)上,可以(yi)在(zai)(zai)人眼看不見的(de)(de)(de)尺寸(cun)(cun)上做所謂的(de)(de)(de)集成(cheng)電(dian)(dian)路,從而有(you)(you)了現(xian)在(zai)(zai)按照摩爾定律發展(zhan)的(de)(de)(de)28納(na)(na)米(mi)、14納(na)(na)米(mi)、7納(na)(na)米(mi)等尺寸(cun)(cun)芯片(pian),晶(jing)(jing)體(ti)管(guan)尺寸(cun)(cun)會做得(de)越(yue)來(lai)(lai)越(yue)小。
伴隨著集成(cheng)電路行(xing)業的(de)(de)發展(zhan),各種各樣的(de)(de)處理(li)器(qi)、芯(xin)(xin)片(pian)(pian)(pian)類(lei)型都應運而生(sheng)。比較有(you)名(ming)的(de)(de)像(xiang)CPU,英特爾是老(lao)大(da);現在如(ru)(ru)日中(zhong)天的(de)(de)GPU,以英偉達(da)為代表,在AI和(he)數據中(zhong)心(xin)中(zhong)取得非(fei)常(chang)絕對的(de)(de)統治地位;像(xiang)DPU主要做數據層面的(de)(de)分離和(he)專用的(de)(de)處理(li),AI芯(xin)(xin)片(pian)(pian)(pian)也是其中(zhong)一(yi)類(lei)。未來可(ke)(ke)能還(huan)會(hui)有(you)更先進(jin)的(de)(de)芯(xin)(xin)片(pian)(pian)(pian),比如(ru)(ru)量子(zi)芯(xin)(xin)片(pian)(pian)(pian)、光(guang)子(zi)芯(xin)(xin)片(pian)(pian)(pian)、生(sheng)物芯(xin)(xin)片(pian)(pian)(pian)等,這些芯(xin)(xin)片(pian)(pian)(pian)可(ke)(ke)能還(huan)需要一(yi)段時(shi)間的(de)(de)發展(zhan),但是這個(ge)方向(xiang)也是非(fei)常(chang)明(ming)確的(de)(de),未來會(hui)往這個(ge)方向(xiang)走(zou)。
一、英偉達抓住時代機遇,GPGPU提高計算并行度
我今天的報告可能不會涉及到那么多,主要還是和大家聊一聊現在最主流的,也是最重要的一類AI芯片——GPGPU。
所謂GPGPU,就是通用圖形處理器(General-Purpose Graphics Processing Unit),現在(zai)代(dai)表性的企業是英偉達,這(zhe)家公司在(zai)上(shang)半年市值(zhi)突破了1萬(wan)億(yi)美(mei)金。歷(li)史上(shang)只有幾家公司突破過1萬(wan)億(yi)美(mei)金,包括(kuo)蘋果(guo)、微(wei)軟、谷歌(ge)和亞(ya)馬遜等。
作(zuo)(zuo)為一家芯片企業,突破1萬(wan)億市值是歷史上第一次。為什(shen)么(me)英偉達(da)能做到這一點?正(zheng)是因為它(ta)抓住了時代機遇。大(da)(da)家都在AI大(da)(da)時代淘金,而(er)英偉達(da)常被稱作(zuo)(zuo)是“賣(mai)鏟子的”,其實它(ta)是賺(zhuan)錢最多的。
從英偉達來看,我認為最具有代表性的,真正讓英偉達進入AI時代算力基座的、奠定基礎的是V100這代GPU。V100已經是幾代以前的GPU了,但非常具有代表性。在一個GPU里面有很多處理器,下圖中一個方塊就是GPU的一個處理器。每個處理器放大來看,都是一樣的架構。在英偉達以V100為代表的處理器中,有幾個主要的單元,其中最主要的是CUDA Core和Tensor Core這兩個單元。
CUDA Core是大家耳熟能詳的,指的是GPU以SIMT,即單指令、多線程的方式運行。在V100這代架構里,英(ying)偉達增(zeng)加(jia)了(le)一(yi)個Tensor Core張量運算(suan)引擎,加(jia)入的主要目的就是為了(le)做(zuo)AI計算(suan),那時(shi)候還(huan)叫深度(du)神經(jing)網絡(luo)計算(suan)。因此(ci),V100這代GPU是非常具有代表性的。
那么具體分析,GPU為什么能夠算得這么快?為什么它的性能會這么好?主要得益于它極高的數據并行度。SIMT中,這個“T”指的(de)是(shi)線程。一個GPU上可(ke)以有海(hai)量的(de)線程,每時每刻都有成(cheng)千上萬的(de)線程可(ke)以同時運行(xing)。
舉一(yi)(yi)(yi)(yi)個(ge)非常(chang)簡單的(de)(de)例(li)子,比方說有兩個(ge)矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen),A矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen)乘(cheng)以B矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen),要得到(dao)一(yi)(yi)(yi)(yi)個(ge)C矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen)結果。在C矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen)中(zhong),每一(yi)(yi)(yi)(yi)個(ge)結果點(dian)(dian)(dian),即下圖(tu)中(zhong)這個(ge)紅色的(de)(de)點(dian)(dian)(dian),它(ta)的(de)(de)計算(suan)就是從A矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen)中(zhong)拿出一(yi)(yi)(yi)(yi)行,B矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen)中(zhong)拿出一(yi)(yi)(yi)(yi)列,把它(ta)們(men)相(xiang)乘(cheng)作一(yi)(yi)(yi)(yi)個(ge)內值就得到(dao)了(le)結果點(dian)(dian)(dian)。在CUDA Core里面,每一(yi)(yi)(yi)(yi)個(ge)線程都負責計算(suan)C矩(ju)(ju)(ju)陣(zhen)(zhen)(zhen)(zhen)(zhen)中(zhong)的(de)(de)一(yi)(yi)(yi)(yi)個(ge)結果點(dian)(dian)(dian),一(yi)(yi)(yi)(yi)個(ge)線程只計算(suan)一(yi)(yi)(yi)(yi)個(ge)結果點(dian)(dian)(dian)。
GPU中成千上萬個線程同時執(zhi)行,所以(yi)一瞬間的功夫,這(zhe)個C矩陣里(li)的所有結(jie)果都(dou)會被計(ji)算出來,這(zhe)就是CUDA Core并行性比較強大的原因。
以(yi)此(ci)做(zuo)(zuo)(zuo)類比,假如(ru)用(yong)一個CPU去做(zuo)(zuo)(zuo),CPU里(li)一個線(xian)(xian)程也(ye)只(zhi)能(neng)計算(suan)一個點,做(zuo)(zuo)(zuo)完一個點再去做(zuo)(zuo)(zuo)第(di)二個、第(di)三個點。但是CPU里(li)可(ke)能(neng)只(zhi)有十個線(xian)(xian)程,沒有這么(me)高的(de)并行性,所以(yi)它的(de)算(suan)力(li)、并行度(du)沒有這么(me)高,不如(ru)GPU計算(suan)那么(me)快。這是在GPU CUDA Core里(li),用(yong)傳(chuan)統的(de)SIMT引擎里(li)做(zuo)(zuo)(zuo)計算(suan)。
那么為什么要加入Tensor Core呢?因為英偉達意識到,即便用CUDA Core那種單點做矩陣的方式,速度還是不夠快。AI對于算力的需求是無止境的,AI模型參數(shu)(shu)在(zai)不(bu)(bu)斷變大,指數(shu)(shu)級上升(sheng)(sheng),對算力(li)需求也是指數(shu)(shu)級上升(sheng)(sheng)。只(zhi)靠英偉達傳統SIMT里(li)(li)的CUDA Core還(huan)不(bu)(bu)夠,所以在(zai)V100這代(dai)GPU里(li)(li),英偉達加入Tensor Engine,即張量運行計算單元(yuan)。
Tensor Core改(gai)變了矩陣計算的方式,按(an)照一個模塊(kuai)、一個模塊(kuai)去(qu)做矩陣,而不是一(yi)個(ge)(ge)點、一(yi)個(ge)(ge)點去做矩陣。在英偉達的(de)(de)Tensor Core里,以(yi)4×4的(de)(de)矩陣塊為一(yi)個(ge)(ge)基(ji)本單位,一(yi)次(ci)可以(yi)計算出一(yi)個(ge)(ge)4×4的(de)(de)矩陣乘上(shang)另外一(yi)個(ge)(ge)4×4矩陣的(de)(de)結(jie)果。這種方式比CUDA Core又(you)要有效很(hen)多,速度、功(gong)耗各方面都(dou)會(hui)提升(sheng)很(hen)多,這是英偉達加(jia)入(ru)Tensor Core的(de)(de)主要原(yuan)因。
剛才我們提到了,英偉達提出用張量引擎做矩陣,通過4×4的矩陣塊來進行運算。那么有沒有可能在更大的塊上做矩陣呢?原則上講,這個“塊”放得越大,一次能夠同時進行計算的數越多,GPU的效率會越高,性能會越好。華為的AI處理器借鑒了(le)同(tong)樣的概念,但是(shi)用更大的矩(ju)陣(zhen)塊去做,它的矩(ju)陣(zhen)塊大小是(shi)16×16,一(yi)次(ci)可(ke)以吃(chi)進256個(ge)數,吐(tu)出一(yi)個(ge)16×16的矩(ju)陣(zhen)結果,所以效率、算力會更高,超過(guo)了(le)英(ying)偉達(da)的Tensor Core。
當然也有其他一些公司在考慮,除了Tensor Core,有沒有其他的方式可以更有效地進行矩陣計算或者類似的計算?實際上是有的,比如谷歌自己的AI專用芯片TPU,特斯拉用在自動駕駛上的專用芯片FSD。無論是谷歌還是特斯拉,他們都采用一種脈動陣列的方式處理。比(bi)起張量(liang)引擎,脈(mo)動(dong)陣列(lie)(lie)的優勢在于在很大規模的計算陣列(lie)(lie)上,增(zeng)加(jia)了計算單(dan)元之間的互(hu)動(dong)、脈(mo)動(dong),數據可(ke)以橫向(xiang)滑(hua),也可(ke)以縱向(xiang)滑(hua)。滑(hua)動(dong)的加(jia)入,使脈(mo)動(dong)陣列(lie)(lie)變得(de)更加(jia)高效,性(xing)能更高。
脈(mo)(mo)動陣(zhen)(zhen)列并(bing)不是一個(ge)新的東西,早在上世紀60年代,就由H. T. Kung教授提(ti)出,只是那個(ge)時候(hou)還(huan)沒有(you)AI。現(xian)在,谷歌和特(te)斯拉發現(xian)這個(ge)結(jie)構用在AI做(zuo)矩(ju)陣(zhen)(zhen)計算(suan)上非常有(you)效。如果你采用脈(mo)(mo)動陣(zhen)(zhen)列的方式來做(zuo)矩(ju)陣(zhen)(zhen)計算(suan),會比由點、小矩(ju)陣(zhen)(zhen)塊或(huo)大矩(ju)陣(zhen)(zhen)塊來做(zuo)并(bing)行都(dou)更加高(gao)效。
二、四項巨大革新,英偉達鞏固AI領域王者地位
這(zhe)樣看來(lai),英(ying)偉(wei)(wei)達似乎處(chu)于非常被動的局面,大家都群起來(lai)挑(tiao)戰(zhan)英(ying)偉(wei)(wei)達。華為用(yong)大矩(ju)陣(zhen)塊做并行,谷(gu)歌、特(te)斯(si)拉用(yong)脈動陣(zhen)列做并行,這(zhe)些方式都比英(ying)偉(wei)(wei)達芯片高效(xiao),所以英(ying)偉(wei)(wei)達面臨著巨(ju)大的挑(tiao)戰(zhan)和壓力。如果應對不利,它可能(neng)會失去在AI領域的王者地位。
面對華為、谷歌等公司的挑戰,英偉達也立刻提起反擊。在V100以后,英偉達又做了A100、H100兩代芯片。我認為,英偉達做了四項非常巨大的革新,從而再次鞏固了自己在AI芯片里王者的地位。
第一項革新是數制。在做矩陣(zhen)計算(suan)(suan)的時(shi)候,計算(suan)(suan)分為整型(xing)數和(he)浮點數,其中浮點數是(shi)(shi)(shi)最(zui)為重要的。從傳統意(yi)義上講,做浮點數計算(suan)(suan)需要遵照國際(ji)標準,國際(ji)上有一個IEEE 754標準定義了浮點數計算(suan)(suan)的規則(ze)。無論是(shi)(shi)(shi)做CPU還(huan)是(shi)(shi)(shi)GPU,都要符合(he)計算(suan)(suan)的標準。
但是到了人工(gong)智能(neng)時代,我們(men)發現這個規則(ze)其實是可以(yi)被打破的。在(zai)人工(gong)智能(neng)里做浮點數的計算,精度(du)(du)差一點,對于最后(hou)的網絡結果影響并不大。在(zai)這個基(ji)礎上(shang),大家提(ti)出是不是可以(yi)把傳統IEEE 754國際(ji)標準放(fang)寬松,計算精度(du)(du)要(yao)求低一點?因為精度(du)(du)越(yue)(yue)低,算力越(yue)(yue)高,功耗越(yue)(yue)省(sheng)。
英偉達推出了自己的算制TF32,所謂TF32并不是32位的,其實只有19位數。英偉達稱,用19位的數來做計算,最后可以達到用32位浮點數來計算的等效網絡結果。最近,英偉達甚至在最新一代GPU中推出了TF8算制,也就是(shi)用8位浮(fu)點數,就可以達到32位的效果。
這(zhe)(zhe)實際上(shang)是(shi)英偉(wei)達的優勢,因為它(ta)既做(zuo)運動員(yuan)又做(zuo)裁判員(yuan)。英偉(wei)達說(shuo)TF8好,那就(jiu)(jiu)是(shi)TF8好,為什么呢?因為幾乎所有(you)的模(mo)型,落地(di)都(dou)會(hui)首先(xian)落在英偉(wei)達的GPU上(shang)。也就(jiu)(jiu)是(shi)說(shuo),即便英偉(wei)達這(zhe)(zhe)個數制(zhi)定義(yi)(yi)得不好,哪怕這(zhe)(zhe)個計算(suan)是(shi)錯(cuo)誤的,但是(shi)因為大家都(dou)是(shi)在它(ta)的基礎上(shang)做(zuo)的,所以它(ta)的錯(cuo)誤也變(bian)成了標準,它(ta)定義(yi)(yi)的東西就(jiu)(jiu)變(bian)成了“事實上(shang)的標準”。
換句話說,即便你有更好的方法,但是因為別人的模型都是在英偉達GPU上先落地,所以它利用先發優勢形成了事實標準。這顯然可以對它所謂的生態起(qi)到(dao)了很(hen)大的“護城河”作(zuo)用。
第二個是稀疏性,這和(he)剛才講的(de)(de)精度有(you)相關(guan)聯的(de)(de)地方。我(wo)們(men)發現在網(wang)絡(luo)(luo)里,雖然參數很(hen)多(duo),但(dan)實(shi)際上不是每一(yi)個參數都那(nei)么關(guan)鍵。當減掉一(yi)些(xie)參數后,網(wang)絡(luo)(luo)性(xing)并不受影響,這就是所謂的(de)(de)稀疏性(xing)。充分利(li)用稀疏性(xing),可以(yi)大量簡化(hua)計算,比方說(shuo)四個參數,減掉兩個參數,就只需要計算兩次,但(dan)是對(dui)網(wang)絡(luo)(luo)精度結果(guo)并沒有(you)太大影響。英偉(wei)達新(xin)的(de)(de)GPU里對(dui)稀疏性(xing)也進行(xing)了支(zhi)持(chi)。當然,英偉(wei)達的(de)(de)支(zhi)持(chi)是有(you)限的(de)(de),必須按照它的(de)(de)規則進行(xing)支(zhi)持(chi)。
第三個方面是互連,我認為這一點尤其是在大模型下是最關鍵的,是英偉達真正的殺手锏。互(hu)連包(bao)括芯片(pian)(pian)跟(gen)芯片(pian)(pian)間的互(hu)連,板(ban)卡跟(gen)板(ban)卡間的互(hu)連,以及服務(wu)器跟(gen)服務(wu)器的互(hu)連。幾年前,英偉達前瞻性(xing)地收購了一家做互(hu)連的公(gong)司Mellanox,也(ye)就有了后面我們統稱(cheng)英偉達NVLink的高(gao)速互(hu)連網絡(luo)。
大模型的參數都是數百上千億,以后可能還會更大,沒有一個單芯片能夠容納這么大的參數,也沒有一個單芯片能夠容納這么大的算力。未來只要是大模型時代,所有的系統都需要由很多芯片互連在一起組成,少則幾百片,多則成千上萬片。這個時候,芯片之間的互連,數據之間的傳輸成為真正的瓶頸。芯片的(de)算(suan)力未必能(neng)用(yong)得滿,但是(shi)(shi)互連網絡上(shang)(shang)數(shu)據的(de)傳(chuan)輸幾乎都(dou)是(shi)(shi)被(bei)耗(hao)盡(jin)的(de)。如果(guo)互連網絡的(de)速(su)度(du)帶寬不夠(gou),芯片上(shang)(shang)的(de)算(suan)力再高也(ye)是(shi)(shi)沒用(yong)的(de),發揮不出來,最后所有數(shu)據都(dou)被(bei)堵在互連的(de)高速(su)公路上(shang)(shang)。
而(er)在互(hu)(hu)連方面,毫(hao)無疑問(wen),英(ying)偉達(da)現在是(shi)世界上(shang)的(de)(de)(de)王者(zhe)。英(ying)偉達(da)互(hu)(hu)連網(wang)絡的(de)(de)(de)設(she)計、速度、軟硬(ying)件的(de)(de)(de)適配性是(shi)最好(hao)的(de)(de)(de),所以(yi)能在大(da)模型下(xia)充(chong)分發(fa)揮(hui)出(chu)算(suan)力的(de)(de)(de)優勢。其他的(de)(de)(de)芯片公司(si)也(ye)許能做(zuo)出(chu)很(hen)高(gao)算(suan)力芯片,但(dan)是(shi)因為沒有這么好(hao)的(de)(de)(de)互(hu)(hu)連網(wang)絡支持,芯片的(de)(de)(de)性能很(hen)難發(fa)揮(hui)出(chu)來。
第四點是內存帶寬。當我們有成千上萬數據的時候,在進行計算之前,首先要有地方存放。如果連存都存不下,數據供不上,何談算力呢?在這方面,英偉達也是走在世界的前列,它率先采用了HBM、HBM2以及現在HBM3E,使用最先進的片上堆疊的2.5D封裝技術,它內(nei)存的(de)帶寬和容量都可(ke)以遠遠超越其他的(de)競(jing)爭對手。
英偉達(da)通(tong)過四項核心技(ji)術的反擊,再次鞏(gong)固了自己在AI市場上“霸主”的地位。過去幾年,雖然面臨著眾多芯片公司的挑戰,但是英偉達(da)的市占率(lv)非常牢固,幾乎沒(mei)有被動(dong)搖。
三、大模型時代軟件生態成為重中之重,開源成為可能的出路
在近年相關的學術論文中,英偉達GPU作為AI芯片的出現頻率遠超其他芯片。統計顯示,在國際頂級會議,使用英偉達來做學術探索的論文與使用其他芯片的論文發表相差20倍。
這是(shi)(shi)(shi)非常關(guan)鍵的(de)(de),因為AI領域不斷(duan)在創(chuang)新(xin)(xin)(xin),不斷(duan)有新(xin)(xin)(xin)東(dong)西(xi)出現,我(wo)們無法預測明年,甚至下個(ge)月會產生(sheng)什么新(xin)(xin)(xin)的(de)(de)東(dong)西(xi)。而(er)這些(xie)新(xin)(xin)(xin)的(de)(de)東(dong)西(xi)都是(shi)(shi)(shi)在學術(shu)界,包括大(da)公司先進的(de)(de)研究實驗室中(zhong)產生(sheng)的(de)(de)。這些(xie)論文中(zhong)的(de)(de)實驗如果是(shi)(shi)(shi)在英偉(wei)達GPU上做的(de)(de),自然落地首選就是(shi)(shi)(shi)英偉(wei)達GPU。
其次,從AI數據中心的占比來看,英偉達無論是在阿里云、AWS,還是其他任何云里,都占據絕對主導地位,占85%以上。過去(qu)幾年,這個比例還在逐漸上升。
這樣的絕對主導地位是什么問題造成的?我個人認為,英偉達最大的優勢還是在于它的軟件生態。一顆芯片(pian)好或不(bu)(bu)好,不(bu)(bu)是取(qu)(qu)決于(yu)(yu)它(ta)的(de)(de)硬件指標(biao),不(bu)(bu)是取(qu)(qu)決于(yu)(yu)它(ta)的(de)(de)裸算力有多高、功耗(hao)有多低,而(er)是取(qu)(qu)決于(yu)(yu)它(ta)好不(bu)(bu)好用(yong)。這(zhe)個芯片(pian)做出來,大家是否(fou)能馬上(shang)用(yong)上(shang),能否(fou)無縫(feng)遷(qian)移,能否(fou)很(hen)愉(yu)快地(di)使用(yong),這(zhe)才是關鍵。而(er)這(zhe)點英偉達(da)做得(de)非常好,它(ta)有數十(shi)年的(de)(de)積累,新的(de)(de)模型幾乎都(dou)會先(xian)在英偉達(da)GPU落地(di),這(zhe)個先(xian)發優勢是非常明顯的(de)(de)。
關鍵中的關鍵就是生態。生(sheng)態不只(zhi)是(shi)幾個模(mo)型、幾個框架的(de)(de)問題,它(ta)是(shi)一個綜合性(xing)的(de)(de)問題,包(bao)括編(bian)程語(yu)言(yan)。編(bian)程語(yu)言(yan),像英(ying)偉達的(de)(de)CUDA生(sheng)態,指(zhi)的(de)(de)是(shi)CUDA編(bian)程的(de)(de)方式、習慣,它(ta)又直接聯系(xi)到芯片(pian)指(zhi)令集的(de)(de)定義(yi)、芯片(pian)的(de)(de)架構定義(yi),一些運(yun)行庫和Runtime(運(yun)行時)也非(fei)常關鍵。
現在做AI、做算法的同事中,其實很少有人會去寫CUDA。大家說英偉達最大的生態是CUDA,我認為不是這樣的,絕大多數人不寫CUDA,但是他們會用英偉達提供的算術庫和運行時。這些(xie)運行(xing)時是(shi)十幾年的(de)(de)積累(lei),對于(yu)每(mei)一種網絡、應(ying)用都有一個專業的(de)(de)庫去(qu)加速,這些(xie)庫是(shi)閉(bi)源的(de)(de),我認(ren)為這才是(shi)英偉達非(fei)常高的(de)(de)護城(cheng)河,而不(bu)是(shi)CUDA編(bian)程環(huan)境。工具(ju)對于(yu)芯(xin)片(pian)的(de)(de)落(luo)地很重要,包(bao)括Debug工具(ju)以及其他(ta)相關的(de)(de)工具(ju),所有這些(xie),構成了一個芯(xin)片(pian)的(de)(de)生態。
早些年芯片(pian)(pian)的(de)(de)生態(tai),有幾個核(he)心(xin)的(de)(de)芯片(pian)(pian)公司,像(xiang)英特爾(er)、英偉達、高通(tong)等(deng)來(lai)定義核(he)心(xin)的(de)(de)芯片(pian)(pian)架構、芯片(pian)(pian)產品。很多(duo)軟件(jian)公司圍(wei)繞這幾個核(he)心(xin)的(de)(de)芯片(pian)(pian)大廠,去(qu)定制領(ling)域專業的(de)(de)軟件(jian)。
過去六七年,這個形勢發生了變化,如雨后春筍般出現了很多芯片公司。下圖列出了過去五六年國內一些做AI芯片的公司,他們圍繞最主流的軟件框架,比如TensorFlow和PyTorch,去做AI芯片或GPGPU芯片。所謂行業變化,一開始,軟件(jian)公(gong)(gong)(gong)司(si)圍繞硬(ying)件(jian)公(gong)(gong)(gong)司(si)做領(ling)域專(zhuan)業的(de)軟件(jian),后來(lai)變成芯(xin)(xin)片公(gong)(gong)(gong)司(si)圍繞一兩個(ge)軟件(jian)框架,做領(ling)域專(zhuan)用(yong)的(de)芯(xin)(xin)片,這(zhe)個(ge)過程(cheng)一直持續到(dao)今天(tian)。本來(lai)這(zhe)個(ge)過程(cheng),如果(guo)這(zhe)樣發展下去,我(wo)認為是有希望的(de)。只要給這(zhe)些芯(xin)(xin)片公(gong)(gong)(gong)司(si)足夠多的(de)時間,他們一定會跑出來(lai),因為行業在發展。
但是半路上殺出一個程咬金,今年突然進入了大模型時代。大模型層出不窮,導致這些做大芯片的芯片公司無所適從。大(da)(da)家(jia)都在做大(da)(da)模型,有(you)這么(me)(me)多做大(da)(da)模型的公(gong)司(si)(si),還(huan)有(you)這么(me)(me)多做AI芯(xin)片(pian)的公(gong)司(si)(si),到(dao)底(di)怎么(me)(me)適(shi)配(pei)?本來大(da)(da)家(jia)只圍繞一兩個(ge)軟件框架去(qu)做還(huan)相對(dui)簡單,現在這么(me)(me)多大(da)(da)模型,我(wo)到(dao)底(di)適(shi)配(pei)誰呢(ni)?大(da)(da)模型公(gong)司(si)(si)會(hui)看,這么(me)(me)多AI芯(xin)片(pian)公(gong)司(si)(si)到(dao)底(di)誰能(neng)打(da),誰能(neng)打(da)我(wo)就跟誰合作(zuo)。當(dang)然,英(ying)偉(wei)達(da)是一個(ge)默認的選擇,除了英(ying)偉(wei)達(da)之外,誰能(neng)打(da)呢(ni)?AI芯(xin)片(pian)公(gong)司(si)(si)也會(hui)問,這些做大(da)(da)模型的公(gong)司(si)(si)誰能(neng)賺錢(qian)呢(ni)?能(neng)賺錢(qian),合作(zuo)才有(you)意義。
這就出現了一個問題,在大模型時代,像英偉達這樣的公司過于領先的時候,就要想別的出路。我能想到一條出路,就是開源,用免費、開放、開源的方式去解決錢、人、時間的問題。
在硬件上比較有代表性的是RISC-V,它是一個開源的CPU指令集和硬件架構。RISC-V是在2010年,由伯克利的David Patterson教授和Krste Asanovic教授從零開始設計的。當時它只定義了50條左右的指令,沒什么影響力,但是隨著時間的發展,開源社區逐漸煥發出蓬勃的生機。現在在CPU領域RISC-V特別火,已經成為繼英特爾x86體系、Arm指令集體系以外的第三極。這個(ge)開源的方式已經被證明,當(dang)對手特別強大的時(shi)候,實(shi)際上是一個(ge)有效(xiao)的方式。
四、GPGPU領域的開源平臺,降低軟件開發難度
RISC-V是在CPU領域開源的方式,那么有沒有可能在GPGPU領域,我們也做一個開源的方式呢?這就是我們團隊推出GPGPU開源平臺的原因。我們把它命名為“青花瓷”,“瓷”就是China。建設青花瓷平臺的目的,是支持大規模的并行通用計算、科學計算、AI計算等。
講得直(zhi)接(jie)(jie)一點(dian),除了打游戲的部分,其他(ta)英偉達(da)GPU卡(ka)能做(zuo)的,我們(men)都(dou)希望能做(zuo),并通過這(zhe)個(ge)平臺提供(gong)給(gei)大(da)家(jia)。我們(men)高度重視與(yu)英偉達(da)GPGPU產(chan)品的兼容性。換句話說(shuo),我們(men)希望終極的效果就是英偉達(da)的GPU卡(ka)能夠跑(pao)的應用(yong),我們(men)一行代碼都(dou)不用(yong)改,直(zhi)接(jie)(jie)在卡(ka)上跑(pao)起來,這(zhe)就是解決生(sheng)態的問(wen)題。
為了建造這樣一種新的GPGPU平臺生態,我們做了三方面的工作。首先是打造了一個開源平臺,也就是“青花瓷”平臺。其次,我們出版了一本專業教材,叫《通用圖形處理器設計 GPGPU編程模型與架構原理》。這是國內第一本,也是目前為止唯一一本專業介紹如何設計一個GPGPU架構的教材。如果你是做GPGPU的芯片工程師,我相信基本上都讀過這個教材。這個教材出版到現在不過一年時間,一直在京東暢銷書排行榜上,可見大家對新的核心技術是非常關注的。最后,我們在上海交通大學打造了一門專門介紹通用圖形處理器設計的課程。
我們的研究包括架構、基礎指令、基礎軟件棧,同時通過開源社(she)區方式(shi)來呈(cheng)現給(gei)大家(jia),下(xia)圖是(shi)“青(qing)花瓷”平(ping)臺(tai)的(de)整體(ti)架(jia)構和核心架(jia)構。一句話總結來說(shuo),英(ying)偉(wei)達(da)有(you)的(de)東西,我們都(dou)有(you)。
這里我要重新強調一下,GPGPU不是SIMD,也不僅僅是SIMT。SIMD叫(jiao)單(dan)指令(ling)、多數據(ju),SIMT叫(jiao)單(dan)指令(ling)、多線程。某種意(yi)義上講(jiang),GPGPU包括(kuo)了SIMD和SIMT的(de)功能,但遠(yuan)遠(yuan)大于SIMD和SIMT。GPGPU有很多復雜的(de)設計,包括(kuo)存儲架構、線程的(de)調(diao)度、線程的(de)管(guan)理(li),包括(kuo)一些分支沖突的(de)解(jie)決(jue),以及復雜的(de)同步(bu)機理(li),這些東西(xi)都是GPGPU的(de)核心,它不是那么簡(jian)單(dan)的(de)一個SIMT和SIMD的(de)問(wen)題(ti)。
我們定義的“青花瓷”指令集分為9個大類,功能組合超過100個,支持應用超過100個,所以通過我們這套自定義指令,能夠實現架(jia)構(gou)通(tong)用性(xing)、性(xing)能先進性(xing)、生態兼(jian)容度。英偉達的核心并不完全是CUDA,而是運行時、運行庫、運行環境、API(應用程序接口)的支持,這些是它的核心競爭力。我們也定義了6大類(lei)API,可(ke)以支持(chi)的復雜函數超過50個。
下圖是(shi)(shi)我(wo)們(men)(men)提供給(gei)大家的(de),在這(zhe)條路上,上面(mian)綠色的(de)東西(xi)(xi)是(shi)(shi)開(kai)(kai)源(yuan)的(de),下面(mian)藍色的(de)東西(xi)(xi)也是(shi)(shi)開(kai)(kai)源(yuan)的(de)。有(you)了這(zhe)套東西(xi)(xi),你(ni)可(ke)以獲得我(wo)們(men)(men)的(de)基(ji)礎指(zhi)令集、基(ji)礎軟件知識(shi),可(ke)以在我(wo)們(men)(men)仿(fang)真模型上運行任何程序(xu)。只(zhi)要你(ni)是(shi)(shi)用CUDA或者(zhe)框架寫的(de)程序(xu),都可(ke)以在上面(mian)運行。當(dang)然如果真的(de)做芯(xin)片(pian),你(ni)需要有(you)RTL Model或者(zhe)FPGA Model,這(zhe)個我(wo)們(men)(men)是(shi)(shi)不開(kai)(kai)源(yuan)的(de),我(wo)們(men)(men)只(zhi)開(kai)(kai)源(yuan)了這(zhe)個仿(fang)真系。
下圖是我(wo)們(men)能夠(gou)支持的(de)不同(tong)類型的(de)程序(xu)和(he)函數,可以看出,我(wo)們(men)這個平臺不只(zhi)是為AI去做(zuo)的(de),甚至跟AI沒有特別大的(de)關(guan)系。AI只(zhi)是我(wo)們(men)能夠(gou)支持應用(yong)中的(de)一部分,有很多很多的(de)算子、應用(yong)都(dou)不是AI,但是它可能用(yong)在科(ke)學計算、金(jin)融活動(dong)以及人(ren)類生活的(de)方方面面。
下圖這些也是(shi)(shi)我們能(neng)夠支(zhi)持的,是(shi)(shi)另一類應用。
最后這一類應用是跟AI有關系的。現在只要是推理網絡,我們的平臺都能完全跑得通;對于訓練(lian)網(wang)絡(luo),不(bu)是(shi)(shi)跑(pao)(pao)(pao)(pao)不(bu)通,而(er)是(shi)(shi)時間(jian)太長了(le)跑(pao)(pao)(pao)(pao)不(bu)完,但是(shi)(shi)簡單的(de)(de)訓練(lian)像Tranformer是(shi)(shi)可以跑(pao)(pao)(pao)(pao)通的(de)(de),并且不(bu)用(yong)改一(yi)(yi)行代碼。我(wo)(wo)們(men)(men)曾經跟某個(ge)(ge)大(da)廠有一(yi)(yi)些合作和討論(lun),為了(le)看這(zhe)(zhe)個(ge)(ge)平臺的(de)(de)兼容性如何,所謂耳聽為虛、眼(yan)見為實。他們(men)(men)丟給我(wo)(wo)們(men)(men)10個(ge)(ge)應用(yong),我(wo)(wo)們(men)(men)一(yi)(yi)行代碼不(bu)改,直接丟在平臺上跑(pao)(pao)(pao)(pao),當場(chang)跑(pao)(pao)(pao)(pao)通了(le)8個(ge)(ge),還有2個(ge)(ge)調試(shi)一(yi)(yi)下也(ye)能跑(pao)(pao)(pao)(pao)通,這(zhe)(zhe)說明我(wo)(wo)們(men)(men)對于生態(tai)的(de)(de)兼容性是(shi)(shi)非常(chang)強大(da)的(de)(de)。這(zhe)(zhe)也(ye)是(shi)(shi)我(wo)(wo)們(men)(men)做這(zhe)(zhe)個(ge)(ge)平臺最主(zhu)要的(de)(de)目的(de)(de),我(wo)(wo)們(men)(men)不(bu)會做任何一(yi)(yi)款芯片,這(zhe)(zhe)個(ge)(ge)平臺就是(shi)(shi)給大(da)家提(ti)供一(yi)(yi)個(ge)(ge)參考(kao)設計。
如果你是在學校、在科研院所做基礎研究,可以結合我們的書、課程進行基礎研究。青花瓷可以作為一個實踐的平臺,開放、免費地給大家使用,也支持在這個基礎上做一些突破創新。我們什么都可以做,但是我們唯一不做的就是收費,我們不收任何費用,完全免費開放給大家使用。
剛才說的(de)東西都在我們(men)的(de)網(wang)站(zhan)和代(dai)碼(ma)倉庫上,如果大家有興趣可以(yi)下(xia)載(zai)。網(wang)站(zhan)上有非常詳細(xi)的(de)使(shi)用(yong)說明(ming),只要(yao)根(gen)據說明(ming)一步(bu)一步(bu)去(qu)做,就可以(yi)試著去(qu)跑(pao)(pao)一些(xie)網(wang)絡,跑(pao)(pao)一下(xia)最新的(de)大模型。這(zhe)個開(kai)源項目是不斷(duan)累積的(de)過程,需要(yao)持續投入和漫長積累,唯(wei)有穿越行業(ye)的(de)周(zhou)期(qi)性長期(qi)存在,才有創造新生命的(de)可能。
RISC-V做了(le)十(shi)多(duo)年才有今日的(de)成就,我們(men)的(de)GPGPU平臺是(shi)一(yi)個新的(de)生命(ming),去年才剛剛發布,到現在不(bu)過一(yi)年的(de)時間。我們(men)希望(wang)堅持(chi)十(shi)年、十(shi)五年的(de)時間,就有機會(hui)成功(gong)。有任何問(wen)題可(ke)以聯系我們(men),這是(shi)聯系方(fang)式,謝謝大家!
青花瓷網站://gpgpuarch.org
聯系方式:liang-xy@cs.sjtu.edu.cn
以上是梁曉峣演講內容的完整整理。