車載大模型的定義尚無,傳統(tǒng)大模型即LLM的參數(shù)一般在70億至2000億之間,而早期的CNN模型參數(shù)通常不到1000萬,CNN模型目前大多做骨干網(wǎng)使用,參數(shù)飛速增加。特斯拉使用META的RegNet,參數(shù)為8400萬,消耗運算資源很少,得分82.9也算不低;小米UniOcc使用META的ConvNeXt-B,參數(shù)8900萬,消耗運算資源最少,得分83.8;華為RadOcc使用微軟的Swin-B,參數(shù)8800萬。相對于早期的CNN模型,這些都可以叫大模型,但要與真正意義上的ChatGPT之類的LLM大模型比,這些是小模型都稱不上,只能叫微模型。
不過,端到端的出現(xiàn)改變了這一現(xiàn)狀,端到端實際上是內(nèi)嵌了一個小型LLM,隨著喂養(yǎng)數(shù)據(jù)的增加,這個大模型的參數(shù)會越來越大,最初階段的模型大小大概是100億參數(shù),不斷迭代,最終會達到1000億以上。非安全類的大模型應(yīng)用基本不用考慮計算問題,所以只要是個手機都敢說能跑數(shù)百億的大模型,實際很多算力不如手機的電腦也能跑,因為延遲多幾秒幾十秒也沒有問題,但自動駕駛必須將延遲降低到幾十毫秒內(nèi)。但你要以為這對算力要求更高了,那就大錯特錯了,存儲帶寬遠比算力重要千倍。
當(dāng)前的主流 LLM 基本都是Decoder Only的Transformer模型,其推理過程可分為兩個階段:
圖片來源:論文 A Survey on Efficient Inference for Large Language Models
Prefill:根據(jù)輸入Tokens(Recite, the, first, law, of, robotics) 生成第一個輸出 Token(A),通過一次Forward就可以完成,在Forward中,輸入Tokens間可以并行執(zhí)行(類似 Bert這些Encoder模型),因此執(zhí)行效率很高。
Decoding:從生成第一個Token(A)之后開始,采用自回歸方式一次生成一個Token,直到生成一個特殊的Stop Token(或者滿足用戶的某個條件,比如超過特定長度)才會結(jié)束,假設(shè)輸出總共有N個Token,則Decoding階段需要執(zhí)行N-1次Forward,這N-1次Forward 只能串行執(zhí)行,效率很低。另外,在生成過程中,需要關(guān)注的Token越來越多(每個Token 的生成都需要Attention之前的Token),計算量也會適當(dāng)增大。
LLM推理計算過程時間分布
圖片來源:論文Memory Is All You Need: An Overview of Compute-in-Memory Architectures for Accelerating Large Language Model Inference
在車載自動駕駛應(yīng)用場合,序列長度基本可等同于攝像頭的像素數(shù)量和激光雷達的點云密度。
圖片來源:論文Memory Is All You Need: An Overview of Compute-in-Memory Architectures for Accelerating Large Language Model Inference
在 LLM 推理中最關(guān)鍵的就是上圖中的Multi-Head Attention(MHA),其主要的計算集中在左圖中灰色的 Linear(矩陣乘)和Scaled Dot-Product Attention中的MatMul 矩陣乘法。
圖中的Mask是一個下三角矩陣,也是因為這個下三角矩陣實現(xiàn)了LLM Decoder的主要特性,每個Token都只能看到當(dāng)前位置及之前的Token。其中的QKV可以理解為一個相關(guān)性矩陣,4個Token對應(yīng)4 個Step,其中:
Step 2依賴Step 1的結(jié)果,相關(guān)性矩陣的第1行不用重復(fù)計算。
Step 3依賴Step 1和Step 2的結(jié)果,相關(guān)性矩陣的第1行和第2行不用重復(fù)計算。
Step 4依賴Step 1、Step 2和Step 3的結(jié)果,相關(guān)性矩陣的第1行、第2行和第3行不用重復(fù)計算。
在Decoding階段Token是逐個生成的,上述的計算過程中每次都會依賴之前的結(jié)果,換句話說這是串行計算,而非GPU擅長的并行計算,GPU大部分時候都在等待數(shù)據(jù)搬運。加速的辦法是計算當(dāng)前Token時直接從KV Cache中讀取而不是重新計算,對于通用LLM,應(yīng)用場景是要考慮多個并發(fā)客戶使用,即Batch Size遠大于1,KV Cache的緩存量會隨著Batch Size暴增,但在車里用戶只有一個,就是自動駕駛端到端大模型,即Batch Size為1。
因為Decoding階段Token逐個處理,使用KV Cache之后,上面介紹的Multi-Head Attention 里的矩陣乘矩陣操作全部降級為矩陣乘向量即GEMV。此外,Transformer模型中的另一個關(guān)鍵組件FFN 中主要也包含兩個矩陣乘法操作,但 Token之間不會交叉融合,也就是任何一個Token都可以獨立計算,因此在Decoding階段不用Cache之前的結(jié)果,但同樣會出現(xiàn)矩陣乘矩陣操作降級為矩陣乘向量。Prefill階段則是GEMM,矩陣與矩陣的乘法。
矩陣乘向量操作是明顯的訪存bound,而以上操作是LLM推理中最主要的部分,這也就導(dǎo)致LLM推理是訪存bound類型。
三星對GPT大模型workload分析
圖片來源:SAMSUNG
上圖是三星對GPT大模型workload分析。在運算操作數(shù)量上,GEMV所占的比例高達86.53%;在大模型運算延遲分析上,82.27%的延遲都來自GEMV,GEMM所占只有2.12%,非線性運算也就是神經(jīng)元激活部分占的比例也遠高于GEMM。
三星對GPU利用率的分析
圖片來源:SAMSUNG
上圖是三星對GPU利用率的分析,可以看出在GEMV算子時,GPU的利用率很低,一般不超過20%,換句話說80%的時間GPU都是在等待存儲數(shù)據(jù)的搬運。還有如矩陣反轉(zhuǎn),嚴格地說沒有任何運算,只是存儲行列對調(diào),完全是存儲器和CPU在忙活。解決辦法很簡單且只有一個,就是用HBM高寬帶內(nèi)存。
與傳統(tǒng)LLM最大不同就是車載的Batch Size是1,導(dǎo)致GPU運算效率暴跌,傳統(tǒng)LLM的Batch Size通常遠大于1,這讓GPU效率增加。
圖片來源:論文SARATHI: Effcient LLM Inference by Piggybacking Decodes with Chunked Preflls
圖上不難看出,Batch Size越大,推理速度反而越快,但KV Cache容量會暴增;車載的Batch Size是1,推理速度反而很慢,好處是根本不用考慮KV Cache的容量。
最終我們可以得出結(jié)論,存儲帶寬決定了推理計算速度的上限。假設(shè)一個大模型參數(shù)為70億,按照車載的INT8精度,它所占的存儲是7GB,如果是英偉達的RTX4090,它的顯存帶寬是1008GB/s,也就是每7毫秒生成一個token,這個就是RTX4090的理論速度上限。特斯拉第一代FSD芯片的存儲帶寬是63.5GB/s,即每110毫秒生成一個token,幀率不到10Hz,自動駕駛領(lǐng)域一般圖像幀率是30Hz;英偉達的Orin存儲帶寬是204.5GB/s,即每34毫秒生成一個token,勉強可以達到30Hz,注意這只是計算的數(shù)據(jù)搬運所需要的時間,數(shù)據(jù)計算的時間都完全忽略了,實際速度要遠低于這個數(shù)據(jù)。并且一個token也不夠用,至少需要兩個token,端到端的最終輸出結(jié)果用語言描述就是一段軌跡,比如直行,直行需要有個限制條件,至少有個速度的限制條件,多的可能需要5個以上token,簡單計算即可得出存儲帶寬需要1TB/s以上。
實際情況遠比這個復(fù)雜的多。車載領(lǐng)域不是傳統(tǒng)LLM使用CPU和GPU分離形式,車載領(lǐng)域的計算SoC都是將CPU和AI運算部分合二為一,AI運算部分通常是GPU或加速器是和CPU共享內(nèi)存的。而在非車載領(lǐng)域,GPU或AI運算部分有獨立的存儲,即顯存。車載領(lǐng)域共享內(nèi)存一般是LPDDR,它主要是為CPU設(shè)計的,注重速度即頻率而非帶寬。不像顯存,一般是GDDR或HBM,注重帶寬,不看重頻率高低。上述所有理論都是基于顯存的,在車載領(lǐng)域共享LPDDR,其性能遠遠低于單獨配置的顯存,無論是速度還是容量,共享存儲都必須遠比單獨的顯存要高才能做到大模型推理計算。
理想用英偉達Orin做了測試,純端到端模式延遲高達1.5秒。
圖片來源:論文DRIVEVLM: The Convergence of Autonomous Driving and Large Vision-Language Models
所以車載領(lǐng)域存儲比算力重要很多,最好的解決辦法是HBM,但太貴了,32GB HBM2最低成本也得2000美元,汽車領(lǐng)域?qū)r格還是比較敏感的,退而求其次,就是GDDR了。GDDR6的成本遠低于HBM,32GB GDDR6大概只要180美元或更低。
幾代GDDR的性能對比
整理:佐思汽研
基本上GDDR6的理論上限就是672GB/s,特斯拉第二代FSD芯片就支持第一代GDDR6,HW4.0上的GDDR6容量為32GB,型號為MT61M512M32KPA-14,頻率1750MHz(LPDDR5最低也是3200MHz之上),是第一代GDDR6,速度較低。即使用了GDDR6,要流暢運行百億級別的大模型,還是無法實現(xiàn),不過已經(jīng)是目前最好的了。
GDDR7正式標準在2024年3月公布,不過三星在2023年7月就發(fā)布了全球首款GDDR7,目前SK Hynix和美光也都有GDRR7產(chǎn)品推出。有些人會說,換上GDDR7顯存不就行了,當(dāng)然沒那么容易,GDDR需要特殊的物理層和控制器,芯片必須內(nèi)置GDDR的物理層和控制器才能用上GDDR,Rambus和新思科技都有相關(guān)IP出售。
圖片來源:網(wǎng)絡(luò)
在芯片領(lǐng)域,GDDR7增加的成本和LPDDR5X一樣的。
特斯拉的HW4.0過了一年半毫無動作,筆者認為特斯拉的第二代FSD芯片顯然是落伍了,特斯拉也不打算大規(guī)模用了,特斯拉的第三代FSD芯片應(yīng)該正在開發(fā)中,可能2025年底就完成開發(fā),至少支持GDDR6X。
大模型時代,Attention Is All You Need,同樣大模型時代 Memory Is All You Need。
-
存儲
+關(guān)注
關(guān)注
13文章
4337瀏覽量
85989 -
帶寬
+關(guān)注
關(guān)注
3文章
940瀏覽量
40988 -
LLM
+關(guān)注
關(guān)注
0文章
295瀏覽量
356
原文標題:車載大模型計算分析:存儲帶寬遠比算力重要
文章出處:【微信號:zuosiqiche,微信公眾號:佐思汽車研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論