忘掉GPU短缺:真正的AI瓶頸早在2007年就被診斷出來了
本文指出,AI的真正瓶頸並非GPU算力,而是內存帶寬。這一觀點可追溯到2007年Ulrich Drepper的論文《每個程序員都應該瞭解的內存知識》。近期AMD、高通和英偉達的動向均反映了這一現實。解決方案如FlashAttention和小型語言模型通過優化數據局部性來緩解問題。
本週,AMD和高通在幾天內相繼宣佈了新的內存封裝方法——AMD將LPDDR5X集成到Versal Premium Gen 2 SoC中,高通則預覽了用於未來推理加速器的“高帶寬計算”。幾周前,英偉達鎖定了SK海力士的HBM供應直至2030年,這與其説是一項採購協議,不如説是對實際限制AI的物理問題的一種對沖。H100的交貨期長達36至52周,預計2026年數據中心將消耗所有內存芯片產量的70%。每個人都在為GPU短缺而恐慌。但GPU沒問題。內存才是瓶頸——而這早在2007年就被診斷出來了。
2007年的論文
我讀Ulrich Drepper的《每個程序員都應該瞭解的內存知識》的時機和大多數工程師一樣——很晚,而且有點尷尬自己等了這麼久。這篇論文發表於2007年,那一年iPhone問世,當時“AI”還意味着國際象棋引擎,訓練萬億參數模型的想法介於科幻和異端之間。Drepper當時並沒有考慮這些。他在考慮緩存行。他的論點直截了當:CPU的速度呈指數級增長,而內存卻沒有。處理器能做什麼與它能被餵給什麼之間的差距每年都在擴大。他遍歷了整個層級——硬盤、RAM、L1/L2緩存——並指出這些層級之間的距離(以納秒為單位)才是唯一真正重要的數字。一個程序如果不斷迫使CPU從主內存而不是片內緩存取數據,那麼即使有快速的處理器,它大部分時間也會閒置,等待字節通過總線到達。他稱之為“內存牆”,並告訴程序員,他們不能再將內存視為一個平坦、均勻的存儲桶。數據存放的位置決定了代碼運行的速度。
同一堵牆,堆棧上移了一層
名稱變了,但形態完全相同。2007年的層級是硬盤→RAM→L1/L2緩存。如今的AI則是HBM→GPU片上SRAM。HBM扮演着主內存的角色,GPU的SRAM則是新的L1緩存。大型模型生成的每個token都需要將千兆字節的權重在兩者之間來回移動,每秒數百萬次。這就是本週新聞如此引人注目的原因。在Blackwell這樣的芯片上,原始算力(TFLOPS)的增長超過內存帶寬的增長達一個數量級。每個人都痴迷的矩陣乘法其實成本很低;而移動數據來執行這些運算才是真正昂貴的,無論是在時間上還是在功耗上。英偉達鎖定HBM供應到2030年並非出於貪婪——而是因為沒有這樣的內存,Blackwell的算力核心就會閒置。AMD和高通重新發明封裝也不是為了好玩;它們是在試圖買回邏輯端已經趕超了的帶寬。今年春天主導財報電話會議的“算力短缺”,幾乎完全是一個貼了GPU標籤的內存帶寬短缺。
解決方案早已寫在論文中
真正解決這個問題的人,其解決方式正是Drepper會預測的。FlashAttention是使大型模型可行的最大突破之一,它並沒有縮小數學運算或簡化架構,而是重寫了注意力計算,使數據儘可能長時間地留在GPU的片上SRAM中,最小化往返HBM的次數。這正是局部性原理——Drepper在2007年懇求程序員理解的概念——在十九年後移植到了Transformer中。小型語言模型的浪潮則是從另一個方向做出的同樣讓步。Llama、Phi、Mistral,以及運行在人們已有任何商品化硬件上的開放權重生態系統——如果你無法足夠快地將一個700億參數的模型搬過總線,那就縮小模型,直到它適合緩存層級。作為一名工作軟件工程師,Sonnet和Opus能為我完成工作的原因,並不是它們比前沿模型更聰明,而是因為前沿模型太消耗內存,無法按市場實際需要的規模進行部署。
物理定律
Drepper以一句經得起時間考驗的話結束了文章:硬件的物理定律決定了軟件的限制。我們將代碼視為抽象的、不受銅線和硅束縛的東西。本週的新聞就是這種幻想走到盡頭時的樣子。贏得下一個十年AI的公司,不會是擁有最多FLOPS的公司——而是那些最終內化了2007年一位Linux內核黑客試圖告訴所有人的道理的公司。芯片變了,但這堵牆沒有。