瓶頸)
1. AI集群的通信瓶頸為什么GPU之間的PCIe通路反而成了短板1.1 算力翻倍之后互聯(lián)鏈路最先暴露問題上個月給一家做AI訓(xùn)練平臺的公司做架構(gòu)評審對方拿著一張八卡GPU服務(wù)器的結(jié)構(gòu)圖問我GPU之間能不能全部走PCIe交換不走NVLink這個問題放在三年前可能沒什么人問但在PCIe 5.0交換芯片逐漸鋪開之后它成了很多做AI集群的人必須面對的現(xiàn)實問題。先說結(jié)論P(yáng)CIe交換在AI集群里不是要不要用的問題而是怎么用、用在哪一層的問題。過去大家習(xí)慣把CPU當(dāng)成PCIe拓?fù)涞闹行腉PU、網(wǎng)卡、NVMe硬盤全部直接掛到CPU的PCIe根端口上。CPU的PCIe lane數(shù)量有限主流的服務(wù)器CPU能提供的lane數(shù)大概在64到128條之間。聽起來不少但一個x16的GPU就要吃掉16條lane一張網(wǎng)卡再吃掉16條兩塊NVMe又占掉8條很快就見底了。更麻煩的是PCIe根端口一旦分配出去拓?fù)渚突竟潭ㄏ胝{(diào)整很費(fèi)勁。AI集群的通信壓力比傳統(tǒng)業(yè)務(wù)大得多。大模型訓(xùn)練要用All-Reduce、All-to-All這類集合通信每個訓(xùn)練步都要把分布在多張GPU上的梯度數(shù)據(jù)同步一遍。算力越強(qiáng)同步數(shù)據(jù)量越大通信耗時占比就越明顯。GPU的浮點算力這幾年翻了好幾倍但PCIe互連如果還是老拓?fù)溆?xùn)練效率就會被“木桶效應(yīng)”拖死。PCIe 5.0把單lane速率提到32GT/sx16鏈路單向能跑到約63GB/s的有效帶寬雙向理論帶寬約126GB/s。這個數(shù)字相比PCIe 4.0翻了一倍但注意這只是鏈路本身的能力實際端到端能不能跑滿取決于拓?fù)浣Y(jié)構(gòu)、交換芯片、驅(qū)動配置、中斷綁定等一大堆因素。很多團(tuán)隊只盯著GPU型號和網(wǎng)絡(luò)方案等到訓(xùn)練任務(wù)一跑發(fā)現(xiàn)卡間通信成了瓶頸才開始排查PCIe鏈路。這個時候往往改造成本最高。1.2 PEX89000系列是什么它到底解決了什么問題博通PEX89000系列是面向數(shù)據(jù)中心AI/ML場景的PCIe 5.0交換芯片。它的核心職責(zé)很簡單在PCIe設(shè)備之間做數(shù)據(jù)轉(zhuǎn)發(fā)就像網(wǎng)絡(luò)交換機(jī)在IP網(wǎng)絡(luò)里做的事一樣。設(shè)備A要往設(shè)備B發(fā)數(shù)據(jù)不必再繞道CPU根端口PEX89000直接把兩端口的通路打通實現(xiàn)P2PPeer-to-PeerDMA傳輸。這個能力對GPU互聯(lián)特別重要。GPU訓(xùn)練時的梯度同步本質(zhì)上是多張GPU之間的數(shù)據(jù)拷貝。如果沒有PCIe交換芯片數(shù)據(jù)要從GPU A拷貝到CPU內(nèi)存再通過CPU發(fā)往GPU B中間多繞了兩次延遲增加CPU也被占用。有了交換芯片GPU A的數(shù)據(jù)能直接通過PCIe交換網(wǎng)絡(luò)抵達(dá)GPU B路徑短、延遲低CPU可以騰出來干別的事。PEX89000系列的另一個特點是端口配置靈活。它支持把物理lane拆分成x16、x8、x4等不同寬度的端口一顆芯片可以同時接多張GPU、多塊NVMe、多張網(wǎng)卡把它們組織成一個統(tǒng)一的高速互連域。這個“扇形展開”的能力正好補(bǔ)上CPU根端口lane數(shù)量不足、拓?fù)浣┗膯栴}。還有些型號支持多主機(jī)模式和非透明橋NTB功能。通俗點說多主機(jī)模式允許兩顆CPU共同管理一套PCIe子系統(tǒng)NTB則讓不同主機(jī)之間通過共享內(nèi)存窗口交換數(shù)據(jù)。這兩個特性疊加意味著PEX89000不僅能做單機(jī)內(nèi)的GPU互聯(lián)還能把多臺服務(wù)器的PCIe資源池化按需分配給不同計算節(jié)點。市面上不少高端AI服務(wù)器和存儲池化方案就是拿它當(dāng)核心樞紐。1.3 為什么NVLink代表不了PCIe交換提到GPU互聯(lián)很多人第一反應(yīng)是NVLink、NVSwitch。NVLink確實是NVIDIA私有協(xié)議里性能很強(qiáng)的方案在單機(jī)八卡場景里GPU到GPU的帶寬能到900GB/s以上遠(yuǎn)超PCIe。但它有個前提只能用NVIDIA自己的GPU且只在NVIDIA的HGX基板里生效?,F(xiàn)實是AI集群里不只有NVIDIA卡。AMD的Instinct、Intel的Gaudi、各種國產(chǎn)加速卡都跑在PCIe生態(tài)里。即便是NVIDIA自己的方案GPU之間跑NVLink但GPU到網(wǎng)卡、GPU到NVMe存儲、GPU到CPU的數(shù)據(jù)通路走的依然是PCIe。換句話說PCIe互聯(lián)在AI集群里是一個繞不開的基礎(chǔ)層NVLink更像是構(gòu)建在它之上的“高速公路”。RoCE、InfiniBand這類網(wǎng)絡(luò)方案能跨節(jié)點傳輸延遲和帶寬也不錯但它們屬于“機(jī)間互聯(lián)”解決的是服務(wù)器與服務(wù)器之間的通信。服務(wù)器內(nèi)部——GPU和網(wǎng)卡之間、GPU和存儲之間、多個加速設(shè)備之間——始終需要PCIe來完成最終的數(shù)據(jù)交付。如果把AI集群看作物流系統(tǒng)InfiniBand是城市之間的高速公路PCIe交換就是城市內(nèi)部的道路網(wǎng)。路網(wǎng)規(guī)劃不好高速公路上跑得再快下了匝道照樣堵死。所以PEX89000的定位不是替代NVLink或InfiniBand而是把機(jī)箱內(nèi)、機(jī)架內(nèi)的基礎(chǔ)互聯(lián)做扎實讓上層的高速網(wǎng)絡(luò)能夠真正發(fā)揮價值。把它加進(jìn)AI集群架構(gòu)不是多此一舉而是補(bǔ)上最容易忽略的短板。2. 用PEX89000搭GPU互聯(lián)三種可行的拓?fù)渑c選型邏輯2.1 單機(jī)多卡擴(kuò)展以PCIe交換為中心的重組方案最常見的使用場景是把PEX89000用在單臺8卡或4卡服務(wù)器里解決CPU根端口不夠用、拓?fù)洳混`活的問題。先看一個典型對比。沒有PCIe交換時8張GPU要直連CPUCPU必須至少有128條PCIe lane可用還得在BIOS里精心分配給網(wǎng)卡和NVMe留出位置。即便勉強(qiáng)夠用所有數(shù)據(jù)都經(jīng)過CPU根端口CPU內(nèi)部的PCIe控制器會成為瓶頸數(shù)據(jù)延遲偏高。加一顆PEX89000之后拓?fù)淇梢愿某蛇@樣CPU只出兩個x16上行端口到交換芯片PEX89000下行出8個x16端口分別接8張GPU剩余端口再接網(wǎng)卡和NVMe。GPU之間要同步數(shù)據(jù)時數(shù)據(jù)從一張GPU發(fā)出經(jīng)交換芯片直接轉(zhuǎn)發(fā)到另一張GPU完全不經(jīng)過CPU。CPU根端口只承擔(dān)控制平面和少量管理流量壓力驟減。這個方案的選型要點是上下行帶寬配比。8張GPU同時對CPU發(fā)數(shù)據(jù)的話兩顆x16上行總共提供約126GB/s的單向帶寬低于8張GPU的峰值總和。好在實際訓(xùn)練過程中GPU之間通信占大頭真正需要上行到CPU的流量主要是啟動、日志、控制類消息不會持續(xù)打滿。如果你要做的是數(shù)據(jù)密集型推理或頻繁落盤的訓(xùn)練任務(wù)就得評估一下上行帶寬是否夠用必要時用兩顆PEX89000分?jǐn)傁滦性O(shè)備避免單芯片過載。2.2 多主機(jī)共享與NTB跨CPU資源池化的底子多主機(jī)和NTB是PEX89000比普通PCIe交換芯片高一個段位的能力也是構(gòu)建GPU資源池的關(guān)鍵。多主機(jī)模式簡單理解就是多個獨立的主機(jī)CPU根聯(lián)合體共享同一個PCIe交換域。傳統(tǒng)PCIe拓?fù)涫菃胃囊粋€主機(jī)管一套設(shè)備多主機(jī)模式下PEX89000通過地址路由把不同主機(jī)的訪問空間隔離開讓兩顆CPU可以各自管理一部分下游端口互不干擾。這個機(jī)制在高端存儲控制器、雙節(jié)點服務(wù)器里很有價值。NTB則更進(jìn)一步。非透明橋允許兩個主機(jī)之間建立一個共享內(nèi)存窗口主機(jī)A往這個窗口里寫數(shù)據(jù)主機(jī)B就能直接讀到不需要以太網(wǎng)或InfiniBand介入跳過了協(xié)議棧延遲可以壓到亞微秒級。在很多分布式訓(xùn)練框架里跨主機(jī)梯度同步用共享內(nèi)存做比走網(wǎng)絡(luò)快得多。不過這里要提醒一句NTB的組網(wǎng)對軟件棧要求不低。硬件只是把共享窗口搭好能不能高效利用取決于驅(qū)動和中間件。廠商一般會提供對應(yīng)的SDK和驅(qū)動實際部署時要把驅(qū)動版本、內(nèi)存分配策略、NUMA感知這些細(xì)節(jié)全部對齊否則共享通道建好了應(yīng)用層不會用帶寬照樣浪費(fèi)。2.3 機(jī)架級PCIe Fabric與存儲池化從單機(jī)走向集群當(dāng)AI集群規(guī)模從單機(jī)擴(kuò)展到機(jī)架甚至整個機(jī)房PEX89000的角色會從“機(jī)內(nèi)交換”升級為“機(jī)架級PCIe Fabric”的節(jié)點。機(jī)架級PCIe Fabric的核心思路是把GPU、NVMe盤、網(wǎng)卡這些PCIe設(shè)備全部從固定的服務(wù)器里“摘”出來掛到一個由多顆PEX89000組成的交換網(wǎng)絡(luò)上再按需把它們動態(tài)分配給計算節(jié)點。某臺訓(xùn)練節(jié)點任務(wù)量大就多分幾張GPU某臺存儲節(jié)點容量吃緊就調(diào)整NVMe資源分配。硬件利用率能從傳統(tǒng)的“買一臺服務(wù)器綁死一套資源”模式里解放出來。存儲池化是其中一個典型應(yīng)用。訓(xùn)練數(shù)據(jù)、模型檢查點、日志文件都放在集中式NVMe存儲池里計算節(jié)點通過PCIe Fabric直接訪問延遲比經(jīng)過以太網(wǎng)存儲網(wǎng)關(guān)低一個量級。實測下來小文件隨機(jī)讀場景的延遲改善尤其明顯因為數(shù)據(jù)通路短了協(xié)議轉(zhuǎn)換少了。PEX89000在這個場景里往往是成對或成組出現(xiàn)的。一顆芯片作為某個區(qū)域的根交換多顆芯片之間通過高速上行鏈路相連形成一張二級交換網(wǎng)絡(luò)。拓?fù)鋸?fù)雜之后規(guī)劃變得很重要哪個區(qū)域跑GPU流量哪個區(qū)域跑存儲流量要不要隔離故障域都要在初始設(shè)計階段定清楚。機(jī)架級Fabray的好處是彈性好代價是規(guī)劃復(fù)雜度高沒有足夠的軟硬件調(diào)試能力不建議輕易上手。3. 32GT/s不是標(biāo)個參數(shù)就能跑信號完整性與板級設(shè)計實操3.1 信號完整性PCIe 5.0最容易被低估的一關(guān)PCIe 5.0的32GT/s速率聽起來只是比4.0翻了一倍但對硬件設(shè)計的影響是跳躍式的。信號頻率升高后PCB走線、過孔、連接器、甚至PCB板材本身的介質(zhì)損耗都會對信號質(zhì)量產(chǎn)生嚴(yán)重影響。PCIe Gen5對通道損耗的預(yù)算通常是32dB左右走線越長、損耗越大留給鏈路的余量就越小。到了這個速率普通的FR4板材和傳統(tǒng)走線工藝基本到了極限。如果你用的還是FR4、走線超過一二十英寸、中間還過了好幾個過孔眼圖大概率是閉合的鏈路要么訓(xùn)練失敗要么糾錯計數(shù)一路飆升性能遠(yuǎn)低于預(yù)期。實際做板時我建議優(yōu)先考慮這些點第一PCB材料盡量用M6級別以上的低損耗板材雖然成本漲一些但信號質(zhì)量會穩(wěn)很多第二高速差分走線要盡量短從交換芯片到連接器再到GPU接口的距離能壓縮就壓縮第三過孔要背鉆減少stub對信號的反射第四做阻抗連續(xù)設(shè)計走線寬度、間距、參考平面要嚴(yán)格按照計算值來。這些工作量大但省不掉。PCIe 4.0時代很多團(tuán)隊靠多打幾塊板子調(diào)試就能硬趟過去到了Gen5幾乎不可能設(shè)計階段不留足余量后面就只能用retimer硬救。3.2 Retimer和Redriver什么時候必須加信號劣化到一定程度光靠布線優(yōu)化已經(jīng)不夠了得靠Retimer或Redriver這類信號調(diào)理芯片來“重振旗鼓”。這兩者的區(qū)別在于Redriver只是放大信號補(bǔ)償損耗噪音也一并放大Retimer內(nèi)部有CDR時鐘數(shù)據(jù)恢復(fù)電路能把信號的定時信息重新恢復(fù)效果更好延遲也略高。PEX89000到GPU之間的距離太長或者中間經(jīng)過多個連接器時不要猶豫直接上Retimer。PCIe 5.0的信號完整性余量很小靠Redriver補(bǔ)增益往往治標(biāo)不治本尤其是在鏈路兩端設(shè)備本身信號質(zhì)量一般的情況下Retimer的穩(wěn)定性優(yōu)勢非常明顯。選擇Retimer時還要注意兼容性。博通自己有配套的PCIe Retimer產(chǎn)品和PEX89000的鏈路調(diào)優(yōu)配合得比較順暢。實際部署中我遇到過國外某品牌的Retimer和交換芯片組合后鏈路訓(xùn)練成功率不穩(wěn)定的情況最后換成配套方案才解決。不是說不可以用第三方而是建議在選型階段就做交叉兼容性測試別等板子貼完再排查。3.3 一個具體參考8卡GPU服務(wù)器里怎么掛兩顆PEX89000下面舉一個當(dāng)前比較常見的部署方式給大家一個直觀感受。整機(jī)的主板分前后兩個區(qū)域。靠近CPU的位置放兩顆PEX89000CPU各出兩個x16上行分別接到這兩顆交換機(jī)。每顆交換機(jī)下行出4個x16端口接4張GPU剩下幾個x8或x4端口接NVMe盤和網(wǎng)卡。GPU的供電、散熱、結(jié)構(gòu)固定件單獨設(shè)計與交換芯片的散熱通道互不干擾。這個布局最大的好處是均衡。兩顆交換芯片各管4張GPU上行帶寬各自獨立不會出現(xiàn)8張GPU搶同一條上行通道的情況。GPU之間的東西向流量走同一顆交換芯片延遲更低南北向流量比如GPU與存儲盤、GPU與網(wǎng)卡也被拆到兩顆芯片上壓力分散。散熱上需要特別留意。PEX89000的功耗雖然比GPU低得多但在服務(wù)器緊湊空間里不能忽視建議給它配獨立的散熱片和風(fēng)道。如果機(jī)箱風(fēng)道設(shè)計不好交換芯片過熱會觸發(fā)降頻連帶整個PCIe交換網(wǎng)絡(luò)的延遲性能一起下降。這個坑不那么顯眼但踩到的人不少。4. 固件、BIOS和Linux讓系統(tǒng)真正認(rèn)識這顆交換芯片4.1 固件初始化端口拆分與流量類型的配置順序PEX89000不是一個插上就能用的傻瓜芯片。板上電后它需要從EEPROM讀取配置確定端口怎么拆分、每個端口的lane數(shù)、是否啟用NTB、是否開啟CXL相關(guān)功能。這個過程如果配置不對后面Linux啟動時設(shè)備枚舉都會出問題。端口拆分的典型場景是一顆48端口規(guī)格的交換芯片按需求拆成3個x16端口加若干個x8、x4端口。這個映射關(guān)系在固件里定義好再通過總線枚舉讓系統(tǒng)認(rèn)到對應(yīng)的PCIe橋。拆分不對最常見的后果是某張GPU只被識別成x8鏈路帶寬折半而你在系統(tǒng)里看lspci還對不出問題。流量類型TC/VC的配置也容易被忽略。PEX89000支持多個虛擬通道可以給不同類型的流量分配不同優(yōu)先級。AI訓(xùn)練場景里GPU P2P通信應(yīng)該走高優(yōu)先級通道管理流量走低優(yōu)先級防止突發(fā)的管理操作擠占數(shù)據(jù)帶寬。這些配置在固件階段就要定好操作系統(tǒng)層面很難高效干預(yù)。4.2 Linux枚舉與BAR空間新手最容易翻車的地方系統(tǒng)啟動后Linux會枚舉PCIe總線為每個設(shè)備分配內(nèi)存地址空間。PCIe交換芯片在這個環(huán)節(jié)常見的問題是下行設(shè)備太多、橋接層級太深導(dǎo)致總線號分配不夠或者BAR基地址寄存器窗口太小設(shè)備資源沖突。我遇到過最典型的卡點是接了多張GPU后某張卡的BAR空間無法分配導(dǎo)致GPU狀態(tài)變成“disabled”。查下來發(fā)現(xiàn)是BIOS給交換芯片root port預(yù)留的bus range太窄設(shè)備一多就不夠用。解決方法是進(jìn)BIOS手動增大PCIe bus range或者調(diào)整交換芯片的端口拓?fù)渖疃葴p少bus資源消耗。還有一個容易被忽視的點PCIe交換機(jī)本身的端口會占用額外的bus號。如果一顆PEX89000下掛了很多設(shè)備bus號分配層級會比直連多好幾級對BIOS的自動分配能力是很大考驗。生產(chǎn)環(huán)境里不要完全依賴BIOS自動配置手動規(guī)劃好bus range和memory窗口更穩(wěn)妥。4.3 錯誤處理與熱插拔故障域一定要隔離AI集群里的GPU故障率不低一臺8卡機(jī)器跑半個月壞一張卡是很正常的事。PCIe交換芯片在這里面臨的挑戰(zhàn)是當(dāng)一個下游端口上的設(shè)備出錯時錯誤不能擴(kuò)散到整機(jī)否則一張卡壞了整套訓(xùn)練任務(wù)都得停。PEX89000支持標(biāo)準(zhǔn)的PCIe錯誤處理機(jī)制包括AER高級錯誤報告、DPC下游端口包含等。DPC的作用很關(guān)鍵當(dāng)一個下游端口發(fā)生致命錯誤時它能把該端口隔離起來阻止錯誤報文向其他端口廣播其他設(shè)備不受影響。這樣系統(tǒng)可以嘗試重置出錯設(shè)備或者通知管理軟件把該設(shè)備下線實現(xiàn)一定程度的故障隔離。在實際部署中建議在BIOS里把這些錯誤處理特性全部啟用然后在Linux里配置好對應(yīng)驅(qū)動做一輪故障注入測試。拔一張卡、模擬鏈路錯誤觀察其他設(shè)備是否正常運(yùn)行。很多團(tuán)隊等到上線后才第一次遇到GPU卡故障然后整機(jī)PCIe總線掛死重啟都困難這種體驗確實很痛。5. 實測性能、帶寬分配與調(diào)優(yōu)不是做了拓?fù)渚屯晔?.1 帶寬分配的現(xiàn)實聚合帶寬不等于有效帶寬PEX89000規(guī)格書上的聚合帶寬很高但“聚合”和“實測有效帶寬”是兩回事。PCIe交換芯片在內(nèi)部有仲裁機(jī)制多個下行端口同時向同一個上行端口發(fā)數(shù)據(jù)時上行端口會成為瓶頸數(shù)據(jù)得排隊。這種競爭在實際訓(xùn)練里一定會發(fā)生尤其是All-Reduce階段多張GPU要同時交換數(shù)據(jù)流量模式高度集中。所以做性能評估時不要只看單端口跑bandwidth test的峰值要看多端口同時工作時的表現(xiàn)。舉個例子某顆交換芯片單端口跑到x16單向63GB/s但8個端口同時向兩個上行端口灌數(shù)據(jù)時平均每個端口可能只能分到十幾GB/s。這是物理限制不是bug。把測試方案設(shè)計成貼近真實負(fù)載比對著規(guī)格書做期望測算有意義得多。測試工具不一定要很復(fù)雜先用常見的P2P帶寬測試工具看兩兩GPU之間的通信速率再用分布式訓(xùn)練框架的集合通信測試跑一輪觀察實際訓(xùn)練吞吐是否達(dá)標(biāo)。5.2 調(diào)優(yōu)方向TLP大小、中斷綁定與NUMA感知硬件拓?fù)浯詈弥筌浖{(diào)優(yōu)能帶來非??捎^的收益我自己的經(jīng)驗是至少能拉開30%到50%的性能差距。第一個值得動手的地方是Max Payload SizeMPS和Max Read Request SizeMRRS。這兩個參數(shù)分別決定了一次TLP包最多能攜帶多少數(shù)據(jù)、一次讀請求最多能讀回多少數(shù)據(jù)。MPS偏小會讓數(shù)據(jù)被切成太多小包協(xié)議開銷占比升高帶寬上不去MPS偏大會占用更多緩沖空間不一定兼容所有設(shè)備。建議把鏈路兩端設(shè)備統(tǒng)一調(diào)成256或512字節(jié)然后用實測結(jié)果試出最優(yōu)值。第二個關(guān)鍵是中斷綁定。多GPU訓(xùn)練的卡間通信會觸發(fā)大量完成中斷MSI/MSI-X如果中斷落在CPU的某個繁忙核心上會增加額外延遲。用irqbalance或手動設(shè)置親和性把網(wǎng)卡和PCIe交換相關(guān)的中斷綁定到對應(yīng)NUMA node的空閑核心上訓(xùn)練吞吐會有直觀改善。第三個是NUMA感知。兩顆PEX89000分別掛在兩顆CPU下GPU和CPU之間天然有遠(yuǎn)近之分。訓(xùn)練任務(wù)的進(jìn)程、內(nèi)存頁面和GPU設(shè)備如果跨NUMA訪問性能會打折扣。啟動訓(xùn)練框架前仔細(xì)核對GPU的拓?fù)錃w屬用NUMA綁定參數(shù)把進(jìn)程釘在正確的CPU上內(nèi)存分配策略也設(shè)置成本地優(yōu)先。5.3 觀察指標(biāo)別漏掉Corrected Errors這里分享一個很多運(yùn)維團(tuán)隊容易忽略的監(jiān)控項PCIe Corrected Errors。這類錯誤不會導(dǎo)致設(shè)備掉線系統(tǒng)會自動重傳或糾錯業(yè)務(wù)看起來一切正常但糾錯次數(shù)累積到一定程度說明鏈路余量不足性能已經(jīng)在悄悄下滑。用工具查看PCIe錯誤統(tǒng)計核心關(guān)注AER的Corrected Errors計數(shù)尤其是可恢復(fù)的接收錯誤、不良TLP這類計數(shù)。如果這些數(shù)字在持續(xù)增長需要立刻檢查鏈路訓(xùn)練狀態(tài)、信號完整性和連接器接觸情況。等設(shè)備報Fatal Error再處理往往已經(jīng)晚了。我在實際項目里經(jīng)??吹紾PU訓(xùn)練速度突然下降排查到最后都是PCIe鏈路誤碼率偏高系統(tǒng)在不斷重傳數(shù)據(jù)訓(xùn)練效率自然掉。所以說PCIe在AI集群里的健康度監(jiān)控應(yīng)該和GPU溫度、網(wǎng)絡(luò)丟包一樣納入日常巡檢范圍。6. 幾顆芯片部署下來我踩過的坑和最后想說的6.1 坑只改硬件不改軟件性能一樣上不去第一次把PEX89000放進(jìn)GPU服務(wù)器時我以為只要拓?fù)浯顚α讼到y(tǒng)就能自動發(fā)揮全部性能。結(jié)果訓(xùn)練任務(wù)一跑All-Reduce帶寬低得讓人懷疑人生。查了一輪才發(fā)現(xiàn)驅(qū)動里沒有開啟P2P優(yōu)化中斷全部落在CPU核心0上MPS參數(shù)也是默認(rèn)的128字節(jié)各種小包把鏈路協(xié)議開銷拉滿。經(jīng)歷這一次之后我明白PCIe交換芯片帶來的拓?fù)渥兓皇腔A(chǔ)真正把它跑出效果需要硬件和軟件協(xié)同作戰(zhàn)。拿到新硬件先花時間把所有驅(qū)動參數(shù)、BIOS選項、中斷綁定策略全部過一遍用測試工具量出基線再做針對性調(diào)優(yōu)。6.2 坑過度依賴自動化配置出了問題難定位用PEX89000搭建機(jī)架級Fabric時配置復(fù)雜度會成倍上升很多人喜歡一鍵腳本自動化部署。自動化本身沒問題但一旦出問題排查鏈路變得特別長。我遇到過一次端口拆分配置被某個腳本覆蓋導(dǎo)致整機(jī)PCIe枚舉混亂每一張GPU鏈路都只剩x4排查了很久才定位到是配置管理的問題。后來我堅持把關(guān)鍵的固件配置版本化每顆交換芯片的配置都記錄在案任何改動都留變更記錄。這套笨辦法在排障時救了我很多次比什么都靈。6.3 最后說幾句PCIe 5.0交換芯片在AI集群里的價值不只是多接幾張卡那么簡單它改變的是整個拓?fù)涞撵`活性。算力資源可以解耦、可以池化、可以按需分配這些都是過去單機(jī)直連模式給不了的。如果你正在規(guī)劃AI訓(xùn)練集群我建議不要只盯著GPU型號和高速網(wǎng)絡(luò)方案把PCIe互聯(lián)層一并納入整體設(shè)計從拓?fù)湟?guī)劃、信號完整性設(shè)計到固件配置、軟件調(diào)優(yōu)都當(dāng)作系統(tǒng)工程來做。底層的路修好了上層再快的車才跑得起來。