在傳統(tǒng)集群架構(gòu)中,遵循的是“存算分離”與“節(jié)點(diǎn)互聯(lián)”原則,每一塊GPU都是一座孤島,擁有自己獨(dú)立的領(lǐng)地(HBM顯存),并且只聽(tīng)得懂“本地話”,需要訪問(wèn)隔壁服務(wù)器的數(shù)據(jù)時(shí),必須走一套繁瑣的“外交程序”:
步驟一是數(shù)據(jù)搬移,發(fā)送端將數(shù)據(jù)從HBM拷貝到系統(tǒng)內(nèi)存;
步驟二是協(xié)議封裝,將數(shù)據(jù)切片封裝TCP/IP或RoCE報(bào)文頭。
步驟三是網(wǎng)絡(luò)傳輸,數(shù)據(jù)包經(jīng)過(guò)交換機(jī)路由至目標(biāo)節(jié)點(diǎn)。
步驟四是解包與重組,接收端進(jìn)行協(xié)議棧解析并剝離報(bào)文頭。
步驟五是數(shù)據(jù)寫(xiě)入,數(shù)據(jù)最終寫(xiě)入目標(biāo)設(shè)備的內(nèi)存地址。
這個(gè)過(guò)程的學(xué)術(shù)名詞是“序列化-網(wǎng)絡(luò)傳輸-反序列化”,存在幾毫秒的延遲。在處理網(wǎng)頁(yè)請(qǐng)求時(shí),這種延遲不會(huì)影響到用戶體驗(yàn)。但在大模型訓(xùn)練中,模型被切分成成千上萬(wàn)塊,每一層神經(jīng)網(wǎng)絡(luò)的計(jì)算都需要在芯片間進(jìn)行極高頻次的同步。就像做一道數(shù)學(xué)題時(shí),每寫(xiě)一個(gè)數(shù)字都要給隔壁同學(xué)打電話確認(rèn)一下,解題效率可以說(shuō)“慘不忍睹”。
業(yè)界針對(duì)性地提出了“超節(jié)點(diǎn)”的概念,并規(guī)定了三個(gè)硬性指標(biāo)——大帶寬、低時(shí)延、內(nèi)存統(tǒng)一編址。
前兩個(gè)概念不難理解,簡(jiǎn)單來(lái)說(shuō)就是路修寬點(diǎn)(大帶寬),車(chē)跑快點(diǎn)(低時(shí)延),最核心、最難實(shí)現(xiàn)的恰恰是“內(nèi)存統(tǒng)一編址”:目標(biāo)是構(gòu)建一個(gè)全局唯一的虛擬地址空間,集群內(nèi)所有芯片的內(nèi)存資源被映射成一張巨大的地圖,不管數(shù)據(jù)是在自己的顯存里,還是在隔壁機(jī)柜的內(nèi)存里,對(duì)于計(jì)算單元來(lái)說(shuō),只是一個(gè)地址的區(qū)別。
同樣是做一道數(shù)學(xué)題時(shí),不用給隔壁同學(xué)“打電話”,而是直接“伸手”拿數(shù)據(jù)。“序列化與反序列化”開(kāi)銷(xiāo)被消除了,“通信墻”不復(fù)存在,算力利用率也就有了提升空間。
既然“內(nèi)存統(tǒng)一編址”被證實(shí)是正確路徑,為什么市面上的某些“超節(jié)點(diǎn)”,依然停留在服務(wù)器堆疊?
不單單是工程能力的差距,還在于“通信語(yǔ)義”的代際差,涉及到通信協(xié)議、數(shù)據(jù)所有權(quán)和訪問(wèn)方式。
目前有兩種主流的通信方式。
![]()
一種是面向分布式協(xié)作的消息語(yǔ)義,通常由發(fā)送和接收操作體現(xiàn),工作方式像“寄快遞”。
假設(shè)要傳遞一本書(shū),得先把書(shū)打包封箱(構(gòu)建數(shù)據(jù)包)、填寫(xiě)快遞單寫(xiě)上對(duì)方的地址和電話(IP地址、端口)、叫快遞員送到物流中心(交換機(jī))、對(duì)方收到快遞后拆箱拿出書(shū)(解包)、最后對(duì)方還得回復(fù)“收到了”(ACK確認(rèn))。
一套流程下來(lái),即使快遞跑得再快(大帶寬),打包、拆包和中間流轉(zhuǎn)的時(shí)間(延遲和CPU開(kāi)銷(xiāo))也是省不掉的。
另一種是面向并行計(jì)算的內(nèi)存語(yǔ)義,通常由加載和存儲(chǔ)指令體現(xiàn),工作方式像“從書(shū)架上拿書(shū)”。
同樣是傳遞一本書(shū),直接走到公共書(shū)架旁,伸手拿下來(lái)(Load指令),并在看完后放回去(Store指令)。沒(méi)有打包,沒(méi)有填單子,沒(méi)有“中間商賺差價(jià)”,效率上的提升不言而喻。
諸如TCP/IP、InfiniBand、RoCE v2等支持消息語(yǔ)義,也是通信墻存在的直接誘因,但靈衢、NVLink等協(xié)議已經(jīng)支持內(nèi)存語(yǔ)義。既然如此,為什么“偽超節(jié)點(diǎn)”仍然做不到內(nèi)存統(tǒng)一編址呢?
因?yàn)閮?nèi)存語(yǔ)義的皇冠明珠是“緩存一致性”:如果節(jié)點(diǎn)A修改了共享內(nèi)存地址0x1000的數(shù)據(jù),而節(jié)點(diǎn)B的L2緩存中存有該地址的副本,必須確保節(jié)點(diǎn)B的副本立即失效或更新。
想要實(shí)現(xiàn)“內(nèi)存語(yǔ)義”,必須滿足兩個(gè)條件:
首先是通信協(xié)議和緩存一致性。
通信協(xié)議傳輸?shù)牟辉偈潜恐氐?ldquo;數(shù)據(jù)包”,而是包含內(nèi)存地址、操作碼(讀/寫(xiě))和緩存狀態(tài)位的“Flit”。同時(shí)還需要緩存一致性協(xié)議,通過(guò)總線廣播一致性信號(hào),確保所有計(jì)算單元看到的信息是相同的。
其次是充當(dāng)“翻譯官”的交換芯片。
交換芯片扮演了“翻譯官”的角色,讓CPU、NPU/GPU等設(shè)備在統(tǒng)一的協(xié)議下互聯(lián)互通,整合為一個(gè)統(tǒng)一的全局地址空間,不管數(shù)據(jù)存在哪塊內(nèi)存里,都只有一個(gè)“全局地址”,CPU、NPU/GPU之間可以直接通過(guò)地址訪問(wèn)。
![]()
無(wú)法滿足上述條件的“偽超節(jié)點(diǎn)”,大多采用的是PCIe+RoCE協(xié)議互聯(lián)方案,屬于典型的“大字吸睛、小字免責(zé)”。
RoCE跨服務(wù)器內(nèi)存訪問(wèn)需要RDMA,不支持統(tǒng)一內(nèi)存語(yǔ)義、缺乏硬件級(jí)的緩存一致性,依然需要網(wǎng)卡、隊(duì)列、門(mén)鈴機(jī)制來(lái)觸發(fā)傳輸,本質(zhì)上還是在“寄快遞”,只是快遞員跑得快了一點(diǎn)。而PCIe的理論帶寬單lane為64GB/s,比超節(jié)點(diǎn)的帶寬要求低了一個(gè)數(shù)量級(jí)。
結(jié)果就是,以“超節(jié)點(diǎn)”的名義宣傳,卻不支持內(nèi)存統(tǒng)一編址,無(wú)法做到全局的內(nèi)存池化以及AI處理器之間的內(nèi)存語(yǔ)義訪問(wèn)。集群只能實(shí)現(xiàn)“板卡級(jí)”的內(nèi)存共享(比如單機(jī)內(nèi)8張卡互通),一旦跨出了服務(wù)器節(jié)點(diǎn),所有訪存都需要通過(guò)消息語(yǔ)義通信,在優(yōu)化上存在明顯瓶頸。
可能有不少人會(huì)問(wèn),費(fèi)這么大勁搞“內(nèi)存統(tǒng)一編址”,到底有什么用,僅僅是為了技術(shù)上的“潔癖”嗎?
先說(shuō)結(jié)論:內(nèi)存統(tǒng)一編址絕非“屠龍之技”,在大模型訓(xùn)練和推理的實(shí)戰(zhàn)中,已經(jīng)被證實(shí)存在巨大收益。
第一個(gè)場(chǎng)景是模型訓(xùn)練。
在訓(xùn)練萬(wàn)億參數(shù)的超大模型時(shí),HBM容量往往是首要瓶頸。一張卡80GB顯存,塞進(jìn)模型參數(shù)和中間狀態(tài)后,往往所剩無(wú)幾。
當(dāng)顯存不夠時(shí),傳統(tǒng)的做法是“Swap to CPU”——利用PCIe把數(shù)據(jù)搬到CPU的內(nèi)存里暫存。但存在一個(gè)大問(wèn)題:PCIe的帶寬太低了,而且需要CPU參與拷貝。數(shù)據(jù)搬來(lái)搬去的時(shí)間,比GPU計(jì)算的時(shí)間還長(zhǎng),訓(xùn)練速度大幅下降。
![]()
在真正的超節(jié)點(diǎn)架構(gòu)下,CPU的內(nèi)存(DDR)和NPU的顯存(HBM)都在同一個(gè)地址空間里,可以采用“以存代算”的策略精細(xì)管理內(nèi)存:將暫時(shí)不用的數(shù)據(jù)或權(quán)重offload到CPU內(nèi)存上,需要的時(shí)候通過(guò)“大帶寬&低時(shí)延”的能力快速拉回片上內(nèi)存激活,NPU的利用率可以提升10%以上。
第二個(gè)場(chǎng)景是模型推理。
在多輪對(duì)話中,每輪對(duì)話都需要Put和Get,Put將KV數(shù)據(jù)存入內(nèi)存池,Get從內(nèi)存池取KV數(shù)據(jù),需要更大的KV Cache空間進(jìn)行頻繁的數(shù)據(jù)存儲(chǔ)。
傳統(tǒng)集群的KV Cache通常是綁定在單張卡的顯存上的,如果用戶問(wèn)了一個(gè)超長(zhǎng)的問(wèn)題,節(jié)點(diǎn)A的顯存被KV Cache撐爆了,附近的節(jié)點(diǎn)B即使顯存空著,沒(méi)有內(nèi)存統(tǒng)一編址也無(wú)法借用,必須把任務(wù)重新調(diào)度、重新計(jì)算。
![]()
有了內(nèi)存統(tǒng)一編址,就可以實(shí)現(xiàn)KV Cache的全局池化,并支持Prefix Cache復(fù)用(前綴緩存)。比如“System Prompt”通常是固定的,只需要在全局內(nèi)存里存一份,所有節(jié)點(diǎn)都可以通過(guò)“一存多取”的方式直接讀取。在PreFix Cache命中率100%時(shí),集群的吞吐性能可以提升3倍。
第三個(gè)場(chǎng)景是推薦系統(tǒng)。
搜索、廣告、推薦是互聯(lián)網(wǎng)的“搖錢(qián)樹(shù)”,依賴超大規(guī)模的Embedding表。由于Embedding表通常遠(yuǎn)超單機(jī)內(nèi)存,必須分片存儲(chǔ)在不同服務(wù)器上。
在推理過(guò)程中,模型需要頻繁地從Host側(cè)(CPU內(nèi)存)或遠(yuǎn)端Device側(cè)拉取特定的特征向量。如果是RoCE等“寄快遞”的方式處理小包,光是打包拆包的開(kāi)銷(xiāo)就占了大頭,導(dǎo)致嚴(yán)重的門(mén)鈴效應(yīng),延遲居高不下。
![]()
而利用內(nèi)存統(tǒng)一編址,配合硬件級(jí)的內(nèi)存?zhèn)鬏斠妫?jì)算單元可以直接向遠(yuǎn)端內(nèi)存發(fā)起讀取指令,自動(dòng)處理數(shù)據(jù)的搬運(yùn)。當(dāng)?shù)谝粋€(gè)向量還在路上時(shí),第二個(gè)請(qǐng)求已經(jīng)發(fā)出了,極大地降低了通信延遲,提升端到端的推薦效率,有望實(shí)現(xiàn)最小化開(kāi)銷(xiāo)。
不夸張地說(shuō),“大帶寬、低時(shí)延、內(nèi)存統(tǒng)一編址”三大能力相互協(xié)同,才能真正實(shí)現(xiàn)讓集群像一臺(tái)計(jì)算機(jī)一樣工作,才能實(shí)現(xiàn)真正的超節(jié)點(diǎn),才是大模型訓(xùn)練與推理的完美“搭子”,才是AGI時(shí)代算力基礎(chǔ)設(shè)施進(jìn)化的必然方向。缺少“內(nèi)存統(tǒng)一編址”能力,終歸只是在蹭“超節(jié)點(diǎn)”的流量。
當(dāng)我們拆開(kāi)“超節(jié)點(diǎn)”的層層偽裝,可以看到AI基礎(chǔ)設(shè)施的競(jìng)爭(zhēng)已經(jīng)從單純的堆砌硬件,上升到了體系結(jié)構(gòu)的競(jìng)爭(zhēng)。
“內(nèi)存統(tǒng)一編址”這個(gè)聽(tīng)起來(lái)晦澀難懂的技術(shù)名詞,某種程度上等同于通往下一代計(jì)算范式的入場(chǎng)券:作為“One NPU/GPU”的必備能力,打破了物理服務(wù)器的圍墻,讓成千上萬(wàn)顆芯片的“靈魂”融為一體。而那些仍然停留在“服務(wù)器暴力堆疊”的產(chǎn)品,終將被淹沒(méi)在摩爾定律失效的洪流中。
快報(bào)
根據(jù)《網(wǎng)絡(luò)安全法》實(shí)名制要求,請(qǐng)綁定手機(jī)號(hào)后發(fā)表評(píng)論