編輯:編輯部
【新智元導讀】是時候用CPU通用伺服器跑千億參數大模型了!
馬斯克19天建成由10萬塊H100串聯的世界最大超算,已全力投入Grok 3的訓練中。
與此同時,外媒爆料稱,OpenAI和微軟聯手打造的下一個超算叢集,将由10萬塊GB200組成。
在這場AI争霸賽中,各大科技公司們卯足勁加大對GPU的投資,似乎在暗示着擁有更多、更強大的GPU,就能讓自己立于不敗之地。
然而,這種對高端GPU的狂熱追求,并非在所有情況下,都是完美無缺的解決方案。
Pytorch之父表示,技術報告中暗藏了很多基礎設施的有趣細節,包括如何并行化,如何讓系統更可靠等等
就拿穩定性來說,在Llama 3.1訓練的54天裡,Meta的1.6萬塊H100叢集總共遇到了419次意外中斷,相當于平均每3小時發生一次。
而在這之中,有148次(30.1%)是由于各種GPU故障引起的。
相比之下,由CPU故障引發的中斷,隻有2次。
另一方面,想要把Llama 3.1 405B跑起來,還得搭配2台8×H100的DGX工作站才行——即1280GB的顯存。
曾經有位勇士嘗試用一張4090運作,結果等了30分鐘,模型才緩緩吐出一個「The」。
完整的回複,花了整整20個小時
熟悉模型的訓練和推理的朋友都知道,這些事情一點都不奇怪。
叢集搭建(GPU配置、網絡設計、軌道優化等)、叢集管理(實時監控、故障排除等)……個個都是「攔路虎」。
對于缺乏相關經驗和資金的公司來說,該怎麼辦?
最近,浪潮資訊的研發工程師,僅靠4顆CPU,就讓千億參數的「源2.0」在通用伺服器上跑起來了!
面對用Java編寫程式的代碼任務,「源2.0」非常迅速地給出了結果。
再給它上一道推理題——船邊挂着軟梯,離海面2米,海水每小時漲半米,幾小時海水能淹沒軟梯?
同樣,AI幾乎0延遲給出了詳細的解題步驟和答案。
用通用伺服器運作千億參數大模型,可謂是前無古人,這一領域的積累完全是空白,沒有任何經驗可借鑒。
浪潮資訊,究竟是怎麼做到的?
用4顆CPU,撬動千億參數大模型
若要在單台伺服器中,實作千億參數大模型的推理,包含了2個主要階段,均對計算能力提出了硬性需求。
首先,是預填充階段,也叫做前向傳播階段。
這一階段涉及到輸入資料的處理、模型參數第一次讀取。
比如,當你輸入「給我寫一篇有關AI的文章」提示,預填充階段便會将問題中所有token、模型參數,一次性輸入計算。
有時,這一輸入可能是幾個字,也可能是幾千個字,或者是一本著作。
第一階段的計算需求有多大,主要取決于我們輸入的長度。
而在計算第一個token過程中,由于模型首次加載,會在記憶體中存放全部的權重參數,以及KV Cache等資料。
這是模型參數本身所占記憶體空間的2-3倍。
對于千億參數模型來說,大量的參數和資料輸入,需要在強大計算單元中處理。對此,它需要支援向量化指令集、矩陣計算指令集,來實作大量的矩陣乘法和張量運算。
其次,是解碼階段,即在問題全部輸入之後,模型開始輸出結果的階段。
在這個階段,對大模型唯一要求便是,輸出盡可能快。同時,挑戰不再是算力挑戰,轉而為「資料搬運」的挑戰。
它包含了兩部分「資料搬運」:
- 預填充階段生成的大量KV Cache,需要從顯存/記憶體,搬運到計算單元中(工作量非常大)
- 模型參數本身的搬運
這些搬運對大模型的計算和推理速度,起到了一個決定性的作用。資料搬運很快,LLM吐字的速度也會快。
LLM輸出主要通過KV Catch,逐一生成token,并在每步生成後存儲新詞塊的鍵值向量。
是以,千億大模型的實時推理,伺服器需要具備較高的計算能力,以及較高的存儲單元到計算單元的資料搬運效率。
總而言之,在大模型推理的兩階段中,有着截然不同的計算特征,需要在軟硬體方面去做協同優化。
GPU不是萬能的
傳統上,GPU因其具備優越的并行處理能力,一舉成為了AI訓練和推理的首選。
成本
然而,高端GPU伺服器在市場中經常出現供不應求,極難擷取的現象。
僅有資金雄厚的科技巨頭們,諸如微軟、谷歌,才能夠承擔起這筆費用。
另一方面,不僅買不起,更是用不起。
基于GPU的雲服務租用,在推理任務中的代價卻是高昂的。對于科研人員和應用廠商來說,需要實作更高的成本效益,就得另謀他路。
顯存
此外,GPU最大的劣勢之一在于,顯存容量受限。
目前業界LLM的網絡架構,已從GPT逐漸走向MoE。通向AGI的大模型參數規模,隻會呈指數級增長。
這意味着,閉源/開源主流模型的尺寸隻會越來越大,千億參數,甚至萬億參數模型将會成為主流。
對于百億參數模型,20-30GB顯存就夠了。然而,若想跑千億參數,大約需要200-300GB的顯存空間。
目前主流的AI晶片,顯存通常隻有幾十GB,顯然放不下這麼大的模型。(目前最強的AI晶片也沒還沒達到200GB)
被低估的通用伺服器
GPU不行,那就從CPU入手。
雖然目前還搞不定模型的大規模訓練,但通用伺服器在推理任務上,卻意外有着不小的優勢。
在具體實踐的過程中,浪潮資訊的工程師們分别從硬體資源和算法層面入手,攻克了一個個「攔路虎」。
超大記憶體+高速帶寬
算力方面,目前領先的伺服器CPU都已經具備了AI加速功能。
類似于GPU的Tensor core,AMX進階矩陣擴充可以将低精度的計算做加速,編成指令集給CPU的核,利用專用的核做加速。
算法方面,浪潮資訊的通用伺服器可同時支援PyTorch、TensorFlow等主流AI架構,以及DeepSpeed等流行開發工具,滿足了使用者更成熟、易部署、更便捷的開放生态需求。
通信方面,全鍊路UPI(Ultra Path Interconnect)總線互連的設計,則實作了CPU之間高效的資料傳輸:
- 允許任意兩個CPU之間直接進行資料傳輸,減少了通信延遲
- 提供了高傳輸速率,高達16GT/s(Giga Transfers per second)
此外,浪潮資訊的研發工程師還優化了CPU之間、CPU和記憶體之間的走線路徑和阻抗連續性。
依據三維仿真結果,他們調整了過孔排列方式,将信号串擾降低到-60dB以下,較上一代降低了50%。
并且,通過DOE矩陣式有源仿真,找到了通道所有corner的組合最優解,讓算力性能可以得到充分發揮。
記憶體方面,可以說是通用伺服器的最大優勢了。
- 容量
對于4路伺服器來說,隻需給每顆CPU插上8根32GB記憶體,就能輕松達到1TB。插滿之後甚至可以擴充到16TB,最大可支援萬億參數的模型。
- 帶寬
搭配DDR5的記憶體,則可以實作4800MHz × 8bit × 8通道 × 4顆 ÷ 1024 = 1200GB/s的理論上帶寬。
實測結果顯示,讀帶寬為995GB/s、寫帶寬為423GB/s,以及讀寫帶寬為437GB/s。
這個資料,對于一些搭載GDDR顯存的GPU或加速卡,可以說是毫不遜色。
但僅靠硬體遠遠不夠
僅僅依靠硬體創新,是遠遠不夠的,CPU很難進行大模型算法的大規模并行計算。
正如開篇所述,大模型對通信帶寬的要求是非常高的,無論是資料計算、計算單元之間,還是計算單元與記憶體之間。
如果按照BF16精度計算,想要讓千億大模型的運作時延小于100ms,記憶體和計算單元之間的通信帶寬,就至少要達到2TB/s以上。
不僅如此,對于基于擅長大規模并行計算的加速卡設計的AI大模型,通用伺服器的處理器與之并不适配。
原因很明顯:後者雖然擁有高通用性和高性能的計算核心,但并沒有并行工作的環境。
通常來說,通用伺服器會将先将模型的權重傳給一個CPU,然後再由它去串聯其他CPU,實作權重資料的傳輸。
然而,由于大模型在運作時需要頻繁地在記憶體和CPU之間搬運算法權重,這樣造成的後果就是,CPU與記憶體之間的帶寬使用率不高,通信開銷極大。
如何解題?用算法創新
針對以上難題,浪潮資訊提出了「張量并行」(Tensor Parallel)和「NF4量化」兩項技術創新,成功實作了千億大模型Yuan2.0-102B的實時推理。
根據性能分析結果,可以清晰地看到模型中不同部分的計算時間分布——
線性層運作時間占比50%,卷積運作時間占比20%,聚合通信時間占比20%,其它計算占比10%。
注意,在整個推理過程中,計算時間占比達到了80%!
跟使用多個PCIe的AI加速卡相比,這就形成了鮮明的對比——後者的通信開銷可能高達50%,進而導緻嚴重的算力浪費。
Yuan2.0-102B模型推理性能分析結果圖
張量并行
所謂張量并行,就先将卷積算子進行張量切分,然後把大模型中的注意力層和前饋層的矩陣計算權重,分别輸入到多個處理器的記憶體中。
如此一來,通用伺服器中的4顆CPU便可同時擷取算法權重,進行計算加速。
不過,張量并行對模型參數的切分粒度較細,要求CPU在每次張量計算後都要進行資料同步。
對于這個需求,前文提到的全鍊路UPI總線互連技術,完全可以滿足(通信帶寬高達16GT/s)。
最終,這種協同并行工作,直接讓計算效率提升了4倍!
NF4量化
至于記憶體帶寬不足的問題,則需要在不影響精度的情況下對模型進行「瘦身,也就是量化。
其優勢在于,一方面可以将LLM參數量化成低比特資料,權重會變小。另一方面,權重縮小之後,在計算時傳輸的資料量也會變小。
這裡,浪潮資訊采用了一種并不多見的分位數量化方法——NF4(4位NormalFloat)。
NF4量化方法可将Yuan2.0-102B的尺寸壓縮到原來的1/4
具體來說,NF4的核心思想是,確定量化區間内輸入張量的值數量相等。
這個特點,恰恰非常适合呈現近似正态分布的LLM權重。
由于可以通過調整标準差來适配量化資料類型的範圍,NF4相較于傳統的4位整數或4位浮點數量化,可以獲得更高的精度。
如此一來,量化之後的模型既能滿足精度需求,又能大幅降低大規模并行計算的訪存資料量,進而達到了實時推理的解碼需求。
整數或浮點數量化方法的資料間隔通常是平均分布或指數分布的
為了進一步壓縮模型的權重參數,團隊還采用了嵌套量化(Double Quant)技術。
這是在NF4量化基礎上,進行了二次量化。
因為NF4量化後會産生大量的scale參數,如果使用32位浮點數(FP32)存儲,會占用大量記憶體。
對于一個千億參數的LLM,若以每64個參數作為一個量化塊(block size=64)來計算,僅存儲scale參數就需要額外的6GB記憶體:(100B ÷ 64) × 4 = 6GB。
團隊通過将這些scale參數量化到8位浮點數(FP8),顯著減少了所需的存儲空間。
在采用256為量化塊大小(block size=256)的情況下,存儲所有scale參數所需的額外空間僅為1.57GB:(100B ÷ 64 ÷ 256) × 4 + (100B ÷ 64) × 1 = 1.57GB.
通過嵌套量化,模型的每個權重參數最終僅占用4位元組的記憶體空間,比原始FP32節省了大量的記憶體占用空間。
與此同時,它将從記憶體到CPU的資料搬運效率,提高了4倍。
這樣的優化顯著減輕了記憶體帶寬對Yuan2.0-102B模型推了解碼效率的限制,進而進一步提升了模型的推理性能。
所謂通用,就是讓大家都用上
到這裡,浪潮資訊就成功交卷了!
通過系統優化,浪潮資訊的NF8260G7,在業界首次實作了僅基于通用處理器,支援千億參數大模型的運作。
至此,通用算力可支援的AI大模型,參數規模突破了千億,徹底填補了行業空白,成為了企業擁有AI的新起點。
千億參數AI的模型的部署,從此有了性能更強、成本更經濟的選擇;AI大模型應用,可以和雲、大資料、資料庫,實作更緊密的融合。
科技進步的最終目的,一定是落入凡間。
放眼當下,AIGC已經滲透進千行百業。AI已經以驚人的速度,滲透進了每一個計算裝置。
2024年1-4月,國内大模型的中标數量,已經超越了2023全年總數,中标披露金額已經達到了2023年全年的77%。
在金融行業、醫院門診部,企業的IT部門,從業者都發現了這一點:傳統行業的算力基礎設施,已經不夠用了!
如今,千億參數大模型,是千行百業智能湧現的關鍵。而通用算力能否運作千億參數大模型,正是衡量其能否支撐千行百業智能湧現的關鍵。
浪潮資訊的創舉,讓網際網路、金融、醫療等行業客戶可實作高效部署,首次投入就可節約80%以上的建設成本。
無論是金融防欺詐、财務資料分析、企業CRM營銷洞察、醫療智能診斷、個性化診療方案、教育教育訓練等等,都将見證AI的廣泛應用。
從此,一切計算皆AI。
參考資料:
https://mp.weixin.qq.com/s/1wYt7dfoVy2J1FFkOJjRTg