AI計(jì)算面臨三大現(xiàn)狀,存算一體顛覆性重塑AI芯片。編輯 | GACS
9月14日~15日,2023全球AI芯片峰會(GACS 2023)在深圳南山圓滿舉行。在首日開幕式上,后摩智能聯(lián)合創(chuàng)始人、研發(fā)副總裁陳亮分享了題為《存算一體:顛覆性架構(gòu)重塑AI芯片》的主題演講。陳亮談道,面向大模型時代的新需求,后模智能正計(jì)劃推出擴(kuò)展大模型應(yīng)用邊界的第二代天璇架構(gòu),以及基于這一整體性能、效率與靈活性更強(qiáng)架構(gòu)的后摩鴻途H50芯片,預(yù)計(jì)在2024年正式推出。創(chuàng)立于2020年的后摩智能是存算一體芯片公司之一。公司于2023年5月正式推出存算一體智駕芯片后摩鴻途?H30,物理算力達(dá)到256TOPS,典型功耗達(dá)到35W。根據(jù)后摩實(shí)驗(yàn)室及MLPerf公開測試結(jié)果,在ResNet50性能功耗對比上,采取12nm制程的H30相比某國際芯片巨頭的7nm同類芯片性能提升超2倍,功耗減少超50%。H30和H50系列背后是后摩智能自研的IPU架構(gòu),陳亮談道,該架構(gòu)設(shè)計(jì)遵循“中庸之道”。如果將集中式計(jì)算架構(gòu)比作居住面積和擴(kuò)展性有限的“中式庭院”,那么分布式計(jì)算架構(gòu)類似于“高層公寓”,容納性好但溝通性不足。后摩智能的IPU架構(gòu)選擇在兩者之間尋求平衡點(diǎn):在計(jì)算方面,通過多核、多硬件線程實(shí)現(xiàn)計(jì)算效率與算力靈活擴(kuò)展;在存儲方面,通過多級數(shù)據(jù)緩存實(shí)現(xiàn)高效數(shù)據(jù)搬運(yùn)與復(fù)用;在數(shù)據(jù)傳輸方面,通過雙環(huán)拓?fù)鋵S每偩€實(shí)現(xiàn)靈活數(shù)據(jù)傳輸與共享。以下為陳亮的演講實(shí)錄:尊敬的各位嘉賓、各位老師:大家下午好!后摩智能是一家做存算一體AI芯片的初創(chuàng)公司。我們在創(chuàng)業(yè)過程中,經(jīng)常會被大家問到一個問題:既然存算一體技術(shù)優(yōu)點(diǎn)這么多,那為什么國內(nèi)或者國外的成熟大公司他們不做呢?我們的同事們也從不同的角度給出了一些解答。
01.AI計(jì)算面臨三大現(xiàn)狀,存算一體技術(shù)帶來新探索
從我的角度來看,我們希望從真正的客戶需求、產(chǎn)業(yè)的痛點(diǎn),以及結(jié)合自身的特點(diǎn)出發(fā),做出一些真正有意義、有價值的創(chuàng)新。我們看到AI計(jì)算的現(xiàn)狀:首先是算法對算力的要求越來越高,但是AI芯片的計(jì)算效率還不夠,這個效率包括了能效比和面效比,也就是單位功耗所能提供的算力和性能,以及單位面積能提供的性能。第二,系統(tǒng)的帶寬瓶頸會導(dǎo)致計(jì)算資源的利用效率降低,如何有效地利用帶寬,提高計(jì)算資源的利用效率,會成為更大的挑戰(zhàn)。第三,算法還遠(yuǎn)未達(dá)到收斂的程度。各種各樣新的算法還層出不窮,雖然最近Transformer類的計(jì)算有一統(tǒng)江湖之勢,但是大家知道,真正端到端的AI計(jì)算所涉及到的計(jì)算范式還是非常豐富的。如何能夠在一個處理器內(nèi)部完成端到端的AI計(jì)算,從而避免AI計(jì)算在不同的處理器核乃至不同芯片之間的數(shù)據(jù)傳輸,進(jìn)而減少數(shù)據(jù)的搬運(yùn)和存儲的開銷也是一個難題。基于此,我們希望借助獨(dú)特的存算一體技術(shù),給大家?guī)硪恍〢I計(jì)算的不同探索。先簡單介紹一下我們公司,后摩智能是2020年底成立,2021年初正式運(yùn)營。2021年8月,我們首款技術(shù)樣片完成了設(shè)計(jì)和流片,并且完成了首款量產(chǎn)產(chǎn)品的產(chǎn)品定義。2022年3月,我們的技術(shù)樣片回片跑通了自動駕駛的算法,完成了存算一體的技術(shù)驗(yàn)證。同年10月,我們首款量產(chǎn)產(chǎn)品后摩鴻途?H30設(shè)計(jì)完成,進(jìn)行投片,2023年5月發(fā)布了第一個量產(chǎn)產(chǎn)品,后摩鴻途?H30。這就是我們今年5月份發(fā)布的后摩鴻途?H30存算一體的大算力AI芯片,大家在外面展臺也可以看到它的實(shí)物,它的算力是256TOPS。這里面說的算力是物理算力,而不是稀疏化的算力,典型的功耗只有35W,這個功耗也是在跑實(shí)際算法過程中實(shí)測出來的。以上是對我們公司和產(chǎn)品的簡單介紹,下面從存算一體技術(shù)、AI處理器架構(gòu)和軟件工具鏈這三個方面來介紹一下我們公司成立兩年多來的工作。
02.基于定制化電路結(jié)構(gòu),實(shí)現(xiàn)高效存內(nèi)并行計(jì)算
首先介紹一下什么是存算一體。概念上講,存算一體就是在存儲單元的內(nèi)部,完成部分或者全部的計(jì)算,它是解決芯片性能瓶頸,提高能效比的有效技術(shù)手段。大家知道,在AI計(jì)算過程中,大量的數(shù)據(jù)在存儲單元和計(jì)算單元之間交互,數(shù)據(jù)一行一行地從存儲器中讀取出來,送到計(jì)算單元中進(jìn)行計(jì)算,再一行行地把結(jié)果寫到存儲單元當(dāng)中。這樣做的話,訪存的功耗會急劇增加,并且會發(fā)生計(jì)算單元等待輸入數(shù)據(jù)的情況,從而降低了計(jì)算單元的利用效率。相比于卷積為主的神經(jīng)網(wǎng)絡(luò)模型,以矩陣乘為主的Transformer類的計(jì)算,它的訪存和計(jì)算比例更大,這個問題會更加嚴(yán)重。這張圖就是我們存算一體電路的架構(gòu)框圖。淺色的部分是標(biāo)準(zhǔn)的SRAM電路,深色的部分是我們在它旁邊加入了一些定制化的電路結(jié)構(gòu),包括Activation Driver、乘法器、加法樹和累加器等等。這些定制化的電路結(jié)構(gòu)和傳統(tǒng)的SRAM電路整合在一起,就可以實(shí)現(xiàn)高效的存內(nèi)并行計(jì)算。存儲單元內(nèi)部的數(shù)據(jù)可以在同一時刻一起讀出,這相比于一行一行的讀取方式,極大地提高了并行性。計(jì)算電路緊挨著存儲單元,數(shù)據(jù)被讀取出來之后,馬上就可以在原地參與乘加計(jì)算,數(shù)據(jù)在存儲單元和計(jì)算單元之間的傳輸開銷也就相應(yīng)地減少了。計(jì)算單元方面,我們的定制化電路和存儲單元的Bit Cell(存儲單元)電路完全融合在一起,帶來了更規(guī)整的電路結(jié)構(gòu),因而有更緊湊的電路設(shè)計(jì),電路面積也就相應(yīng)減少了。這里面的定制化電路,不管是存儲電路,還是乘法、加法、累加等等,都是純數(shù)字的設(shè)計(jì),不會有任何計(jì)算的誤差。因?yàn)槲覀兠嫦虻氖袌鍪亲詣玉{駛,所以自然少不了車規(guī)方面的考慮,除了標(biāo)準(zhǔn)SRAM模式下的Memory BIST,我們還設(shè)計(jì)了用于計(jì)算模式的CIM BIST機(jī)制,CIM是Computing In Memory的首字母簡稱。我們還通過冗余設(shè)計(jì),以及加入行和列修復(fù)電路,提高量產(chǎn)良率和可靠性。有了錯誤檢測機(jī)制和冗余設(shè)計(jì),還可以在電路空閑時,通過軟件的方式檢測并修復(fù)電路中可能出現(xiàn)的錯誤。我們還改變了傳統(tǒng)SRAM中Bit Cell的電路,消除了6T Bit Cell里的競爭現(xiàn)象,進(jìn)一步提高了可靠性和穩(wěn)定性。這就是我們已經(jīng)發(fā)布的后摩鴻途?H30芯片里所采用的存算一體電路的一些規(guī)格參數(shù),采用的是12nm工藝,單個AI核內(nèi)的存儲容量已經(jīng)到了MB級別,在INT8全精度條件下能效比是30到150TOPS/W,30到150TOPS/W有一個范圍,是因?yàn)楦斎霐?shù)據(jù)相關(guān)的pattern 。面效比大于4TOPS每平方毫米,這是傳統(tǒng)電路的3倍以上。我們還支持軟硬件修復(fù)功能。目前我們已經(jīng)在12nm、16nm、22nm、28nm工藝下進(jìn)行過流片測試,7nm的測試樣片也已經(jīng)流片,明年會推出量產(chǎn)產(chǎn)品。
03.自研IPU架構(gòu),探尋集中式與分布式計(jì)算的“中庸之道”
有了這么好的存算IP核,怎么把它充分利用好,就是考驗(yàn)AI處理器架構(gòu)和芯片設(shè)計(jì)能力的問題了。為此,后摩智能基于存算一體,專為萬物智能而設(shè)計(jì)了IPU(Intelligence Processing Unit),并規(guī)劃了三代IPU架構(gòu):第一代命名為天樞架構(gòu),專門為智能駕駛打造的;第二代天璇架構(gòu),可以覆蓋更多的場景,從成本、面積、功耗都非常敏感的終端場景,到自動駕駛,再到大模型等云端場景都可以覆蓋;第三代天璣架構(gòu)的IPU,為通用人工智能打造的IPU。下面我將帶大家了解一下我們的IPU架構(gòu)設(shè)計(jì)。首先是我們怎么思考AI處理器這件事的。在早期的時候,AI芯片通過堆積大量的計(jì)算資源,以提高并行性,從而提高性能。其典型的代表是左圖中特斯拉的FSD,采用集中式的存儲和計(jì)算架構(gòu),可以達(dá)到很好的性能提升。但是對于算力要求更大,靈活性要求更高的場景,如果只靠單純的堆砌更多的計(jì)算資源,到了一定程度后,由于物理實(shí)現(xiàn)的限制,或者輸入輸出數(shù)據(jù)的規(guī)模等方面的限制,計(jì)算資源的利用效率會急劇降低,因?yàn)閱蝹€任務(wù)計(jì)算并行性已經(jīng)無法匹配計(jì)算資源的并行性了。我把集中式計(jì)算和存儲架構(gòu)類似為建筑設(shè)計(jì)里面的中式庭院,向內(nèi)圍合形成一個小院子,各種功能集于一身,使得人與人、人與自然可以高效地溝通,但問題是院落面積終究是有限的,能容納的居住者數(shù)量也就有限,而且設(shè)計(jì)建造這樣的庭院開銷和難度很大,因此可擴(kuò)展性差。這時候一個自然的想法就是利用多核,或者硬件多線程的方式,如右中間的這個Tenstorrent Wormhole所示,這張圖和特斯拉的FST都出于一個人之手,這個人叫Jim Keller。他把算力很大的核拆成若干個小核。這樣做到極致,就是用眾多的CPU小核,在旁邊配上小塊的SRAM,組成一個二維陣列,業(yè)界也有人稱這種架構(gòu)為“近存計(jì)算”。這樣做的好處是對物理實(shí)現(xiàn)非常友好,并且提供了非常靈活的編程性。但一個問題就是對于終端推理,尤其是自動駕駛這樣相對特定的應(yīng)用場景,能效比和面效比比大核的形式差一些。這種分布式的計(jì)算和存儲結(jié)構(gòu),可以類比為建筑設(shè)計(jì)里面西方的高層公寓,采用獨(dú)立簡單的小單元,在三維空間上可以很好的擴(kuò)展,能夠容納更多的人,但因?yàn)閱卧鄬Ψ忾],人和人之間的溝通就會比較差了。所以我們認(rèn)為在單核或單線程可以調(diào)度的計(jì)算資源,與真實(shí)的可以利用的計(jì)算資源之間,存在一條Roofline的曲線關(guān)系。我們的設(shè)計(jì)邏輯就是找到這條Roofline曲線的拐點(diǎn),當(dāng)遇到拐點(diǎn)的時候,再通過多核或者多線程的方式來擴(kuò)展算力。這樣的設(shè)計(jì)理念類似于融合了東西方建筑的特點(diǎn),先設(shè)計(jì)一個簡單優(yōu)美的庭院,再保障了計(jì)算資源利用效率的同時,再通過高層公寓的方式,在三維空間上靈活擴(kuò)展算力。這張圖就是我們已經(jīng)推出的H30芯片里天樞架構(gòu)IPU的架構(gòu)框圖。大家可以看到我們的芯片里有4個IPU核,都掛在系統(tǒng)總線NoC上,每個核是完全一樣的設(shè)計(jì)。每個核又由4個Tile組成,每個Tile就對應(yīng)了一個硬件線程。在Tile內(nèi)部,包括了一個CPU、Tensor Engine、Special Function Unit、Vector Processor和多通道DMA。其中Tensor Engine就是由我們的存算電路和一個Feature Buffer,還有相應(yīng)的控制電路組成。這些計(jì)算單元全部在CPU的調(diào)度之下進(jìn)行運(yùn)行,CPU除了可以調(diào)度不同的計(jì)算單元之外,還可以進(jìn)行一些簡單的靈活的,但是算力要求不高的計(jì)算。這樣的架構(gòu)使得AI計(jì)算不但不用在多個處理器,例如CPU、GPU、DSP之間分配任務(wù),甚至數(shù)據(jù)不用出AI核,就可以完成端到端的AI計(jì)算。從Memory Hierarchy的結(jié)構(gòu)來看,整個系統(tǒng)包括了4級緩存,最外的緩存是片外的DDR,片內(nèi)的第一級緩存我們叫L2緩存,是所有的CPU芯片都可以共享的緩存。L1的緩存就是Core內(nèi)部一個共享存儲資源,Core內(nèi)部所有的計(jì)算資源都可以共享這個Shared Memory。L0的緩存就是CIM,也就是存算單元。這四級的緩存都是可以被軟件分配和管理,這樣的設(shè)計(jì)使得軟件有更大的空間對不同類型的任務(wù)進(jìn)行存儲空間的分配,從而減少數(shù)據(jù)搬運(yùn),并且更好地利用數(shù)據(jù)復(fù)用性。說過了存和算,這個架構(gòu)里還有一個重要的部分就是數(shù)據(jù)的傳輸。就像我們?nèi)撕腿酥g需要更好的溝通一樣,計(jì)算單元之間,也需要非常靈活的共享數(shù)據(jù)和消息。因此,我們設(shè)計(jì)了專用的數(shù)據(jù)傳輸總線,有了這個傳輸數(shù)據(jù)總線,就可以靈活的在各個Tile,以及各個Core之間建立高速的直接的數(shù)據(jù)傳輸通道,而不需要通過系統(tǒng)的總線和緩存了。通過自定義的總線,各Tile和各Core之間,可以非常靈活地組成不同的拓?fù)浣Y(jié)構(gòu)。我們的天樞架構(gòu)IPU采用雙環(huán)的拓?fù)浣Y(jié)構(gòu),四個Tile組成第一級的環(huán),四個核又組成第二級的環(huán)。AI計(jì)算里數(shù)據(jù)復(fù)用是一個很重要的特性,利用數(shù)據(jù)的復(fù)用性可以減少片外帶寬的壓力。因此我們設(shè)計(jì)了多播的傳輸機(jī)制,也就是說一個Tile里的數(shù)據(jù),可以通過一次DMA傳輸,廣播給需要這個Tile數(shù)據(jù)的所有的其他的Tile,而不需要多次重復(fù)地從同一個地址去讀取同樣的數(shù)據(jù)。多核加多播的傳輸機(jī)制,帶來的一個問題就是數(shù)據(jù)和消息的同步問題。例如Tile 0把數(shù)據(jù)傳給Tile1、2、3,然后四個Tile一起開始一次計(jì)算,這類的數(shù)據(jù)同步問題其實(shí)是多線程編程里面經(jīng)常會遇到的問題。我們通過專用的消息傳遞通道和同步機(jī)制,可以讓四個Tile乃至四個核(Core)在收到消息的同一時間一起開始工作。大家看到,因?yàn)槲覀兊谝淮鶬PU和H30芯片所用的核數(shù)和Tile的數(shù)量都比較少,14個,它形成了環(huán)形拓?fù)浣Y(jié)構(gòu)。但如果我們根據(jù)算力的需要,把這個核的力度切得更小,或者當(dāng)算力需要更多的核的時候怎么辦呢?在這里提前預(yù)告一下我們下一代的天璇架構(gòu)的IPU設(shè)計(jì):基于Mesh互聯(lián)的AI Cluster,它可以將計(jì)算單元靈活的配置成M行N列,根據(jù)場景需求,AI算力規(guī)??纱罂尚 ?/span>除了互聯(lián)拓?fù)渫?,存算電路CIM核的改進(jìn),我們自研的CPU和向量處理器的性能提升,針對AI算法更高效,尤其是大模型的計(jì)算,更加高效的SFU和數(shù)據(jù)傳輸機(jī)制,最終體現(xiàn)在更好的整體性能和靈活性。大家可以想象一下,如果這個二維陣列在二維空間甚至三維空間上繼續(xù)擴(kuò)展下去,那么我們的芯片可以做些什么?總之,敬請期待。
04.提供2倍以上的真實(shí)算力,功耗可以降低50%
當(dāng)然,H30 這樣一個大芯片,再加上純自研的存算一體電路,很多工程實(shí)現(xiàn)方面的挑戰(zhàn)需要解決,其中最關(guān)鍵的就是存算一體電路的特有驗(yàn)證問題、仿真加速及FPGA原型問題以及電源完整性問題。為了實(shí)現(xiàn)大算力存算一體電路的仿真驗(yàn)證,我們打造了一個存算電路的行為模型,使其與真實(shí)的電路的行為完全一致,也就是做Formal 驗(yàn)證。這么大算力大規(guī)模的電路,加速仿真驗(yàn)證也是一大考驗(yàn)。我們單核的 IPU 規(guī)模就已經(jīng)超過能找到的任何一款 FPGA 規(guī)模,所以我們團(tuán)隊(duì)巧妙地將設(shè)計(jì)裁剪、分割 Partition 到多塊 FPGA。至于電源完整性的問題,大算力AI芯片需要考慮動態(tài)IR drop對性能的影響,特別是對于定制化存算電路,計(jì)算密度巨大,需處理IR drop問題及其對周邊電路的影響。我們采取多種方法降低峰值電流影響,因?yàn)榇嫠汶娐放c標(biāo)準(zhǔn)電路不同,無法按標(biāo)準(zhǔn)電路要求進(jìn)行Sign-off。這是我們H30芯片的架構(gòu)框圖和芯片規(guī)格。主要的規(guī)格參數(shù)包括256TOPS INT8精度的物理算力,DDR帶寬128GB/s,16路FHD的編解碼,8x PCIe4.0接口。典型功耗35W,采用12nm工藝。我們通過底層的存算電路和AI處理器架構(gòu)的創(chuàng)新,帶來性能指標(biāo)上的突破。這是我們12nm芯片和某國際巨頭7nm芯片的性能和功耗對比,在同樣功耗下,我們的H30芯片可以提供2倍以上的真實(shí)算力,端到端的AI計(jì)算能力;在同樣的性能條件下,我們的功耗可以降低50%。上面講完了硬件架構(gòu)設(shè)計(jì),相當(dāng)于我們的芯片有了一個強(qiáng)健的身體,下面介紹一下我們芯片的靈魂:編譯器和工具鏈。我們的芯片采用HDPL語言編程,即Houmo Data Parallel Language的縮寫,它是我們對主流并行編程模型的擴(kuò)展,能高效的解決數(shù)據(jù)并行問題,并且支持消息傳遞機(jī)制。我們的Tile內(nèi)部是由異構(gòu)的計(jì)算單元組成的,采用SIMD的編程模型,而Tile間以及IPU核間是同構(gòu)的,采用SIMT的編程模型。我們出色的軟件工具鏈工程師已經(jīng)把剛才講到的Tile間和核間數(shù)據(jù)共享和消息傳輸?shù)膹?fù)雜機(jī)制都封裝了起來,用戶可以很容易地用我們的模型開發(fā)SDK,或者算子開發(fā)SDK,在我們的IPU上進(jìn)行軟件和算法的開發(fā)。其中模型開發(fā)SDK允許用戶使用我們的算子庫進(jìn)行模型和算法的開發(fā)。算子開發(fā)SDK則允許用戶開發(fā)自己的定制化算子。編譯優(yōu)化方面,除了常用的不同計(jì)算單元之間可以以流水的方式并行以外,我們的每個Tile,以及每個Core之間,也可以獨(dú)立并行執(zhí)行不同的任務(wù),也可以將一個任務(wù)切分到不同的Tile,或者不同的核上,并且以Pipeline的形式并行。例如對CV類的處理,在追求Throughput,也就是高吞吐率的場景下,可以讓一張輸入圖片,同時進(jìn)行多個網(wǎng)絡(luò)的計(jì)算,也可以讓多張圖片在多個Title或者多個核上,同時進(jìn)行同一個網(wǎng)絡(luò)的計(jì)算。在追求低延時的場景下,可以將一張大圖拆成若干份,同時利用多個Tile,或者多個Core的算力進(jìn)行計(jì)算。在2D Mesh的拓?fù)浣Y(jié)構(gòu)下,任務(wù)的流水線是在2維空間,甚至未來會在3維空間上進(jìn)行流水,這也就是類似Spatial Computing(空間計(jì)算)的概念。H30芯片在一些現(xiàn)在最先進(jìn)網(wǎng)絡(luò)已經(jīng)有視頻效果呈現(xiàn),包括激光雷達(dá)的一個處理網(wǎng)絡(luò)、BEV的網(wǎng)絡(luò)。我們的第一代量產(chǎn)產(chǎn)品后摩鴻途?H30現(xiàn)在已經(jīng)可以提供給客戶送測了;第二代產(chǎn)品預(yù)計(jì)2024年可以提供給客戶。以上就是我分享的全部內(nèi)容,謝謝大家!以上是陳亮演講內(nèi)容的完整整理。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。