新一輪 AI 熱潮下,算力即國力,也是目前 AI 領域重要的成本投入之一。
據鈦媒體AGI編輯計算和整理,2023年,全球 AI 晶片市場規模大約為536億美元。Gartner預測,到2027年,全球AI晶片營收將是2023年市場規模的兩倍以上,達到1194億美元。
今晨Semi Analysis發表的一篇文章稱,目前,全球爭相建立10萬個輝達H100 GPU晶片組成的算力叢集,成本超過40億美元(約合290億元人民幣)。其中,僅GPT-4,在約20000個A100上訓練了90到100天,而如果一個 10萬個 H100 叢集,使用 FP8 訓練 GPT-4 隻需四天時間,換算的成本超過8億美金。
那麼,算力到底被誰卡住了“脖子”?如何最佳化算力成本?本文轉載半導體行業觀察,編譯自semianalysis,詳細闡述 AI 算力成本的部署情況。
有一部分人認為,自 GPT-4 發佈以來,AI 能力一直停滯不前。這通常是正確的,但這只是因為沒有人能夠大幅增加專用於單個模型的計算量。已發佈的每個模型都大致達到 GPT-4 等級(訓練計算約 2e25 FLOP)。
這是因為,專用於這些模型的訓練計算也大致處於同一水平。
以 Google 的 Gemini Ultra、Nvidia Nemotron 340B 和 Meta LLAMA 3 405B 為例,與 GPT-4 相比,專用的 FLOPS 數量級相似甚至更高,但使用了較差的架構,導致這些模型無法解鎖新功能。
儘管 OpenAI 獲得了越來越多的計算資源,但他們主要致力於推出更小、訓練過度、更便宜的推理模型,例如 GPT-4 Turbo 和 GPT-4o。OpenAI 承認他們最近才剛剛開始訓練下一層模型。
人工智慧的下一步顯然是使用大量視訊、圖像、音訊和文字來訓練一個具有數兆參數的多模態轉換器。目前還沒有人完成過這項任務,但人們正在爭先恐後地開展活動。
多個大型人工智慧實驗室(包括但不限於 OpenAI/Microsoft、xAI 和 Meta)正在競相建構擁有超過 100,000 個 GPU 的 GPU 叢集。這些單獨的訓練叢集僅伺服器資本支出就超過 40 億美元(約合人民幣290.22億元)。
但它們也受到資料中心容量和功率不足的嚴重限制,因為 GPU 通常需要共置才能實現高速晶片到晶片聯網。美國能源署資料,一個 100,000 個 GPU 叢集將需要 >150MW 的資料中心容量,一年內消耗 1.59 太瓦時,按 0.078 美元/千瓦時的標準費率計算,成本為 1.239 億美元。
今天,我們將深入研究大型 AI 訓練叢集及其周圍的基礎設施。建構這些叢集比僅僅投入資金要複雜得多。由於各種元件(尤其是網路)的故障率很高,因此實現高利用率更加困難。我們還將介紹這些系統的電源挑戰、可靠性、檢查點、網路拓撲選項、平行方案、機架佈局和總物料清單。在之前,我們介紹了 Nvidia 的 InfiniBand 問題,導致一些公司選擇 Spectrum-X 乙太網路而不是 InfiniBand。我們還將介紹 Spectrum-X 的主要缺陷,超大規模企業選擇 Broadcom 的 Tomahawk 5。
為了說明 100,000 GPU 叢集可以提供多少計算量,OpenAI 為 GPT-4 訓練的 BF16 FLOPS 約為 2.15e25 FLOP(2150 萬 ExaFLOP),在約 20,000 個 A100 上訓練了 90 到 100 天。該叢集的峰值吞吐量僅為 6.28 BF16 ExaFLOP/秒。在 100k H100 叢集上,這個數字將飆升至 198/99 FP8/FP16 ExaFLOP/秒。與 20k A100 叢集相比,峰值理論 AI 訓練 FLOP 增加了 31.5 倍。
在 H100 上,AI 實驗室在兆參數訓練運行中實現了高達 35% 的 FP8 模型 FLOP 利用率 (MFU),40% 的 FP16 MFU。總結一下,MFU 是在考慮開銷和各種瓶頸(例如功率限制、通訊不穩定、重新計算、落後者和低效核心)後,衡量峰值潛在 FLOPS 的有效吞吐量和利用率的指標。一個 100,000 個 H100 叢集使用 FP8 訓練 GPT-4 隻需四天時間。在 100k H100 叢集訓練運行 100 天後,您可以實現約 6e26(6 億 ExaFLOP)的有效 FP8 模型 FLOP。
請注意,硬體可靠性差會顯著降低 MFU( 模型算力利用率)。
100k H100 叢集所需的關鍵 IT 功率約為 150MW。雖然 GPU 本身只有 700W,但在每個 H100 伺服器中,CPU、網路介面卡 (NIC)、電源單元 (PSU) 為每個 GPU 額外佔用約 575W。除了 H100 伺服器之外,AI 叢集還需要儲存伺服器、網路交換機、CPU 節點、光收發器和許多其他項目的集合,這些項目加起來佔 IT 功率的另外約 10%。考慮到約 150MW 的功率,最大的國家實驗室超級計算 El Capitan僅需要 30MW 的關鍵 IT 功率。與工業相比,政府超級電腦相形見絀。
一個主要的電力挑戰是,目前沒有一座資料中心建築能夠容納新的約 150MW 部署。當人們提到 10 萬個 GPU 叢集時,他們通常指的是一個校園,而不是建築。電力需求如此迫切,由於沒有其他選擇,X.AI 甚至將田納西州孟菲斯的一家舊工廠改造成資料中心。
這些叢集通過光收發器聯網,而光收發器的價格與覆蓋範圍成正比。範圍更廣的“單模”DR 和 FR 收發器可以可靠地傳輸訊號約 500 米到約 2 公里,但成本是“多模”SR 和 AOC 收發器的 2.5 倍,後者僅支援最多約 50 米的覆蓋範圍。此外,校園級“相干”800G 收發器也存在,覆蓋範圍超過 2 公里,但價格要高出 10 倍以上。
小型 H100 叢集通常僅通過一層或兩層交換機,以 400G 的速度將每個 GPU 連接到其他每個 GPU,僅使用多模收發器。對於大型 GPU 叢集,必須新增更多交換層,並且光學器件變得非常昂貴。此類叢集的網路拓撲將根據首選供應商、當前和未來的工作負載以及資本支出而有很大差異。
每個設計通常包含一個或多個計算單元,這些單元通過更便宜的銅纜或多模收發器連接。然後,它們將使用更長距離的收發器在“島嶼”之間進行互連。在單一地點交付 155MW 是一項挑戰,但我們正在跟蹤超過 15 個 Microsoft、Meta、Google、Amazon、Bytedance、X.AI、Oracle 等資料中心的建設,這些資料中心將為 AI 伺服器和網路提供如此大的空間。
不同的客戶會根據資料傳輸基礎設施、成本、可維護性、功率、當前和未來的工作負載等多種因素選擇不同的網路拓撲。因此,一些客戶選擇基於 Broadcom Tomahawk 5 的交換機,其他客戶則堅持使用 Infiniband ,而其他客戶則選擇 NVIDIA Spectrum-X 。我們將在下面深入探討原因。
為了理解網路設計、拓撲、可靠性問題和檢查點策略,我們首先快速回顧一下兆參數訓練中使用的 3 種不同類型的平行性:資料平行性(Data Parallelism)、張量平行性(Tensor Parallelism)和管道平行性(Pipeline Parallelism)。我們在這裡對平行性進行了全面的解釋。
資料平行是最簡單的平行形式,其中每個 GPU 都保存模型權重的完整副本,每個 GPU(等級)接收不同的資料子集。這種類型的平行具有最低等級的通訊,因為每個 GPU 之間只需要對梯度進行求和(全部減少)。不幸的是,只有當每個 GPU 都有足夠的記憶體來儲存整個模型權重、啟動、最佳化器狀態時,資料平行才有效。對於像 GPT-4 這樣的 1.8 兆參數模型,僅模型權重和最佳化器狀態就需要多達 10.8 TB 的記憶體進行訓練。
為了克服這些記憶體限制,GPU使用了張量平行。在張量平行中,每個層的工作和模型權重通常分佈在隱藏維度上的多個 GPU 上。中間工作通過全縮減在裝置之間多次交換,涉及自注意力、前饋網路和每個層的層規範化。這需要高頻寬,尤其是需要非常低的延遲。實際上,域中的每個 GPU 都與其他每個 GPU 在每一層上協同工作,就好像它們是一個巨大的 GPU 一樣。張量平行將每個 GPU 使用的總記憶體減少了張量平行等級的數量。例如,目前在 NVLink 上使用 8 個張量平行等級是很常見的,因此這將使每個 GPU 使用的記憶體減少 8。
另一種克服每個 GPU 沒有足夠的記憶體來容納模型權重和最佳化器狀態的挑戰的技術是使用流水線平行。使用流水線平行,每個 GPU 僅具有層的一個子集,並且僅對該層進行計算並將輸出傳遞給下一個 GPU。此技術通過流水線平行等級數減少了所需的記憶體量。流水線平行對通訊量的要求很高,但不像張量平行那麼高。
為了最大化模型 FLOP 利用率 (MFU),公司通常會將三種平行形式結合起來形成 3D 平行。然後在 H100 伺服器內部對 GPU 應用張量平行,然後在同一個 Island 內的節點之間使用管道平行。由於資料平行的通訊量最低,而 Island 之間的聯網速度較慢,因此 Island 之間使用資料平行。
FSDP 之類的整體技術在小型 GPU 世界規模下對於非常大的模型很常見,但它不起作用。它實際上也與 FSDP 不相容。
網路設計時考慮了平行方案。如果每個 GPU 都以最大頻寬連接到胖樹拓撲中的每個其他 GPU,則成本將非常高昂,因為需要 4 層交換。由於每增加一層網路都需要中間的光學元件,因此光學元件的成本將飆升。
因此,沒有人會為大型 GPU 叢集部署full fat tree架構。相反,他們依靠製造具有全胖樹(full fat tree)架構的計算島,同時這些島之間的頻寬較少。有多種方法可以做到這一點,但大多數公司都選擇“超額認購”頂層網路。
例如,請參閱 Meta 的上一代 GPU 叢集架構,最高可達 32,000。總共有 8 個島,它們之間具有全胖頻寬,然後頂部還有另一層交換層,其超額認購率為 7:1。與島內的網路相比,島之間的網路速度要慢 7 倍。
GPU 部署有多個網路、前端、後端和擴展 (NVLink)。在某些情況下,您將在每個網路上運行不同的平行方案。NVLink 網路可能是唯一一個速度足夠快以滿足張量平行頻寬要求的網路。您的後端通常可以輕鬆處理大多數其他類型的平行,但如果存在超額認購,則通常只能使用資料平行。
此外,有些人甚至沒有在頂層擁有超額頻寬的孤島。相反,他們利用從後端網路轉移到前端網路的舉措。
一家大型公司使用前端乙太網路在多個 InfiniBand 島上進行訓練。這是因為前端網路的成本要低得多,並且可以利用建築物和區域路由之間的現有資料中心園區網路。
不幸的是,由於 MoE 等稀疏技術的存在,模型大小增長得更快,前端網路需要處理的通訊量也會增加。必須仔細最佳化這種權衡,否則您最終會擁有兩個成本相同的網路,因為前端網路頻寬最終會增長得如此之大,以至於可能與後端網路頻寬相匹配。
值得注意的是,Google專門使用前端網路進行多 TPU pod 訓練運行。他們的“計算結構”稱為 ICI,最多隻能擴展到 8960 個晶片,並採用昂貴的 800G 光學器件和光路交換機連接每個 64 個 TPU 水冷機架。因此,Google必須通過使 TPU 前端網路比大多數 GPU 前端網路更強大來彌補這一不足。
當在訓練期間使用前端網路時,必須執行島之間的網路拓撲感知全域全歸約。首先,每個 pod 或島將在 pod InfiniBand 或 ICI 網路內執行本地歸約散射,這將使每個 GPU/TPU 擁有梯度子部分的總和。接下來,將使用前端乙太網路網路執行每個主機等級之間的跨 pod 全歸約,然後最終每個 pod 將執行 pod 級全收集。
前端網路還負責載入資料。隨著我們轉向多模態圖像和視訊訓練資料,前端網路需求將呈指數級增長。在這種情況下,前端網路頻寬將在載入大型視訊檔案和執行所有歸約之間爭奪。此外,如果儲存網路流量不規則,您的落後者問題就會增加,這會導致您的整個全歸約速度變慢並且無法進行預測建模。
替代方案是使用 4 層 InfiniBand 網路,超額訂閱率為 7:1,包含 4 個 pod,每個 pod 有 24,576 個 H100,並採用無阻塞 3 層系統。與使用前端網路相比,這為未來的頻寬增加提供了更大的靈活性,因為從 A 棟樓的一個交換機向 B 棟樓的另一個交換機新增更多光纖收發器要容易得多,而對叢集的每個機箱進行完整的前端網路 NIC 升級以將其從 100G 升級到 200G 等則要容易得多。
為了提高可維護性並增加銅網路(<3 米)和多模網路(<50 米)的使用,一些客戶選擇放棄 NVIDIA 推薦的導軌最佳化設計,而是選擇採用機架中間設計。
軌道最佳化是一種讓每台 H100 伺服器連接到 8 個不同的葉交換機(而不是全部連接到同一個機架交換機中間)的技術,這樣每個 GPU 只需 1 個交換機跳轉即可與更遠的 GPU 通訊。這可以提高現實世界中所有集體的性能。所有集體通訊在混合專家 (MoE) 專家平行性中被大量使用。
導軌最佳化設計的缺點是,您必須連接到距離不同的不同葉交換機,而不是連接到靠近伺服器中所有 8 個 GPU 的機架中間交換機。當交換機可以放在同一個機架中時,可以使用無源直連電纜 (DAC) 和有源電纜 (AEC),但在導軌最佳化設計中,交換機不一定位於同一個機架中,必須使用光纖。此外,葉到主幹的距離可能大於 50 米,因此必須使用單模光纖收發器。
通過使用非軌道最佳化設計,您可以用廉價的直接連接銅線替換連接 GPU 和葉交換機的 98,304 個光收發器,從而使您的 GPU 結構中有 25-33% 為銅線。從下面的機架圖可以看出,現在葉交換機位於機架中間,允許每個 GPU 使用 DAC 銅線,而不是每個 GPU 到葉交換機的連接都向上連接到電纜托盤,然後橫向穿過 9 個機架連接到專用的軌道最佳化葉交換機機架。
與光纖相比,DAC 銅纜運行溫度更低、耗電更少且更便宜。由於 DAC 電纜運行溫度更低、耗電更少且更可靠,因此可以減少抖動(網路鏈路間歇性中斷)和故障,這是所有使用光纖的高速互連的主要問題。使用 DAC 銅纜時,Quantum-2 IB 主幹交換機的功耗為 747 瓦。使用多模光纖收發器時,功耗會增加到 1,500 瓦。
此外,對於資料中心技術人員來說,軌道最佳化設計的初始布線極其耗時,因為每條鏈路的末端距離可達 50 米,而且不在同一機架上。相比之下,機架中間設計中,您的葉交換機與連接到葉交換機的所有 GPU 位於同一機架中。在機架中間設計中,您甚至可以在整合工廠測試計算節點到葉交換機的鏈路,因為它們都在同一個機架內。
由於當前前沿訓練技術的同步特性,可靠性是這些巨型叢集最重要的營運問題之一。最常見的可靠性問題是 GPU HBM ECC 錯誤、GPU 驅動程式卡住、光收發器故障、NIC 過熱等。節點不斷出現故障或出現錯誤。
為了將故障恢復的平均時間保持在較低水平並繼續進行訓練,資料中心必須在現場保留熱備用節點和冷備用元件。發生故障時,最好不要停止整個訓練運行,而是換上已經運行的備用節點並繼續訓練。這些伺服器的大部分停機時間只是對節點進行電源循環/重新啟動,並解決出現的任何問題。
不過,簡單的重啟並不能解決所有問題,在許多情況下,它需要資料中心技術人員進行物理診斷和更換裝置。在最好的情況下,資料中心技術人員需要幾個小時才能修復損壞的 GPU 伺服器,但在許多情況下,可能需要幾天時間才能將損壞的節點重新投入訓練運行。損壞的節點和備用熱節點是 GPU,它們沒有積極地為模型做出貢獻,儘管理論上可以提供 FLOPS。
在訓練模型時,需要頻繁將模型檢查點設定到 CPU 記憶體或 NAND SSD 上,以防發生 HBM ECC 等錯誤。發生錯誤時,您必須從較慢的記憶體層重新載入模型和最佳化器的權重並重新開始訓練。可以使用容錯訓練技術(例如Oobleck )來提供使用者級應用程式驅動方法來處理 GPU 和網路故障。
不幸的是,頻繁的檢查點和容錯訓練技術會損害系統的整體 MFU。叢集需要不斷暫停以將其當前權重保存到持久記憶體或 CPU 記憶體中。此外,當您從檢查點重新載入時,通常每 100 次迭代只保存一次。這意味著您最多隻能損失 99 步有用的工作。在 100k 叢集上,如果每次迭代花費 2 秒,則第 99 次迭代失敗會讓您損失最多 229 個 GPU 天的工作量。
故障恢復的另一種方法是讓備用節點通過後端結構從其他 GPU 進行 RDMA 複製。由於後端 GPU 結構大約為 400Gbps,並且每個 GPU 有 80GB HBM 記憶體,因此複製權重大約需要約 1.6 秒。使用這種方法,您最多隻會損失 1 步(因為更多 GPU HBM 將擁有最新的權重副本),因此只需要 2.3 GPU 天的計算量 + 另外 1.85 GPU 天的 RDMA 從其他 GPU HBM 記憶體複製權重。
大多數領先的人工智慧實驗室都已實施了這一技術,但許多較小的公司仍然堅持使用繁重、緩慢、低效的技術,即對所有故障從檢查點重新啟動,因為這種技術過於簡單。通過記憶體重建實現故障恢復可以為大規模訓練運行的 MFU 增加幾個百分點。
最常見的問題之一是 Infiniband/RoCE 鏈路故障。即使每個 NIC 到葉交換機鏈路的平均故障時間為 5 年,由於收發器數量眾多,在全新、正常運行的叢集上,第一次作業故障只需 26.28 分鐘。如果不通過記憶體重建進行故障恢復,由於光學故障,在 100,000 個 GPU 叢集中重新啟動訓練運行所花費的時間將比推進模型所花費的時間更多。
由於每個 GPU 都直接連接到 ConnectX-7 NIC(通過 PCIe 交換機),因此在網路架構等級沒有容錯能力,因此必須在使用者訓練程式碼中處理故障,這直接增加了程式碼庫的複雜性。這是 NVIDIA 和 AMD 當前 GPU 網路結構面臨的主要挑戰之一,即使一個 NIC 發生故障,該 GPU 也沒有其他路徑與其他 GPU 通訊。由於當前 LLM 在節點內使用張量平行的方式,即使一個 NIC、一個收發器或一個 GPU 發生故障,整個伺服器也會癱瘓。
我們正在開展大量工作,以使網路可重新組態,並減少節點的脆弱性。這項工作至關重要,因為現狀意味著,只要有 1 個 GPU 故障或 1 個光學故障,整個 GB200 NVL72 就會癱瘓。價值數百萬美元的 72 GPU 機架癱瘓比價值數十萬美元的 8 GPU 伺服器災難性更大。
Nvidia 已經注意到了這個重大問題,並增加了一個專門的引擎來提高可靠性、可用性和可服務性 (RAS)。我們認為 RAS 引擎會分析晶片級資料,例如溫度、恢復的 ECC 重試次數、時鐘速度、電壓,以預測晶片何時可能發生故障並提醒資料中心技術人員。這將使他們能夠進行主動維護,例如使用更高的風扇速度組態檔案來保持可靠性,在稍後的維護窗口中讓伺服器停止服務以進行進一步的物理檢查。此外,在開始訓練工作之前,每個晶片的 RAS 引擎將執行全面的自檢,例如運行已知結果的矩陣乘法來檢測靜默資料損壞 (SDC)。
一些客戶(例如微軟/Openai)正在進行的另一項成本最佳化是在每台伺服器上使用 Cedar Fever-7 網路模組,而不是使用 8 個 PCIe 外形尺寸的 ConnectX-7 網路卡。使用 Cedar Fever 模組的主要好處之一是,它只允許使用 4 個 OSFP 籠(cages),而不是 8 個 OSFP 籠,從而允許在計算節點端(而不僅僅是交換機端)使用雙連接埠 2x400G 收發器。這將連接到葉交換機的收發器數量從每個 H100 節點 8 個收發器減少到 4 個收發器。將 GPU 連接到葉交換機的計算節點端收發器總數從 98,304 減少到 49,152。
由於 GPU 到葉交換機的鏈路被縮短了一半,這也有助於縮短首次作業故障的估計時間。我們估計,每條雙連接埠 2x400G 鏈路的平均故障時間為 4 年(而單連接埠 400G 鏈路的平均故障時間為 5 年),這將使首次作業故障的估計時間縮短至 42.05 分鐘,這比沒有 Cedar-7 模組的 26.28 分鐘要好得多。
輝達目前正在部署一個使用 NVIDIA Spectrum-X 乙太網路的 100k H100 叢集,並將於今年年底投入營運。
去年,我們介紹了 Spectrum-X 在大型網路中相對於 InfiniBand 的多種優勢。除了性能和可靠性優勢之外,Spectrum-X 還具有巨大的成本優勢。Spectrum-X 乙太網路的優勢在於,每個 SN5600 交換機都有 128 個 400G 連接埠,而 InfiniBand NDR Quantum-2 交換機只有 64 個 400G 連接埠。請注意,Broadcom 的 Tomahawk 5 交換機 ASIC 也支援 128 個 400G 連接埠,這使得當前一代 InfiniBand 處於很大的劣勢。
完全互連的 100k 叢集可以是 3 層,而不是 4 層。使用 4 層而不是 3 層意味著需要 1.33 倍的收發器。由於 Quantum-2 交換機的基數較低,100k 叢集上完全互連的 GPU 的最大數量限製為 65,536 個 H100。下一代 InfiniBand 交換機 Quantum-X800 通過擁有 144 個 800G 連接埠解決了這個問題,但從數字“144”可以看出,這是為與 NVL72 和 NVL36 系統一起使用而設計的,預計在 B200 或 B100 叢集中不會大量使用。儘管使用 Spectrum-X 不需要 4 個層級可以節省成本,但不幸的缺點是您仍然需要從 Nvidia LinkX 產品線購買價格昂貴的收發器,因為其他收發器可能無法工作或未經 Nvidia 驗證。
Spectrum-X 相對於其他供應商的主要優勢在於,Spectrum-X 得到了 NVIDIA 庫(例如 NCCL 和 Jensen)的一流支援,將您推向分配佇列,成為其新產品線的首批客戶之一,而使用 Tomahawk 5 晶片,您需要大量的內部工程工作來使用 NCCL 最佳化您的網路,以實現最大吞吐量。
使用乙太網路而不是 InfiniBand 作為 GPU 結構的一個不幸缺點是,乙太網路目前不支援網路縮減中的 SHARP。網路縮減的工作原理是在網路交換機本身內擁有張量核心來執行每個 GPU 的總和。SHARP 的理論網路頻寬增加是 2 倍,因為它將每個 GPU 必須執行的傳送和寫入次數減少了 2 倍。
Spectrum-X 的另一個缺點是,對於第一代 400G Spectrum-X,Nvidia 使用 Bluefield3 而不是 ConnectX-7 作為臨時解決方案。但對於未來幾代產品,我們預計 ConnectX-8 可以與 800G Spectrum-X 完美配合。對於超大規模量產,Bluefield-3 和 ConnectX-7 卡之間的價格差異約為 300 美元 ASP,另一個缺點是該卡比 ConnectX-7 多耗電 50 瓦。因此,對於每個節點,需要額外 400W 的功率,從而降低整個訓練伺服器的“每皮焦耳智能”。與具有完全相同網路架構的 Broadcom Tomahawk 5 部署相比,您放置 Spectrum X 的資料中心現在需要額外的 5MW 才能部署 100,000 個 GPU。
為了避免支付巨額的 Nvidia 稅,許多客戶都在部署基於 Broadcom Tomahawk 5 的交換機。每台基於 Tomahawk 5 的交換機都具有與 Spectrum-X SN5600 交換機相同的連接埠數量,即 128 個 400G 連接埠,如果您的公司擁有優秀的網路工程師,則可以實現類似的性能。此外,您可以從世界上任何供應商處購買任何通用收發器和銅纜,然後進行混合搭配。