AI運(yùn)算最關(guān)鍵之處是存儲(chǔ)而非AI處理器本身,AI運(yùn)算90%的功耗和延遲都來(lái)自存儲(chǔ)或者說(shuō)都來(lái)自數(shù)據(jù)的搬運(yùn)。90%的工況下,AI處理器都在等待存儲(chǔ)系統(tǒng)搬運(yùn)數(shù)據(jù),而運(yùn)算系統(tǒng)所需要的時(shí)間幾乎是可以忽略的,所以存儲(chǔ)系統(tǒng)的好壞實(shí)際決定了真實(shí)的算力大小,其中存儲(chǔ)帶寬基本可以等同于存儲(chǔ)系統(tǒng)的好壞,也基本等同真實(shí)算力的高低。在Transformer時(shí)代,模型參數(shù)至少10億以上,模型至少1GB大小,存儲(chǔ)帶寬也決定了能不能運(yùn)行Transformer。此外,存儲(chǔ)還決定了功耗,根據(jù)英特爾的研究表明,AI芯片(加速器)當(dāng)半導(dǎo)體工藝達(dá)到 7nm 時(shí),數(shù)據(jù)搬運(yùn)功耗高達(dá) 35pJ/bit,占總功耗的63.7%。
常見芯片存儲(chǔ)帶寬統(tǒng)計(jì)
上表中單芯片最強(qiáng)的是AMD的MI300X,英偉達(dá)的H100 NVL是雙系統(tǒng)并聯(lián)。Mobileye的EyeQ5墊底,主要是因?yàn)槠涫?016年左右設(shè)計(jì)的,當(dāng)時(shí)LPDDR4X的標(biāo)準(zhǔn)還未出臺(tái)。數(shù)據(jù)中心或者說(shuō)服務(wù)器級(jí)別的存儲(chǔ)帶寬有壓倒性的優(yōu)勢(shì),同樣成本也是極高,現(xiàn)在HBM3每GB大約30-40美元(據(jù)說(shuō)現(xiàn)在因?yàn)锳I太火,且HBM3目前是SK hynix獨(dú)家供應(yīng),產(chǎn)能有限,HBM價(jià)格漲了4-5倍,那就是120-200美元,應(yīng)該不大可能,但是漲一倍還是有可能的)。
以AMD的MI300X為例,單單HBM的成本就達(dá)到5760-7680美元,這么高的價(jià)格在汽車領(lǐng)域是無(wú)法承受的。這也反向證明了存儲(chǔ)帶寬的重要性。HBM不僅帶寬高,而且離運(yùn)算單元的物理距離相比PCB板上的DRAM更近,存儲(chǔ)到運(yùn)算單元的傳輸時(shí)間就更短。
除了HBM,還有一種辦法就是在芯片內(nèi)部大量使用昂貴的SRAM,如特斯拉Dojo D1,354個(gè)核心440MB的SRAM,每MB的SRAM成本約15-20美元,僅此一項(xiàng)近9000美元。SRAM帶寬大約800GB/s,不過(guò)SRAM容量太低,不太適合ChatGPT這樣的大模型。Dojo D1的外圍還是有32GB的HBM,但特斯拉的HBM帶寬只有900GB/s。低帶寬加上Dojo D1近似CPU的架構(gòu)設(shè)計(jì),注定其算力很低,但靈活性極高。
還有一點(diǎn)需要注意,上表中有些是純AI芯片或GPU,類似于顯卡,其內(nèi)存就是顯存。有些是SoC,其內(nèi)存是與CPU共享的,共享DRAM自然不如單獨(dú)顯存帶寬。對(duì)AI芯片或GPU來(lái)說(shuō),權(quán)重模型讀出后就放在顯存里,SoC的話,權(quán)重模型讀出后放在共享DRAM里。再有,這些帶寬都是理論帶寬,實(shí)際利用效率要看內(nèi)存控制器和物理層的效率,最高能到98%左右,低的話只有約90%。其次,帶寬還因?yàn)榕c計(jì)算單元的物理距離再打折扣,芯片內(nèi)部的SRAM基本可以做到理論帶寬,HBM可能還有5%的縮水,PCB板上的可能有10-15%的縮水。
還有一點(diǎn)LPDDR5的帶寬反而不如LPDDR4X,這是因?yàn)長(zhǎng)PDDR5更注重速度,主要服務(wù)對(duì)象是CPU而非AI芯片。
AMD的MI300X在宣傳時(shí)特別點(diǎn)出其使用192GB的HBM3(兩側(cè)的黑色大方塊就是HBM3,總共8塊,每塊24GB),帶寬高達(dá)5.2TB/s,Infinity Fabric存儲(chǔ)(即CPU共享存儲(chǔ))帶寬也高達(dá)896GB/s,并且強(qiáng)調(diào)MI300X存儲(chǔ)帶寬是英偉達(dá)H100的1.6倍。
為何存儲(chǔ)系統(tǒng)決定了實(shí)際算力?
所謂人工智能AI推理部分,其運(yùn)算量最大的部分是卷積運(yùn)算,卷積運(yùn)算分解到最底層就是輸入視頻序列(或語(yǔ)句序列等矩陣)矩陣與訓(xùn)練好的權(quán)重模型矩陣的乘積再累加偏值b。乘積運(yùn)算所消耗的時(shí)間是納秒級(jí)甚至皮秒級(jí),典型Transformer的參數(shù)是1GB以上,內(nèi)存帶寬如果是34GB/s,那么僅每次讀取模型就要消耗29毫秒,讀取的同時(shí)還需要寫入,與計(jì)算單元的速度相比差了千倍以上。這就是所謂的內(nèi)存墻,算力數(shù)字游戲毫無(wú)意義,出現(xiàn)內(nèi)存墻的原因是內(nèi)存的帶寬與后端計(jì)算單元的速度嚴(yán)重不匹配,而不是馮諾依曼架構(gòu)特有的,哈佛架構(gòu)一樣會(huì)有;另外,內(nèi)存的帶寬和速度是完全不同的概念,速度的單位是MHz,比如2133MHz,指內(nèi)存的響應(yīng)速度,每秒有2133百萬(wàn)次響應(yīng),也是納秒級(jí)。
與個(gè)人電腦系統(tǒng)一樣,如今的車載計(jì)算系統(tǒng)也有硬盤,訓(xùn)練好的權(quán)重模型存在硬盤即eMMC或UFS里,UFS 4.0版本的接口帶寬是23.2Gbps也就是2.9GB/s,遠(yuǎn)低于DRAM的帶寬,連LPDDR3都不如,eMMC就更低了,只有400MB/s。目前電腦硬盤是M.2接口居多,M.2跑PCIe
4.0的話帶寬是64GB/s。所以未來(lái)UFS會(huì)被M.2 SSD取代。
每次運(yùn)算的時(shí)候,CPU發(fā)出指令,權(quán)重模型從UFS中被取出暫存在DRAM中,如果有顯存的話,就放在顯存里,通常顯存比共享DRAM帶寬要高得多,這樣每次運(yùn)算就無(wú)需從UFS中取出,這也是DRAM和顯存存在的意義,它的速度比UFS快太多了。
來(lái)源:Winbond
上圖可以看出模型參數(shù)飛速增長(zhǎng),而存儲(chǔ)帶寬增長(zhǎng)的異常緩慢。即使在邊緣端,YOLO V7的模型大小也有1.5GB大?。↖NT8),META的語(yǔ)義分割SAM有4GB大小。CNN時(shí)代模型參數(shù)一般不超過(guò)1000萬(wàn),用INT8格式就是大約10MB大小,芯片內(nèi)部的SRAM內(nèi)存勉強(qiáng)可以裝下,每MB的SRAM成本大約20-50美元,而Transformer時(shí)代,最小都有1GB,即便是特斯拉數(shù)據(jù)中心Dojo D1這樣的芯片其SRAM總?cè)萘恳膊坏?.5GB,芯片內(nèi)部肯定放不下,只能通過(guò)外部的內(nèi)存。
一個(gè)系統(tǒng)的存儲(chǔ)帶寬由兩方面決定,一是存儲(chǔ)器本身,二是運(yùn)算芯片的內(nèi)存通道數(shù)。以前作者本人都忽略了后者,犯了不少錯(cuò)誤,向大家致以深深的歉意。內(nèi)存通道數(shù)部分可以看成是內(nèi)存位寬,不過(guò)也有例外。
?來(lái)源:Meta
上圖是Meta(FACEBOOK,F(xiàn)ACEBOOK在AI界僅次于谷歌,領(lǐng)先微軟,CAFFE2和PyTorch僅次于TensorFlow,F(xiàn)AIR也是成果眾多,特斯拉的骨干網(wǎng)RegNet就來(lái)自FACEBOOK)的第一顆自研芯片MTIA V1,非常老實(shí)地標(biāo)注102.4TOPS的算力,其采用LPDDR5內(nèi)存,帶寬176GB/s,內(nèi)部采用了64GB的SRAM,帶寬800GB/s。其算力較低主要原因是運(yùn)算頻率太低,僅有800MHz,再有就是外部帶寬僅176GB/s。之所以頻率低可能也是為了對(duì)應(yīng)內(nèi)存帶寬,內(nèi)存帶寬不夠,后面頻率再高也沒(méi)用。
看存儲(chǔ)帶寬也可以看存儲(chǔ)器的Datasheet,比如特斯拉的第一代FSD用的存儲(chǔ)是LPDDR4,型號(hào)是 MT53D512M32D2DS-046 AAT,容量為 16Gb,總共 8 片,I/O 頻率2133MHz。
來(lái)源:美光
上面是MT53D512M32D2DS-046 AAT的DATASHEET,這是美光的芯片。美光幾乎壟斷汽車高端DRAM市場(chǎng),市占率在90%以上,廠家明確指出單die的上限是8.5GB/s(這個(gè)已包含了DDR雙通道),特斯拉這顆MT53D512M32D2DS-046 AAT是兩個(gè)Die,即17GB/s,加上特斯拉第一代FSD的存儲(chǔ)帶寬是128bit,即雙通道,就是34GB/s,有人認(rèn)為兩個(gè)FSD芯片,應(yīng)該是68GB/s,不過(guò)每個(gè)芯片的總線位寬不變,兩個(gè)芯片即使用PCIe連接,并不等同于存儲(chǔ)系統(tǒng)增加了帶寬。
來(lái)源:英偉達(dá)
英偉達(dá)官方資料,4個(gè)Orin并聯(lián),內(nèi)存帶寬還是204GB/s。
來(lái)源:特斯拉
上圖是特斯拉AI日上展示的視覺(jué)架構(gòu),注意這僅僅是視覺(jué)特征提取與語(yǔ)義分割以及多頭注意力,不包含特斯拉所謂的矢量空間轉(zhuǎn)換(實(shí)際就是NeRF主導(dǎo)的BEV算法,加了道路模型),也不包含決策控制部分,根據(jù)特斯拉的介紹,其決策控制部分是蒙特卡洛樹搜索算法。
這個(gè)視覺(jué)架構(gòu)里實(shí)際不止一個(gè)Transformer,HydraNet的多任務(wù)也是用的Transfomer。除了Transfomer,RegNet和BiFPN的權(quán)重模型也不會(huì)太小,大概有0.5GB大小,如果要流暢地運(yùn)行,讀取權(quán)重模型的速度至少要做到每秒200次,那么存儲(chǔ)帶寬至少得400GB/s以上,600GB/s以上運(yùn)行起來(lái)會(huì)比較流暢,第一代FSD的存儲(chǔ)帶寬只有34GB/s,根本做不到,即使翻倍也做不到。
所以特斯拉才在第二代FSD芯片選擇了支持GDDR6,支持GDDR6需要幾個(gè)條件,首先是要購(gòu)買GDDR6物理層的IP;其次是要購(gòu)買GDDR6的控制器IP;然后是PCB板可能需要增加層數(shù)或者用低介電常數(shù)材料;最后是CPU也要加強(qiáng)。第一代HW3.0即使換上GDDR6也是毫無(wú)作用,第一代FSD芯片只支持LPDDR4。需要指出目前沒(méi)有車規(guī)級(jí)GDDR6,因?yàn)镚DDR6本來(lái)是針對(duì)顯卡市場(chǎng)開發(fā)的,沒(méi)有考慮車載,特斯拉用的GDDR6是美光提供的D9PZR,當(dāng)然也沒(méi)過(guò)車規(guī),它的最低工作溫度下限是零度,而非車規(guī)級(jí)的是零下40度,不過(guò)特斯拉從來(lái)也不在乎車規(guī)。特斯拉不僅用了昂貴的GDDR6,容量相比HW3.0也增加了一倍,達(dá)到32GB,數(shù)量達(dá)到16片。
GDDR6最高帶寬是672GB/s,也就是384位寬。目前還有GDDR6x,最高1008GB/s,追平HBM2,但由于物理距離遠(yuǎn)大于HBM,還是無(wú)法與HBM2相比。
?來(lái)源:Cadence
想不到吧,存儲(chǔ)第一大廠三星的GDDR6物理層是購(gòu)買自CADENCE的,另外一家能供應(yīng)GDDR6物理層的是RAMBUS,RAMBUS的主要收入來(lái)自存儲(chǔ)物理層IP,每年也有大概1.4億美元的收入。
隨著權(quán)重模型的持續(xù)膨脹,存儲(chǔ)成本會(huì)飛速增加,為了真正流暢運(yùn)行大模型,單單存儲(chǔ)方面就需要增加3000-5000美元的成本,這在汽車領(lǐng)域完全無(wú)法想象。
增加存儲(chǔ)帶寬也要加強(qiáng)CPU,這是因?yàn)镚PU和AI芯片都是協(xié)處理器,也就是Device。CPU才是Host主機(jī),GPU和AI芯片和鼠標(biāo)鍵盤顯示器打印機(jī)一樣都算是外設(shè),任務(wù)的分派和調(diào)度,數(shù)據(jù)流的控制以及數(shù)據(jù)的讀取和寫入均受CPU控制,上圖就是CPU如何控制GPU工作的流程。數(shù)據(jù)首先是在CPU指令調(diào)度下才讀取的,數(shù)據(jù)整形(如果AI芯片或GPU內(nèi)部有標(biāo)量運(yùn)算單元也可以做)后再交給GPU,計(jì)算完后再傳輸給CPU寫入內(nèi)存。某些系統(tǒng)會(huì)有DMA(Direct Memory Access, 即直接存儲(chǔ)器訪問(wèn))如MCU,DMA是指無(wú)需經(jīng)過(guò)CPU的直接存儲(chǔ),但需要經(jīng)過(guò)數(shù)據(jù)總線,數(shù)據(jù)總線帶寬未必有內(nèi)存寬,DMA主要是緩解CPU的工作壓力,因?yàn)镸CU內(nèi)部的CPU性能很弱。數(shù)據(jù)中心也有一些基于通訊協(xié)議的DMA,通常只用于數(shù)據(jù)中心的多顯卡系統(tǒng)。
算力數(shù)字是浮云,唐代李白有詩(shī)句“總為浮云能蔽日,長(zhǎng)安不見使人愁”,明白了存儲(chǔ)帶寬就不愁算力數(shù)字浮云,可以學(xué)王安石《登飛來(lái)峰》“飛來(lái)山上千尋塔,聞?wù)f雞鳴見日升。不畏浮云遮望眼,自緣身在最高層”。