大模型上不了智能汽車?
什么是大模型?沒有統(tǒng)一的定義,目前來(lái)說超過1000億參數(shù)的深度學(xué)習(xí)模型叫大模型,未來(lái)可能是10000億參數(shù)。深度學(xué)習(xí)從采集數(shù)據(jù)到標(biāo)注數(shù)據(jù),到訓(xùn)練出爐,最后得到的權(quán)重模型,這個(gè)權(quán)重模型98%就是參數(shù),模型大小基本等于參數(shù)量的大小。以AlexNet為例,參數(shù)量在6000萬(wàn),假設(shè)每個(gè)參數(shù)都是一個(gè)FP32格式,即4個(gè)字節(jié),總字節(jié)就是24000萬(wàn)字節(jié),則24000萬(wàn)字節(jié)/1024/1024 = 228MB,如果是車載領(lǐng)域常用的INT8格式,每個(gè)參數(shù)就是一個(gè)字節(jié),容量會(huì)縮小到FP32格式的1/4,當(dāng)然精度也會(huì)下降。
OpenAI在2020年提出了大模型的規(guī)模定律,基本近似于半導(dǎo)體領(lǐng)域的摩爾定律,這就是《Scaling Laws for Neural Language Models》,模型參數(shù)規(guī)模N,數(shù)據(jù)集大小D,模型形狀(包括:transformer Block數(shù)量,寬度,attention heads和feed forward hidden dimension), 喂入序列長(zhǎng)度和batch_size。當(dāng)然還有訓(xùn)練模型的計(jì)算量C。其中,模型性能強(qiáng)烈依賴于參數(shù)規(guī)模N,數(shù)據(jù)集大小D和計(jì)算量C。考慮到自動(dòng)駕駛?cè)嬉肓薔LP領(lǐng)域的Transformer,所以這個(gè)定律對(duì)自動(dòng)駕駛完全有效。
給定計(jì)算量的時(shí)候,模型性能的提升主要在于增加參數(shù)規(guī)模而不是增加數(shù)據(jù)集。所以后續(xù)各種模型訓(xùn)練大家就非常關(guān)注于持續(xù)增加參數(shù)量,數(shù)據(jù)集并沒有相應(yīng)的倍增。一句話,參數(shù)越多效果越好。
來(lái)看一個(gè)典型的大模型:ChatGPT, 大部分網(wǎng)絡(luò)消息都說它有 1750 億個(gè)參數(shù),通常用 INT8 格式來(lái)存儲(chǔ) LLM 權(quán)重,以便進(jìn)行更低延遲的推理、更高的吞吐量和更低的內(nèi)存需求(比用 float16 格式來(lái)存儲(chǔ)要少兩倍的內(nèi)存)。每個(gè) INT8 參數(shù)需要 1 個(gè)字節(jié)進(jìn)行存儲(chǔ)。簡(jiǎn)單的計(jì)算就知道,模型需要 175GB 的存儲(chǔ)空間,實(shí)際會(huì)需要180-190GB左右。
GPT 風(fēng)格的語(yǔ)言模型在每次前向傳遞時(shí)都是「自回歸」的,它預(yù)測(cè)下一個(gè)最可能的 token(對(duì)于類似 ChatGPT 的 RLHF 模型,它會(huì)預(yù)測(cè)其人類標(biāo)注者更偏好的下一個(gè) token)。這意味著要生成 200 個(gè) token,因此需要執(zhí)行 200 個(gè)前向傳遞。對(duì)于每個(gè)前向傳遞,我們需要將模型的所有權(quán)重從高帶寬(HBM)內(nèi)存加載到矩陣計(jì)算單元(GPU 的張量計(jì)算核)中, 也就是說需要為每個(gè)前向傳遞加載 175GB 的權(quán)重。為什么不在GPU內(nèi)部的存儲(chǔ)上加載權(quán)重模型?因?yàn)橘F到3萬(wàn)美元一片的英偉達(dá)H100其內(nèi)部的SRAM也不到0.3GB,根本裝不下。
在微軟OpenAI ChatGPT上用的A100 SXM8,這是針對(duì)云服務(wù)器廠家供應(yīng)的版本,一個(gè)節(jié)點(diǎn)即上圖中的一個(gè)A100 SXM8,每個(gè)節(jié)點(diǎn)包含8個(gè) A100 。這意味著每個(gè)模型實(shí)例的最大張量并行度是 8。因此,其實(shí)不需要為每個(gè)前向傳遞加載 175GB 的權(quán)重,而只需要為每個(gè)前向傳遞的每個(gè) GPU 加載 21.87GB,因?yàn)閺埩坎⑿行钥梢栽谒?GPU 上并行化權(quán)重和計(jì)算。
在 A100 80GB SXM 8版本上,最大內(nèi)存帶寬是 2TB/s。這意味著在 batchsize=1 的情況下(受內(nèi)存帶寬限制),2000/21.87=91.4,也就是說前向傳遞最大的理論速度將達(dá)到 91 次 / 秒,這個(gè)次是對(duì)話的次數(shù),實(shí)際是達(dá)不到這一水平的,也有人用這個(gè)反推,ChatGPT的參數(shù)沒有達(dá)到1750億個(gè),但遲早會(huì)達(dá)到這個(gè)參數(shù)量。這個(gè)還沒考慮后端計(jì)算,部分后端計(jì)算是CPU更擅長(zhǎng)的。顯然,90%時(shí)間都花在加載權(quán)重上,而不是計(jì)算矩陣乘法,高算力毫無(wú)用武之地。
我們不考慮算力,只考慮模型加載與存儲(chǔ)間的關(guān)系,假設(shè)特斯拉用了這么大的模型,特斯拉初代 FSD 使用的 LPDDR4,型號(hào)是 MT53D512M32D2DS-046 AAT,容量為 16Gb,總共 8 片,I/O 頻率 2133MHz,單通道的話,其帶寬為 2133*64*16,即 273GB/s。那么速度就是273/175=1.56,也就是每秒可以加載1.56次權(quán)重模型。
特斯拉最新的自動(dòng)駕駛大腦 FSD,不惜血本用上了 GDDR6。以特斯拉的 16 顆 GDDR6 為例,帶寬是 56*16=896GB/s,896/175=5.12,即每秒加載5.12次權(quán)重模型,即便你的算力是100000TOPs,每秒運(yùn)算次數(shù)也不會(huì)超過6次。
車載領(lǐng)域,攝像頭幀率高的可以到60Hz,每幀可以看做ChatGPT的每次會(huì)話,也就是說每秒至少要加載60次權(quán)重模型,考慮到后端計(jì)算也要消耗時(shí)間,每秒至少要90次才合格,換句話說內(nèi)存帶寬要達(dá)到16TB/s,每 GB 的 HBM2 售價(jià)大約 20 美元,HBM3大約30美元,每片英偉達(dá)A100板卡對(duì)應(yīng)80GB的HBM2,每個(gè)節(jié)點(diǎn)是8片,合計(jì)480GB,每片內(nèi)存帶寬2TB/s,合計(jì)16TB/s, 合計(jì)480*20=9600美元,最新的H100標(biāo)配96GB的HBM3,每片板卡是8個(gè)芯片,合計(jì)8*96*30=23040美元, 而特斯拉最新FSD對(duì)應(yīng)的GDDR6,16顆合計(jì)價(jià)格大約是150-200美元,價(jià)格差別巨大。
退一步,我們不用ChatGPT這種大模型,我們用Transformer。典型Transformer的參數(shù)是1.1億個(gè),但這是針對(duì)NLP自然語(yǔ)言的,而自動(dòng)駕駛領(lǐng)域的是針對(duì)視頻的,參數(shù)量最少增加10倍,即11億個(gè),也就是1.1GB的權(quán)重模型。如果是特斯拉用的16顆GDDR6,那么896/1.1=814.5,也就是每秒最多運(yùn)算不超過815次,但這16顆GDDR6可并非只為AI計(jì)算服務(wù)的,同時(shí)也為CPU服務(wù),它在加載權(quán)重模型的同時(shí),也在為CPU緩存數(shù)據(jù)。實(shí)際運(yùn)算次數(shù)至少減半。回到老舊的目標(biāo)檢測(cè)模型,其模型尺寸大小通常只有20MB,運(yùn)算速度自然高很多,非常復(fù)雜的一般都不超過300MB。但是小模型不僅性能不佳,魯棒性和可移植性也很差,因此人類AI的發(fā)展方向就是越來(lái)越大的模型,參數(shù)越來(lái)越多,機(jī)器視覺的奠基者ResNet 50是2500萬(wàn)個(gè)參數(shù),谷歌的ViT變種是20億個(gè)參數(shù),GPT3是驚人的1750億。
模型平均每?jī)赡陼?huì)增加240倍,內(nèi)存帶寬每?jī)赡曛粫?huì)增加兩倍。
存儲(chǔ)模型最佳載體是SRAM,其帶寬是最好的,但成本遠(yuǎn)超AI服務(wù)器領(lǐng)域的HBM。目前AI模型尺寸越來(lái)越大,超過20GB已是常態(tài),用SRAM來(lái)存儲(chǔ)的話,芯片價(jià)格輕易突破100萬(wàn)美元,即使是不太在乎價(jià)錢的服務(wù)器也承受不起,因此人類只能退而求其次,這就是HBM,即High Bandwidth Memory,每GB的HBM售價(jià)大約20美元。
HBM如上圖,簡(jiǎn)單地說HBM就是將SDRAM用TSV工藝堆疊起來(lái),就像蓋樓一樣,層和層之間會(huì)有金屬層等間隔,同時(shí)通過TSV聯(lián)通各個(gè)存儲(chǔ)單元。TSV(硅通孔)是內(nèi)存能夠堆疊的關(guān)鍵,它能夠在各個(gè)存儲(chǔ)層之間以及層內(nèi)構(gòu)建出硅通孔的通路,存儲(chǔ)單元的訪問就通過這些通孔完成。在堆疊上,現(xiàn)在一般只有2,4,8三種數(shù)量的堆疊,立體上最多堆疊4層,8堆疊是由兩列4堆疊構(gòu)成。
在繼續(xù)了解HBM之前,我們需要明白幾個(gè)內(nèi)存基本概念,那就是密度、速度和帶寬。
密度很簡(jiǎn)單,就是容量。速度有兩種描述,一是頻率即MHz,另一種是MT/s,后一種方式越來(lái)越成為主流。速度就好比高速公路的最高時(shí)速,帶寬就好比高速公路的車道數(shù)。HBM是以犧牲速度來(lái)提高帶寬的。1MHz=1000KHz=1000000Hz等于1秒內(nèi)高低電平信號(hào)切換100萬(wàn)次。MT/s全稱 Million Transfers Per Second意為每秒百萬(wàn)次傳輸,1T/s和1Hz,這兩個(gè)單位前者指的是每秒做了一次傳輸,后者指每秒1時(shí)鐘周期。又因?yàn)镈DR內(nèi)存信號(hào)每個(gè)時(shí)鐘信號(hào)可以傳輸2次,所以實(shí)際的傳輸速率為1Hz等于2T/s,1MHz等于2MT/s。在DDR5發(fā)布后,JEDEC的態(tài)度有了一些變化,內(nèi)存性能規(guī)格的單位選擇了MT/s為主,英特爾和金士頓、美光、威剛、芝奇等PC行業(yè)的領(lǐng)頭企業(yè)也紛紛跟進(jìn)該策略,將內(nèi)存性能的衡量單位改為了MT/s。對(duì)CPU來(lái)說,主要是串行數(shù)據(jù)流,速度就比較重要,而AI和GPU是并行計(jì)算,帶寬比速度重要。
- 系統(tǒng)最大內(nèi)存帶寬 = 內(nèi)存標(biāo)稱頻率*內(nèi)存總線位數(shù)*通道數(shù)
- 內(nèi)存帶寬 = 內(nèi)存標(biāo)稱頻率*內(nèi)存總線位數(shù)*實(shí)際使用的通道數(shù)
- 實(shí)際內(nèi)存帶寬 = 內(nèi)存核心頻率*內(nèi)存總線位數(shù)*實(shí)際使用的通道數(shù)*倍增系數(shù)
我們以車載領(lǐng)域的LPDDR為例來(lái)描述帶寬。
歷代LPDDR參數(shù),注意位寬等同于Maximum density,這是CPU一次能拿走的數(shù)據(jù)最大密度,用于GPU的最大密度就可以輕易達(dá)到384bit。特斯拉初代FSD使用的LPDDR4,型號(hào)是MT53D512M32D2DS-046 AAT,容量為16Gb,總共8片,I/O頻率2133MHz,單通道的話其帶寬為2133*64*16,即273GB/s。
HBM是物理堆疊的,它的總線位寬可以是并聯(lián)形式,每個(gè)die有2個(gè)128bit位寬的通道,HBM1只有4層堆疊叫做4-Hi,帶寬可以達(dá)到4*2*128=1024bit,HBM2的I/O頻率是1107MHz,倍頻系數(shù)是2,以英偉達(dá)V100S加速器為例,用了4顆HBM2,帶寬是1107*2*4*1028/8/1000,即1134GB/s。比LPDDR4要高很多。HBM3頻率提到1600MHz,堆疊提高到16層,比HBM1高出4倍,英偉達(dá)最新旗艦H100有多個(gè)版本,其中頂配使用HBM3內(nèi)存5顆,每顆16GB,帶寬是5*1600*2*16*1028,也就是3350GB/s。
HBM通過基板的硅互聯(lián)層與主處理器連接,物理距離遠(yuǎn)遠(yuǎn)小于PCB上內(nèi)存與處理器之間的連接,幾乎逼近L3緩存的連接距離,盡管其運(yùn)行頻率不高,但是這個(gè)速度是真實(shí)速度。順便說一下,HBM只對(duì)AI友好,對(duì)CPU不太友好,CPU需要的是速度,AI需要的是帶寬,兩者是矛盾的,所以大部分自動(dòng)駕駛廠家會(huì)選擇價(jià)格更低的LPDDR,畢竟大部分時(shí)候CPU是主力。
目前SK Hynix全球獨(dú)家供應(yīng)HBM3,而大模型帶來(lái)的服務(wù)器需求暴增,HBM3嚴(yán)重供不應(yīng)求。
據(jù)說HBM3的價(jià)格漲了5倍,當(dāng)然這是夸張的說法。
那么未來(lái)HBM3價(jià)格會(huì)下降嗎?絕無(wú)可能,因?yàn)橄鄬?duì)于1100億美元的DRAM市場(chǎng),HBM市場(chǎng)小得可憐,預(yù)計(jì)2023年不過10億美元,就算最樂觀的預(yù)測(cè)到2025年也不過30億美元,與DRAM市場(chǎng)相比可以忽略不計(jì)。目前,能生產(chǎn)HBM3的全球只有SK Hynix和三星,它們同時(shí)也占據(jù)了60%以上的DRAM市場(chǎng),為了這一點(diǎn)微不足道的市場(chǎng),它們當(dāng)然不會(huì)降價(jià)搶市場(chǎng),服務(wù)器領(lǐng)域?qū)r(jià)格的敏感度又特別低,未來(lái)HBM價(jià)格不會(huì)下降,只會(huì)上升。
想要大模型上車,單單存儲(chǔ)系統(tǒng)增加的成本就是3萬(wàn)美元,芯片運(yùn)算部分至少也會(huì)增加數(shù)萬(wàn)美元成本。
上表是運(yùn)行大模型的常見芯片,至少一個(gè)節(jié)點(diǎn)也就是8顆才能流暢運(yùn)行。
上表是運(yùn)行大模型服務(wù)器一個(gè)節(jié)點(diǎn)的價(jià)格,如百度這樣的企業(yè)需要數(shù)千臺(tái)乃至上萬(wàn)臺(tái)這樣的服務(wù)器,這還是中國(guó)特供版A800的價(jià)格。換到嵌入式系統(tǒng),至少也要增加2-3萬(wàn)美元左右的成本。
自動(dòng)駕駛系統(tǒng)如果要上大模型要增加至少5萬(wàn)美元成本,未來(lái)大模型進(jìn)一步變大,成本會(huì)增加10萬(wàn)美元都有可能,當(dāng)然,實(shí)力企業(yè)不在乎這5萬(wàn)美元,可又會(huì)有多少銷量呢?退一步講,大模型會(huì)導(dǎo)致計(jì)算系統(tǒng)功率輕松超過500瓦功率,這必然導(dǎo)致續(xù)航明顯下降,也絕不可能達(dá)到車規(guī)。所以,大模型不會(huì)上車。