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