
芯東西(公眾號:aichip001)
編輯 | ?GACS
9月14日~15日,2023全球AI芯片(pian)(pian)峰會(GACS 2023)在深圳南山圓滿舉行。在首日開(kai)幕式上,后摩智能聯合(he)創始人、研發副總裁陳(chen)亮分享了題為(wei)《存算一(yi)體:顛覆性架(jia)構重塑AI芯片(pian)(pian)》的主題演講。
陳(chen)亮談道,面向大模型時代(dai)的(de)新需(xu)求,后(hou)模智能(neng)正(zheng)計劃推出擴展大模型應(ying)用(yong)邊界的(de)第二(er)代(dai)天璇架(jia)構(gou),以及基于這一整(zheng)體性能(neng)、效率與靈活(huo)性更強架(jia)構(gou)的(de)后(hou)摩鴻途H50芯片,預計在2024年正(zheng)式推出。
創(chuang)立(li)于(yu)2020年的(de)(de)(de)后(hou)摩智能(neng)(neng)是存算(suan)一(yi)(yi)體芯(xin)片(pian)公司之一(yi)(yi)。公司于(yu)2023年5月正式(shi)推出存算(suan)一(yi)(yi)體智駕芯(xin)片(pian)后(hou)摩鴻(hong)途(tu)?H30,物理算(suan)力達到256TOPS,典型功(gong)耗達到35W。根據后(hou)摩實驗室及MLPerf公開測試結果,在ResNet50性能(neng)(neng)功(gong)耗對比(bi)上,采取12nm制程的(de)(de)(de)H30相比(bi)某國際芯(xin)片(pian)巨頭的(de)(de)(de)7nm同類芯(xin)片(pian)性能(neng)(neng)提升(sheng)超(chao)2倍,功(gong)耗減少超(chao)50%。
H30和(he)H50系列背(bei)后(hou)是后(hou)摩(mo)智(zhi)能自研的IPU架(jia)構,陳亮談(tan)道(dao),該架(jia)構設(she)計遵循“中庸(yong)之道(dao)”。如果(guo)將集中式計算(suan)架(jia)構比(bi)作居住面積(ji)和(he)擴展(zhan)性(xing)有限的“中式庭院(yuan)”,那么分布式計算(suan)架(jia)構類(lei)似于“高層公寓”,容納(na)性(xing)好但溝通性(xing)不足。
后摩智能(neng)的IPU架(jia)構選擇(ze)在(zai)兩(liang)者之間(jian)尋求平衡點:在(zai)計算(suan)方(fang)(fang)(fang)面(mian),通過(guo)多核(he)、多硬件線(xian)程實(shi)現計算(suan)效(xiao)率與(yu)算(suan)力靈(ling)活(huo)擴展;在(zai)存儲方(fang)(fang)(fang)面(mian),通過(guo)多級數(shu)據(ju)緩存實(shi)現高效(xiao)數(shu)據(ju)搬(ban)運與(yu)復用;在(zai)數(shu)據(ju)傳輸方(fang)(fang)(fang)面(mian),通過(guo)雙環(huan)拓(tuo)撲專用總線(xian)實(shi)現靈(ling)活(huo)數(shu)據(ju)傳輸與(yu)共享。
以下為陳亮的演講實錄:
尊(zun)敬的各位嘉(jia)賓、各位老師(shi):大(da)家下午好(hao)!
后摩智能是一(yi)(yi)家(jia)(jia)做存(cun)算(suan)一(yi)(yi)體(ti)AI芯(xin)片的初創(chuang)公(gong)司。我們(men)在(zai)創(chuang)業過程中(zhong),經常會被大家(jia)(jia)問到一(yi)(yi)個問題:既(ji)然存(cun)算(suan)一(yi)(yi)體(ti)技術優點這么多,那為什么國內或(huo)者國外的成熟大公(gong)司他們(men)不做呢?我們(men)的同事們(men)也(ye)從不同的角(jiao)度給出(chu)了一(yi)(yi)些(xie)解答。
一、AI計算面臨三大現狀,存算一體技術帶來新探索
從我(wo)的角度來看,我(wo)們希望(wang)從真(zhen)正的客戶需求(qiu)、產業的痛點,以及結合(he)自身(shen)的特點出發,做出一些真(zhen)正有意義、有價值的創新。我(wo)們看到AI計算的現(xian)狀(zhuang):
首(shou)先(xian)是(shi)算(suan)法對算(suan)力的要求越來越高,但是(shi)AI芯片的計算(suan)效率還(huan)不夠,這(zhe)個效率包(bao)括了能(neng)(neng)效比(bi)和(he)面(mian)效比(bi),也就是(shi)單(dan)(dan)位(wei)功(gong)耗所能(neng)(neng)提供(gong)的算(suan)力和(he)性能(neng)(neng),以及單(dan)(dan)位(wei)面(mian)積能(neng)(neng)提供(gong)的性能(neng)(neng)。
第二,系統的(de)帶(dai)寬(kuan)瓶頸會導致計算資(zi)(zi)源的(de)利(li)用效率(lv)降(jiang)低,如何有效地利(li)用帶(dai)寬(kuan),提高計算資(zi)(zi)源的(de)利(li)用效率(lv),會成為更大的(de)挑(tiao)戰。
第三(san),算(suan)法(fa)還(huan)遠未達到收斂的(de)(de)程度(du)。各(ge)種各(ge)樣新的(de)(de)算(suan)法(fa)還(huan)層出不窮,雖然最近Transformer類的(de)(de)計(ji)算(suan)有一(yi)統江湖之(zhi)勢(shi),但是(shi)大家知道,真正端(duan)到端(duan)的(de)(de)AI計(ji)算(suan)所涉(she)及到的(de)(de)計(ji)算(suan)范式還(huan)是(shi)非(fei)常豐富的(de)(de)。如何能(neng)夠在一(yi)個處(chu)理(li)器(qi)內部(bu)完(wan)成端(duan)到端(duan)的(de)(de)AI計(ji)算(suan),從而避免AI計(ji)算(suan)在不同(tong)的(de)(de)處(chu)理(li)器(qi)核乃至不同(tong)芯(xin)片之(zhi)間的(de)(de)數(shu)(shu)據(ju)傳輸(shu),進而減少(shao)數(shu)(shu)據(ju)的(de)(de)搬運和存儲的(de)(de)開銷也(ye)是(shi)一(yi)個難題。
基于此,我(wo)們(men)希望借(jie)助獨特的存算一體(ti)技術(shu),給大家帶來一些AI計算的不(bu)同探索。
先簡單介紹一下我們公司,后摩智能是2020年(nian)底成立,2021年(nian)初正式(shi)運營。
2021年(nian)8月,我們(men)(men)首款(kuan)技術樣片完成了設計(ji)和流(liu)片,并且完成了首款(kuan)量產(chan)產(chan)品的(de)產(chan)品定義。2022年(nian)3月,我們(men)(men)的(de)技術樣片回片跑通了自動駕駛的(de)算(suan)法,完成了存算(suan)一(yi)(yi)體的(de)技術驗證(zheng)。同(tong)年(nian)10月,我們(men)(men)首款(kuan)量產(chan)產(chan)品后摩鴻途?H30設計(ji)完成,進(jin)行投片,2023年(nian)5月發布了第一(yi)(yi)個量產(chan)產(chan)品,后摩鴻途?H30。
這就是我們今年5月份發布的(de)后摩鴻途?H30存算(suan)一體的(de)大(da)算(suan)力(li)AI芯片(pian),大(da)家在(zai)外(wai)面展臺也可以(yi)看到它的(de)實(shi)物(wu),它的(de)算(suan)力(li)是256TOPS。這里面說(shuo)的(de)算(suan)力(li)是物(wu)理算(suan)力(li),而不是稀疏化的(de)算(suan)力(li),典型的(de)功耗(hao)只有35W,這個功耗(hao)也是在(zai)跑實(shi)際算(suan)法過(guo)程中(zhong)實(shi)測出(chu)來的(de)。
以上是對我(wo)們(men)公(gong)司(si)(si)和產品的(de)(de)簡(jian)單介(jie)紹,下面從存算一(yi)體(ti)技術、AI處理器架構和軟(ruan)件工具鏈(lian)這三(san)個方面來介(jie)紹一(yi)下我(wo)們(men)公(gong)司(si)(si)成立兩年多來的(de)(de)工作。
二、基于定制化電路結構,實現高效存內并行計算
首先介(jie)紹一(yi)下什么是(shi)存算(suan)一(yi)體。概(gai)念(nian)上講,存算(suan)一(yi)體就是(shi)在存儲單元的(de)(de)內部(bu),完成部(bu)分(fen)或者全(quan)部(bu)的(de)(de)計算(suan),它是(shi)解(jie)決芯片(pian)性(xing)能瓶(ping)頸,提高能效比的(de)(de)有效技術(shu)手(shou)段。
大家(jia)知(zhi)道,在(zai)AI計(ji)算過程中,大量(liang)的數(shu)(shu)據(ju)在(zai)存(cun)儲單(dan)元和計(ji)算單(dan)元之(zhi)間(jian)交互,數(shu)(shu)據(ju)一(yi)行(xing)一(yi)行(xing)地(di)從存(cun)儲器中讀取出來,送到(dao)計(ji)算單(dan)元中進行(xing)計(ji)算,再一(yi)行(xing)行(xing)地(di)把(ba)結果寫到(dao)存(cun)儲單(dan)元當中。這(zhe)樣(yang)做的話,訪存(cun)的功耗會(hui)急劇(ju)增加,并且會(hui)發生計(ji)算單(dan)元等待(dai)輸入數(shu)(shu)據(ju)的情況,從而降(jiang)低了計(ji)算單(dan)元的利用效率。相比(bi)于卷積為(wei)主的神經網絡(luo)模型,以矩陣乘為(wei)主的Transformer類的計(ji)算,它的訪存(cun)和計(ji)算比(bi)例(li)更大,這(zhe)個問題會(hui)更加嚴重(zhong)。
這張圖(tu)就(jiu)是我(wo)們存算一(yi)(yi)(yi)(yi)體電(dian)路(lu)的(de)(de)(de)架構框(kuang)圖(tu)。淺色的(de)(de)(de)部(bu)分是標準的(de)(de)(de)SRAM電(dian)路(lu),深色的(de)(de)(de)部(bu)分是我(wo)們在它旁(pang)邊加(jia)入了(le)一(yi)(yi)(yi)(yi)些定(ding)制化的(de)(de)(de)電(dian)路(lu)結構,包括(kuo)Activation Driver、乘法(fa)器(qi)、加(jia)法(fa)樹和累加(jia)器(qi)等(deng)等(deng)。這些定(ding)制化的(de)(de)(de)電(dian)路(lu)結構和傳統的(de)(de)(de)SRAM電(dian)路(lu)整(zheng)合在一(yi)(yi)(yi)(yi)起,就(jiu)可以實(shi)現高效的(de)(de)(de)存內并(bing)行計算。存儲(chu)單元(yuan)內部(bu)的(de)(de)(de)數據可以在同一(yi)(yi)(yi)(yi)時(shi)刻一(yi)(yi)(yi)(yi)起讀(du)出,這相(xiang)比于一(yi)(yi)(yi)(yi)行一(yi)(yi)(yi)(yi)行的(de)(de)(de)讀(du)取方式,極(ji)大(da)地提(ti)高了(le)并(bing)行性。
計算電路(lu)緊挨著存儲(chu)(chu)單(dan)元,數據(ju)被(bei)讀取(qu)出來之(zhi)后,馬上就可以在原(yuan)地(di)參與乘加(jia)計算,數據(ju)在存儲(chu)(chu)單(dan)元和計算單(dan)元之(zhi)間(jian)的(de)傳(chuan)輸開銷(xiao)也就相應地(di)減少了。
計算(suan)單(dan)元(yuan)方面,我們的(de)定制(zhi)化(hua)電路(lu)(lu)和(he)存儲(chu)(chu)(chu)單(dan)元(yuan)的(de)Bit Cell(存儲(chu)(chu)(chu)單(dan)元(yuan))電路(lu)(lu)完全融(rong)合在(zai)一起,帶來(lai)了更規整的(de)電路(lu)(lu)結(jie)構,因而(er)有(you)更緊湊的(de)電路(lu)(lu)設(she)計,電路(lu)(lu)面積也就相應減少了。這里面的(de)定制(zhi)化(hua)電路(lu)(lu),不(bu)管是存儲(chu)(chu)(chu)電路(lu)(lu),還(huan)是乘法、加法、累(lei)加等等,都是純數字的(de)設(she)計,不(bu)會有(you)任何(he)計算(suan)的(de)誤差。
因為我們面(mian)向的(de)市場是自(zi)(zi)動駕(jia)駛(shi),所(suo)以自(zi)(zi)然(ran)少不(bu)了(le)車規方(fang)面(mian)的(de)考慮,除了(le)標(biao)準SRAM模式下(xia)的(de)Memory BIST,我們還(huan)(huan)設計(ji)(ji)了(le)用于計(ji)(ji)算模式的(de)CIM BIST機制,CIM是Computing In Memory的(de)首(shou)字母簡稱。我們還(huan)(huan)通過冗余設計(ji)(ji),以及加入行和(he)(he)列修復(fu)電(dian)路(lu)(lu),提高量產良率和(he)(he)可靠性(xing)。有了(le)錯誤檢測機制和(he)(he)冗余設計(ji)(ji),還(huan)(huan)可以在電(dian)路(lu)(lu)空閑(xian)時,通過軟件的(de)方(fang)式檢測并修復(fu)電(dian)路(lu)(lu)中(zhong)可能出現(xian)的(de)錯誤。我們還(huan)(huan)改變了(le)傳統SRAM中(zhong)Bit Cell的(de)電(dian)路(lu)(lu),消除了(le)6T Bit Cell里(li)的(de)競(jing)爭現(xian)象,進一步提高了(le)可靠性(xing)和(he)(he)穩定(ding)性(xing)。
這就(jiu)是我們已經發布的(de)(de)后摩鴻途(tu)?H30芯(xin)片(pian)里所采(cai)用的(de)(de)存(cun)算一體電路(lu)的(de)(de)一些規格參數,采(cai)用的(de)(de)是12nm工藝(yi),單(dan)個AI核(he)內的(de)(de)存(cun)儲容量(liang)已經到(dao)(dao)了MB級別(bie),在INT8全精(jing)度條件下能效(xiao)比是30到(dao)(dao)150TOPS/W,30到(dao)(dao)150TOPS/W有(you)一個范圍,是因為跟輸入數據(ju)相關的(de)(de)pattern 。面(mian)效(xiao)比大(da)于4TOPS每(mei)平方毫(hao)米,這是傳統電路(lu)的(de)(de)3倍以上。我們還支持軟(ruan)硬件修復功能。
目前我們已(yi)經(jing)在12nm、16nm、22nm、28nm工藝下進行過流(liu)片(pian)測(ce)(ce)試,7nm的測(ce)(ce)試樣片(pian)也(ye)已(yi)經(jing)流(liu)片(pian),明年會推出量(liang)產產品。
三、自研IPU架構,探尋集中式與分布式計算的“中庸之道”
有了(le)這么好的存算(suan)IP核,怎么把它充分利用好,就(jiu)是考驗AI處理(li)器(qi)架(jia)構和芯片設計能(neng)力(li)的問題了(le)。
為此(ci),后摩(mo)智(zhi)能(neng)(neng)基于(yu)存算一體,專(zhuan)為萬物智(zhi)能(neng)(neng)而設計了IPU(Intelligence Processing Unit),并規(gui)劃(hua)了三(san)代(dai)IPU架構:第一代(dai)命名為天樞架構,專(zhuan)門為智(zhi)能(neng)(neng)駕駛打造的(de)(de);第二代(dai)天璇架構,可以覆蓋更多的(de)(de)場(chang)景(jing),從成本(ben)、面積、功(gong)耗都非(fei)常(chang)敏感的(de)(de)終端場(chang)景(jing),到自動(dong)駕駛,再(zai)到大模型等云端場(chang)景(jing)都可以覆蓋;第三(san)代(dai)天璣架構的(de)(de)IPU,為通用人工智(zhi)能(neng)(neng)打造的(de)(de)IPU。
下(xia)面我(wo)將(jiang)帶大家(jia)了解(jie)一下(xia)我(wo)們的IPU架構(gou)設計(ji)。
首先是我們怎么(me)思考AI處理(li)(li)器這(zhe)件事的(de)(de)(de)(de)(de)。在早期的(de)(de)(de)(de)(de)時候(hou),AI芯(xin)片通(tong)過堆積大量的(de)(de)(de)(de)(de)計(ji)(ji)(ji)算(suan)(suan)(suan)資(zi)源(yuan),以提(ti)高并(bing)(bing)行性(xing),從而提(ti)高性(xing)能。其(qi)典型的(de)(de)(de)(de)(de)代表是左圖中特斯拉的(de)(de)(de)(de)(de)FSD,采(cai)用集中式的(de)(de)(de)(de)(de)存儲和計(ji)(ji)(ji)算(suan)(suan)(suan)架構(gou),可以達到很好的(de)(de)(de)(de)(de)性(xing)能提(ti)升。但(dan)是對于算(suan)(suan)(suan)力要求(qiu)更大,靈活性(xing)要求(qiu)更高的(de)(de)(de)(de)(de)場(chang)景,如果只靠單(dan)純(chun)的(de)(de)(de)(de)(de)堆砌更多的(de)(de)(de)(de)(de)計(ji)(ji)(ji)算(suan)(suan)(suan)資(zi)源(yuan),到了一定程度后,由于物(wu)理(li)(li)實現的(de)(de)(de)(de)(de)限(xian)(xian)制,或(huo)者輸入輸出數據(ju)的(de)(de)(de)(de)(de)規模(mo)等方面的(de)(de)(de)(de)(de)限(xian)(xian)制,計(ji)(ji)(ji)算(suan)(suan)(suan)資(zi)源(yuan)的(de)(de)(de)(de)(de)利用效率(lv)會急(ji)劇降低,因(yin)為單(dan)個任務計(ji)(ji)(ji)算(suan)(suan)(suan)并(bing)(bing)行性(xing)已經(jing)無法匹配計(ji)(ji)(ji)算(suan)(suan)(suan)資(zi)源(yuan)的(de)(de)(de)(de)(de)并(bing)(bing)行性(xing)了。
我把集中式計算和存儲架構(gou)類似為建筑設計里面的(de)中式庭(ting)院,向(xiang)內圍合形成(cheng)一(yi)個(ge)小院子,各種功能集于一(yi)身,使得人與人、人與自然可以高(gao)效地溝通,但問題(ti)是院落面積終究是有(you)限(xian)的(de),能容納的(de)居住(zhu)者(zhe)數量也就(jiu)有(you)限(xian),而且設計建造這樣的(de)庭(ting)院開(kai)銷和難度很大,因此(ci)可擴展性差。
這(zhe)時候(hou)一個自(zi)然的(de)(de)想法(fa)就(jiu)是(shi)利用(yong)多核(he),或(huo)者硬件多線程的(de)(de)方(fang)式(shi),如右中(zhong)間(jian)的(de)(de)這(zhe)個Tenstorrent Wormhole所示,這(zhe)張圖和(he)特斯拉的(de)(de)FST都出(chu)于一個人(ren)之手,這(zhe)個人(ren)叫Jim Keller。他把算力(li)很(hen)大的(de)(de)核(he)拆成若干個小核(he)。這(zhe)樣做到(dao)極致,就(jiu)是(shi)用(yong)眾多的(de)(de)CPU小核(he),在旁邊(bian)配上小塊(kuai)的(de)(de)SRAM,組成一個二維(wei)陣列,業界(jie)也有人(ren)稱這(zhe)種架構為(wei)“近存計算”。
這(zhe)(zhe)(zhe)樣(yang)做的好(hao)處是(shi)(shi)對(dui)(dui)物理實現非常友好(hao),并且提(ti)供了非常靈活的編程性。但(dan)一個(ge)問(wen)題(ti)就(jiu)(jiu)是(shi)(shi)對(dui)(dui)于(yu)終(zhong)端推理,尤其是(shi)(shi)自動駕駛(shi)這(zhe)(zhe)(zhe)樣(yang)相(xiang)對(dui)(dui)特定的應用場景,能效比(bi)和面(mian)效比(bi)比(bi)大核的形式差(cha)一些。這(zhe)(zhe)(zhe)種分布式的計(ji)算和存儲結構(gou),可以(yi)類(lei)比(bi)為(wei)建筑(zhu)設計(ji)里面(mian)西方的高層公寓,采(cai)用獨立簡單的小(xiao)單元,在(zai)三維空間上可以(yi)很(hen)好(hao)的擴展,能夠容納更(geng)多的人(ren),但(dan)因為(wei)單元相(xiang)對(dui)(dui)封閉,人(ren)和人(ren)之(zhi)間的溝通就(jiu)(jiu)會比(bi)較(jiao)差(cha)了。
所以(yi)我(wo)們(men)認為在(zai)單(dan)核(he)或單(dan)線程可以(yi)調(diao)度(du)的(de)(de)(de)(de)計(ji)算(suan)(suan)資源,與真實(shi)的(de)(de)(de)(de)可以(yi)利(li)用的(de)(de)(de)(de)計(ji)算(suan)(suan)資源之間(jian),存在(zai)一條Roofline的(de)(de)(de)(de)曲線關系。我(wo)們(men)的(de)(de)(de)(de)設(she)計(ji)邏(luo)輯就是找(zhao)到(dao)這(zhe)條Roofline曲線的(de)(de)(de)(de)拐(guai)點,當遇到(dao)拐(guai)點的(de)(de)(de)(de)時(shi)候,再通(tong)過(guo)多(duo)(duo)核(he)或者多(duo)(duo)線程的(de)(de)(de)(de)方(fang)式來(lai)擴(kuo)展(zhan)算(suan)(suan)力。這(zhe)樣(yang)的(de)(de)(de)(de)設(she)計(ji)理念類似于融(rong)合了東西方(fang)建筑的(de)(de)(de)(de)特點,先(xian)設(she)計(ji)一個簡單(dan)優美的(de)(de)(de)(de)庭(ting)院,再保障(zhang)了計(ji)算(suan)(suan)資源利(li)用效率的(de)(de)(de)(de)同時(shi),再通(tong)過(guo)高層公寓的(de)(de)(de)(de)方(fang)式,在(zai)三維(wei)空間(jian)上(shang)靈活擴(kuo)展(zhan)算(suan)(suan)力。
這(zhe)張圖就是(shi)我們已經推(tui)出的(de)(de)(de)H30芯(xin)片里天樞(shu)架構(gou)IPU的(de)(de)(de)架構(gou)框(kuang)圖。大家(jia)可(ke)以(yi)(yi)看到我們的(de)(de)(de)芯(xin)片里有4個(ge)(ge)(ge)IPU核,都掛在(zai)系統(tong)總線NoC上(shang),每(mei)(mei)個(ge)(ge)(ge)核是(shi)完全一(yi)樣(yang)的(de)(de)(de)設計(ji)(ji)。每(mei)(mei)個(ge)(ge)(ge)核又由4個(ge)(ge)(ge)Tile組(zu)(zu)成,每(mei)(mei)個(ge)(ge)(ge)Tile就對應(ying)了一(yi)個(ge)(ge)(ge)硬件線程。在(zai)Tile內(nei)部,包(bao)括了一(yi)個(ge)(ge)(ge)CPU、Tensor Engine、Special Function Unit、Vector Processor和(he)多通道DMA。其中Tensor Engine就是(shi)由我們的(de)(de)(de)存(cun)算電路和(he)一(yi)個(ge)(ge)(ge)Feature Buffer,還有相應(ying)的(de)(de)(de)控(kong)制電路組(zu)(zu)成。這(zhe)些計(ji)(ji)算單(dan)元(yuan)全部在(zai)CPU的(de)(de)(de)調度之下(xia)進行(xing)(xing)運行(xing)(xing),CPU除了可(ke)以(yi)(yi)調度不同的(de)(de)(de)計(ji)(ji)算單(dan)元(yuan)之外,還可(ke)以(yi)(yi)進行(xing)(xing)一(yi)些簡單(dan)的(de)(de)(de)靈活的(de)(de)(de),但(dan)是(shi)算力要求不高的(de)(de)(de)計(ji)(ji)算。
這樣的(de)(de)架構使(shi)得AI計(ji)算不(bu)但不(bu)用(yong)在多個處理器(qi),例(li)如CPU、GPU、DSP之間分配(pei)任務,甚至(zhi)數據不(bu)用(yong)出AI核(he),就可以完成端(duan)(duan)到(dao)端(duan)(duan)的(de)(de)AI計(ji)算。
從Memory Hierarchy的(de)(de)(de)(de)結構來看,整個系統包(bao)括了4級(ji)緩存(cun),最外(wai)的(de)(de)(de)(de)緩存(cun)是(shi)(shi)片(pian)(pian)外(wai)的(de)(de)(de)(de)DDR,片(pian)(pian)內(nei)(nei)的(de)(de)(de)(de)第一(yi)(yi)級(ji)緩存(cun)我們叫L2緩存(cun),是(shi)(shi)所有(you)的(de)(de)(de)(de)CPU芯片(pian)(pian)都可以(yi)(yi)共享(xiang)的(de)(de)(de)(de)緩存(cun)。L1的(de)(de)(de)(de)緩存(cun)就(jiu)是(shi)(shi)Core內(nei)(nei)部一(yi)(yi)個共享(xiang)存(cun)儲資源,Core內(nei)(nei)部所有(you)的(de)(de)(de)(de)計(ji)(ji)算(suan)資源都可以(yi)(yi)共享(xiang)這個Shared Memory。L0的(de)(de)(de)(de)緩存(cun)就(jiu)是(shi)(shi)CIM,也就(jiu)是(shi)(shi)存(cun)算(suan)單(dan)元。這四級(ji)的(de)(de)(de)(de)緩存(cun)都是(shi)(shi)可以(yi)(yi)被軟件分(fen)配和管理(li),這樣的(de)(de)(de)(de)設計(ji)(ji)使(shi)得軟件有(you)更(geng)大的(de)(de)(de)(de)空間(jian)(jian)對不同類型的(de)(de)(de)(de)任(ren)務進行存(cun)儲空間(jian)(jian)的(de)(de)(de)(de)分(fen)配,從而減少數據搬運,并(bing)且更(geng)好地利用數據復用性。
說過了存和(he)(he)算,這個(ge)(ge)(ge)架(jia)構里還有一個(ge)(ge)(ge)重要的(de)(de)(de)(de)部(bu)分就(jiu)(jiu)是數(shu)(shu)(shu)(shu)據(ju)(ju)的(de)(de)(de)(de)傳(chuan)(chuan)輸(shu)。就(jiu)(jiu)像我(wo)們(men)人(ren)和(he)(he)人(ren)之間需(xu)要更(geng)好的(de)(de)(de)(de)溝(gou)通(tong)一樣,計算單元之間,也需(xu)要非常(chang)靈(ling)活的(de)(de)(de)(de)共享數(shu)(shu)(shu)(shu)據(ju)(ju)和(he)(he)消息(xi)。因此(ci),我(wo)們(men)設計了專用(yong)的(de)(de)(de)(de)數(shu)(shu)(shu)(shu)據(ju)(ju)傳(chuan)(chuan)輸(shu)總線(xian)(xian),有了這個(ge)(ge)(ge)傳(chuan)(chuan)輸(shu)數(shu)(shu)(shu)(shu)據(ju)(ju)總線(xian)(xian),就(jiu)(jiu)可(ke)以靈(ling)活的(de)(de)(de)(de)在(zai)各(ge)個(ge)(ge)(ge)Tile,以及各(ge)個(ge)(ge)(ge)Core之間建立高速的(de)(de)(de)(de)直接的(de)(de)(de)(de)數(shu)(shu)(shu)(shu)據(ju)(ju)傳(chuan)(chuan)輸(shu)通(tong)道(dao),而不(bu)需(xu)要通(tong)過系統的(de)(de)(de)(de)總線(xian)(xian)和(he)(he)緩存了。通(tong)過自定義的(de)(de)(de)(de)總線(xian)(xian),各(ge)Tile和(he)(he)各(ge)Core之間,可(ke)以非常(chang)靈(ling)活地組成(cheng)不(bu)同的(de)(de)(de)(de)拓(tuo)撲結(jie)構。我(wo)們(men)的(de)(de)(de)(de)天樞架(jia)構IPU采用(yong)雙(shuang)環的(de)(de)(de)(de)拓(tuo)撲結(jie)構,四(si)個(ge)(ge)(ge)Tile組成(cheng)第(di)一級(ji)的(de)(de)(de)(de)環,四(si)個(ge)(ge)(ge)核又(you)組成(cheng)第(di)二級(ji)的(de)(de)(de)(de)環。
AI計(ji)算里數(shu)(shu)據復(fu)(fu)用是一個很重要(yao)的(de)特性,利用數(shu)(shu)據的(de)復(fu)(fu)用性可以減少(shao)片外帶(dai)寬的(de)壓力。因此我們設計(ji)了多播的(de)傳(chuan)輸機制,也就是說(shuo)一個Tile里的(de)數(shu)(shu)據,可以通過一次(ci)DMA傳(chuan)輸,廣播給需(xu)要(yao)這個Tile數(shu)(shu)據的(de)所有的(de)其他(ta)的(de)Tile,而不需(xu)要(yao)多次(ci)重復(fu)(fu)地從同一個地址(zhi)去讀(du)取同樣的(de)數(shu)(shu)據。
多核加多播的傳輸機制(zhi),帶來的一個問題(ti)就是數(shu)據和(he)消(xiao)息的同步問題(ti)。例如Tile 0把數(shu)據傳給Tile1、2、3,然后四個Tile一起(qi)開始一次計算,這類的數(shu)據同步問題(ti)其實是多線程編(bian)程里面經常會遇到的問題(ti)。我們通(tong)過(guo)專(zhuan)用的消(xiao)息傳遞通(tong)道和(he)同步機制(zhi),可以讓四個Tile乃至四個核(Core)在收到消(xiao)息的同一時間(jian)一起(qi)開始工作。
大家(jia)看(kan)到,因(yin)為我們(men)第一(yi)(yi)(yi)代(dai)IPU和(he)H30芯片所用的核(he)數和(he)Tile的數量都比較少,14個(ge),它形(xing)成(cheng)了(le)環形(xing)拓撲結構。但(dan)如果我們(men)根據(ju)算(suan)力的需(xu)要(yao),把(ba)這個(ge)核(he)的力度切得更小,或(huo)者(zhe)當(dang)算(suan)力需(xu)要(yao)更多的核(he)的時候(hou)怎么辦呢?在(zai)這里提前預告一(yi)(yi)(yi)下(xia)我們(men)下(xia)一(yi)(yi)(yi)代(dai)的天璇架構的IPU設計:基于Mesh互聯的AI Cluster,它可以將(jiang)計算(suan)單元(yuan)靈活的配置成(cheng)M行N列,根據(ju)場景(jing)需(xu)求(qiu),AI算(suan)力規模可大可小。
除了互聯拓撲外,存算(suan)電路CIM核的(de)(de)(de)改(gai)進,我們自研的(de)(de)(de)CPU和(he)(he)(he)向量處理器的(de)(de)(de)性能(neng)提升,針對(dui)AI算(suan)法更高(gao)效(xiao),尤其(qi)是大(da)模型的(de)(de)(de)計算(suan),更加高(gao)效(xiao)的(de)(de)(de)SFU和(he)(he)(he)數據傳輸機制(zhi),最終(zhong)體現在更好的(de)(de)(de)整(zheng)體性能(neng)和(he)(he)(he)靈(ling)活性。大(da)家可以想象一下,如果這個二維(wei)陣列(lie)在二維(wei)空(kong)間甚(shen)至三維(wei)空(kong)間上繼續擴展下去,那么我們的(de)(de)(de)芯(xin)片可以做些什么?總之(zhi),敬請期(qi)待。
四、提供2倍以上的真實算力,功耗可以降低50%
當(dang)然(ran),H30 這樣(yang)一(yi)個大芯(xin)片,再加上純自研的存(cun)算一(yi)體(ti)(ti)電路,很多工程實(shi)現方(fang)面(mian)的挑戰需(xu)要解決,其中最(zui)關(guan)鍵的就(jiu)是存(cun)算一(yi)體(ti)(ti)電路的特有(you)驗(yan)證問(wen)題、仿(fang)真(zhen)加速及FPGA原型問(wen)題以及電源完整性(xing)問(wen)題。為了實(shi)現大算力存(cun)算一(yi)體(ti)(ti)電路的仿(fang)真(zhen)驗(yan)證,我(wo)們(men)打造了一(yi)個存(cun)算電路的行為模型,使其與真(zhen)實(shi)的電路的行為完全一(yi)致,也就(jiu)是做Formal 驗(yan)證。
這么大(da)(da)算力大(da)(da)規模(mo)的(de)電路,加速(su)仿真(zhen)驗證也是一大(da)(da)考驗。我(wo)們(men)單(dan)核(he)的(de) IPU 規模(mo)就(jiu)已經超過能找到的(de)任何一款 FPGA 規模(mo),所以(yi)我(wo)們(men)團隊(dui)巧妙地(di)將設計裁剪、分割(ge) Partition 到多塊 FPGA。
至于電(dian)(dian)源(yuan)完(wan)整性的問題,大(da)算(suan)力AI芯片需(xu)要考慮(lv)動(dong)態IR drop對(dui)性能的影(ying)響,特別是對(dui)于定(ding)制化(hua)存算(suan)電(dian)(dian)路(lu),計算(suan)密度(du)巨大(da),需(xu)處理IR drop問題及其對(dui)周邊電(dian)(dian)路(lu)的影(ying)響。我們(men)采取(qu)多種方(fang)法(fa)(fa)降低峰值電(dian)(dian)流(liu)影(ying)響,因為存算(suan)電(dian)(dian)路(lu)與標準電(dian)(dian)路(lu)不同,無法(fa)(fa)按標準電(dian)(dian)路(lu)要求(qiu)進行Sign-off。
這(zhe)是我們H30芯片(pian)(pian)的架構框(kuang)圖和芯片(pian)(pian)規格。主(zhu)要的規格參數包括256TOPS INT8精度的物理(li)算力,DDR帶寬128GB/s,16路FHD的編解碼,8x PCIe4.0接(jie)口(kou)。典(dian)型功耗(hao)35W,采用12nm工藝。
我(wo)(wo)們通(tong)過(guo)底層的(de)(de)(de)存(cun)算電路(lu)和AI處理器(qi)架(jia)構(gou)的(de)(de)(de)創新,帶(dai)來性(xing)能(neng)指(zhi)標上的(de)(de)(de)突破。這是我(wo)(wo)們12nm芯(xin)片(pian)和某國際巨頭(tou)7nm芯(xin)片(pian)的(de)(de)(de)性(xing)能(neng)和功(gong)耗對比(bi),在(zai)同樣功(gong)耗下,我(wo)(wo)們的(de)(de)(de)H30芯(xin)片(pian)可以提供2倍以上的(de)(de)(de)真實算力,端到端的(de)(de)(de)AI計算能(neng)力;在(zai)同樣的(de)(de)(de)性(xing)能(neng)條件(jian)下,我(wo)(wo)們的(de)(de)(de)功(gong)耗可以降低50%。
上面(mian)講(jiang)完(wan)了硬件(jian)架構(gou)設計,相當于我(wo)們的(de)芯(xin)片有了一(yi)個強健的(de)身體,下面(mian)介(jie)紹一(yi)下我(wo)們芯(xin)片的(de)靈(ling)魂(hun):編譯器和工(gong)具鏈。
我(wo)們的(de)(de)芯片采用HDPL語言編(bian)程,即Houmo Data Parallel Language的(de)(de)縮寫,它是我(wo)們對主(zhu)流并(bing)(bing)行(xing)編(bian)程模型(xing)的(de)(de)擴展,能(neng)高(gao)效的(de)(de)解(jie)決數據(ju)并(bing)(bing)行(xing)問(wen)題,并(bing)(bing)且支持消息(xi)傳(chuan)遞機(ji)制。我(wo)們的(de)(de)Tile內部是由異構的(de)(de)計算(suan)單元(yuan)組成(cheng)的(de)(de),采用SIMD的(de)(de)編(bian)程模型(xing),而Tile間以(yi)及IPU核間是同構的(de)(de),采用SIMT的(de)(de)編(bian)程模型(xing)。
我們(men)出色的(de)軟(ruan)件工具鏈工程師(shi)已經(jing)把剛才(cai)講到的(de)Tile間和(he)(he)核間數據共享和(he)(he)消息傳(chuan)輸的(de)復雜機制都封裝(zhuang)了起來,用戶可以很容易地用我們(men)的(de)模型(xing)開(kai)(kai)發SDK,或者算(suan)子(zi)開(kai)(kai)發SDK,在我們(men)的(de)IPU上進行(xing)軟(ruan)件和(he)(he)算(suan)法的(de)開(kai)(kai)發。其中模型(xing)開(kai)(kai)發SDK允(yun)許用戶使用我們(men)的(de)算(suan)子(zi)庫進行(xing)模型(xing)和(he)(he)算(suan)法的(de)開(kai)(kai)發。算(suan)子(zi)開(kai)(kai)發SDK則允(yun)許用戶開(kai)(kai)發自己(ji)的(de)定制化(hua)算(suan)子(zi)。
編譯優化方(fang)面,除了常用的(de)(de)(de)(de)(de)不(bu)同(tong)計(ji)算單元之(zhi)間可以(yi)以(yi)流水(shui)的(de)(de)(de)(de)(de)方(fang)式(shi)并(bing)行(xing)以(yi)外,我們(men)的(de)(de)(de)(de)(de)每(mei)個(ge)(ge)(ge)(ge)(ge)Tile,以(yi)及每(mei)個(ge)(ge)(ge)(ge)(ge)Core之(zhi)間,也可以(yi)獨立并(bing)行(xing)執行(xing)不(bu)同(tong)的(de)(de)(de)(de)(de)任務,也可以(yi)將一個(ge)(ge)(ge)(ge)(ge)任務切分到不(bu)同(tong)的(de)(de)(de)(de)(de)Tile,或(huo)者不(bu)同(tong)的(de)(de)(de)(de)(de)核上,并(bing)且以(yi)Pipeline的(de)(de)(de)(de)(de)形式(shi)并(bing)行(xing)。例(li)如對CV類的(de)(de)(de)(de)(de)處理,在(zai)追求Throughput,也就(jiu)是高吞吐率的(de)(de)(de)(de)(de)場景(jing)下,可以(yi)讓一張(zhang)輸入圖(tu)片(pian),同(tong)時(shi)(shi)(shi)進(jin)行(xing)多(duo)(duo)個(ge)(ge)(ge)(ge)(ge)網絡(luo)的(de)(de)(de)(de)(de)計(ji)算,也可以(yi)讓多(duo)(duo)張(zhang)圖(tu)片(pian)在(zai)多(duo)(duo)個(ge)(ge)(ge)(ge)(ge)Title或(huo)者多(duo)(duo)個(ge)(ge)(ge)(ge)(ge)核上,同(tong)時(shi)(shi)(shi)進(jin)行(xing)同(tong)一個(ge)(ge)(ge)(ge)(ge)網絡(luo)的(de)(de)(de)(de)(de)計(ji)算。在(zai)追求低延時(shi)(shi)(shi)的(de)(de)(de)(de)(de)場景(jing)下,可以(yi)將一張(zhang)大圖(tu)拆成若干份,同(tong)時(shi)(shi)(shi)利用多(duo)(duo)個(ge)(ge)(ge)(ge)(ge)Tile,或(huo)者多(duo)(duo)個(ge)(ge)(ge)(ge)(ge)Core的(de)(de)(de)(de)(de)算力進(jin)行(xing)計(ji)算。
在2D Mesh的(de)(de)拓撲結構下,任務的(de)(de)流(liu)(liu)水(shui)線是在2維(wei)空(kong)間,甚至(zhi)未(wei)來(lai)會在3維(wei)空(kong)間上進行流(liu)(liu)水(shui),這(zhe)也就(jiu)是類似Spatial Computing(空(kong)間計(ji)算)的(de)(de)概(gai)念(nian)。
H30芯片在一(yi)些現在最先進網(wang)(wang)絡(luo)已(yi)經有視頻效果呈現,包括(kuo)激光雷達的(de)一(yi)個處理網(wang)(wang)絡(luo)、BEV的(de)網(wang)(wang)絡(luo)。
我們(men)的(de)(de)第(di)(di)一代量產(chan)產(chan)品后摩(mo)鴻途?H30現在(zai)已經可(ke)以提供(gong)給客(ke)(ke)戶(hu)送測了;第(di)(di)二代產(chan)品預(yu)計2024年可(ke)以提供(gong)給客(ke)(ke)戶(hu)。以上(shang)就是(shi)我分享的(de)(de)全(quan)部(bu)內(nei)容(rong),謝(xie)謝(xie)大家(jia)!
以上是陳亮演講內容的完整整理。