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