Fire-Flyer(火烈鳥) AI-HPC:面向深度學習的軟硬件協同設計,打造高性價比計算平臺 精華
1. 深度學習的算力饑渴與 HPC 的成本困境
深度學習的浪潮,正以勢不可擋的姿態席卷而來。從圖像識別領域的 AlexNet 和 ResNet,到自然語言處理領域的 Transformer,再到如今參數規模動輒千億、萬億的大型語言模型 (LLM),如 GPT-3 和 PaLM,以及混合專家模型 (MoE) 和多模態模型,深度學習模型的能力在不斷突破,但其背后對計算資源的需求也呈現出爆炸式的增長。
高性能計算 (HPC) 集群,作為支撐深度學習訓練的基石,其重要性日益凸顯。然而,傳統的 HPC 集群,往往面向雙精度科學計算,對深度學習訓練的支持并不完美。基于 GPU 的 HPC 集群雖然能夠較好地支持深度學習訓練,但隨著模型規模的不斷擴大,建設成本也急劇攀升。更快的計算芯片和互連技術固然性能強勁,但其高昂的價格卻讓許多研究機構和企業望而卻步。此外,大規模集群的能耗問題也日益突出,不僅增加了運營成本,也對環境可持續性構成了挑戰。
如何在滿足深度學習日益增長的算力需求的同時,控制 HPC 集群的建設成本和能耗,成為了一個擺在整個行業面前的難題。這不僅僅是一個技術問題,更是一個關乎深度學習未來發展方向的關鍵問題。
2. Fire-Flyer AI-HPC:軟硬件協同設計的破局之道
DeepSeek-AI 的研究團隊敏銳地捕捉到了這一挑戰,依托于實踐提出了 Fire-Flyer AI-HPC 這一創新性的軟硬件協同設計架構。Fire-Flyer AI-HPC 的核心理念,并非簡單地追求硬件性能的堆砌,而是通過對硬件和軟件的深度融合與精細優化,打造一個高性價比、高可擴展性、高穩定性的深度學習計算平臺。
Fire-Flyer AI-HPC 架構的精妙之處,在于它并非孤立地看待計算、網絡、存儲等各個環節,而是將它們作為一個整體進行系統性的設計和優化。從計算節點的硬件配置,到網絡拓撲的選擇,再到通信庫、訓練框架、存儲系統以及資源管理平臺的開發,每一個環節都經過了精心的考量和定制,以實現最佳的整體性能和成本效益。
3. Fire-Flyer 2:以 PCIe A100 為核心的務實選擇
Fire-Flyer 2 是 Fire-Flyer AI-HPC 架構的第一個具體實現,它選擇了一條務實而高效的道路——以 PCIe A100 GPU 為核心,構建一個面向深度學習和早期 LLM 訓練的高性能計算集群。
每個 Fire-Flyer 2 計算節點的配置都體現了對性能、成本和能耗的精妙平衡。8 個 NVIDIA A100 PCIe GPU 提供了強大的計算能力,足以應對當前大多數深度學習模型的訓練需求。選擇 PCIe 版本的 A100,而非 SXM 版本,是在性能和成本之間做出的權衡。雖然 SXM 版本的 A100 具有更高的 NVLink 帶寬,但其價格也更為昂貴。對于 Fire-Flyer 2 的目標應用場景而言,PCIe A100 的性能已經足夠,而其更低的成本則能夠顯著降低整個集群的建設成本。
1 個 Mellanox CX6 200Gbps IB 網卡為計算節點提供了高速的網絡連接,確保節點間的數據傳輸不會成為瓶頸。2 顆 AMD 32 核 EPYC Rome/Milan CPU 則承擔了數據預處理、通信調度等輔助任務,與 GPU 形成互補,共同完成深度學習訓練的各項任務。512GB 16 通道 DDR4-3200MHz 內存則為大規模數據的存儲和訪問提供了充足的容量和帶寬。
Fire-Flyer 2 的計算節點采用了 GPU 和網卡直連 CPU 的設計,省去了 PCIe 交換機。這樣做的好處是最大程度地利用了 PCIe 帶寬,減少了數據傳輸的延遲和開銷。因為數據不需要經過 PCIe 交換機的轉發,直接在 GPU、網卡和 CPU 之間傳輸,從而提高了整體的通信效率。此外,Fire-Flyer 2 還預留了 NVLink 橋接的空間,為未來的擴展留下了余地。如果將來需要更高的 GPU 間通信帶寬,可以通過安裝 NVLink 橋接器來實現。
與 NVIDIA 的 DGX-A100 系統相比,Fire-Flyer 2 在成本和能耗方面具有顯著優勢。其節點成本約為 DGX-A100 的 60%,能耗也約為 DGX-A100 的 60%。雖然 PCIe A100 在某些性能測試中略低于 DGX-A100,但考慮到其顯著的成本優勢,Fire-Flyer 2 無疑具有更高的性價比。
*上面術語太多,做個注釋:
SXM版本的A100,更準確地說是A100 SXM4,是NVIDIA A100 Tensor Core GPU為了極致高性能計算和數據中心應用而采用SXM4封裝和連接方式的特殊版本,它相比PCIe版本擁有更高的性能潛力、更優的NVLink連接及更高的GPU密度,堪比F1賽車專為賽道馳騁。
而NVIDIA DGX A100系統正是為了充分發揮SXM版本A100的極致性能而設計的高度集成平臺,DGX A100必須且只能使用SXM接口的A100 GPU模塊,因為SXM接口是實現DGX A100系統內8個A100 GPU通過NVLink高速互聯、達到極致AI訓練和推理性能的關鍵,正如高鐵列車必須搭載專門設計的高功率發動機才能高速運行,DGX A100系統和SXM A100 GPU是為追求極致性能而生的完美組合,PCIe版本的A100則無法滿足DGX A100對GPU互連速度和整體系統性能的苛刻需求。*
4. Fat-Tree 網絡:高帶寬與精細調優的結合
網絡架構對于 HPC 集群的性能至關重要。Fire-Flyer 2 采用了雙層 Fat-Tree 網絡拓撲,并將存儲和計算網絡整合在一起。Fat-Tree 拓撲以其高二等分帶寬的特性而著稱,能夠確保集群中任意兩個節點之間都能以較高的帶寬進行通信,避免了網絡擁塞的發生。這種拓撲結構非常適合 AI-HPC 和高吞吐量存儲環境對網絡帶寬的嚴苛要求。
Fire-Flyer 2 的集群被劃分為兩個區域,每個區域構成一個 800 端口的 Fat-Tree 網絡,連接大約 600 個 GPU 計算節點。這種分區設計不僅降低了網絡成本,還支持跨區域任務的執行,提高了集群的靈活性和利用率。
為了防止網絡擁塞,Fire-Flyer 2 團隊采取了一系列精細的網絡調優策略。首先,利用 InfiniBand 的服務級別 (SL) 技術,將不同類型的流量(如控制流量、數據流量、存儲流量)分配到不同的虛擬通道 (VL) 中。這就像在高速公路上為不同類型的車輛劃分不同的車道,避免了相互干擾,保證了關鍵流量的優先級。其次,采用靜態路由策略,避免了自適應路由 (AR) 可能導致的網絡擁塞擴散問題。自適應路由雖然在某些情況下能夠提高網絡利用率,但在大規模集群中,其動態調整路由的行為可能會導致擁塞的快速蔓延,反而降低整體性能。靜態路由則像預先規劃好的路線,雖然可能不是在所有情況下都是最優的,但它能夠保證網絡的穩定性和可預測性。再次,將存儲節點、計算節點和管理節點均勻地分布在網絡中,使得存儲流量能夠均勻地分散到各個鏈路,避免了局部熱點的產生。最后,針對 NCCL (NVIDIA Collective Communications Library) 進行了深度優化,調整 NCCL 拓撲,使其優先在同一 NUMA 節點的 IB 網卡和 GPU 之間進行通信,減少跨 NUMA 節點通信帶來的 PCIe 擁塞;同時,啟用了 PCIe Relaxed Ordering,進一步降低擁塞,提高帶寬利用率。
5. HFReduce:通信庫的創新,突破 allreduce 瓶頸
在大規模深度學習訓練中,allreduce 操作是一個非常頻繁且耗時的操作。它負責將所有 GPU 上計算得到的梯度進行匯總,然后更新模型的參數。傳統的 allreduce 實現,如 NCCL,雖然已經經過了高度優化,但在 PCIe 架構下,仍然存在一定的性能瓶頸。
為了解決這個問題,Fire-Flyer 2 團隊自主研發了 HFReduce 通信庫,專門針對 allreduce 操作進行了深度優化。HFReduce 的核心思想是“先局部 reduce,再全局 allreduce”。它巧妙地利用了 CPU 和 GPU 各自的優勢。首先,在每個節點內部,利用 CPU 的向量指令(如 AVX512)對節點內所有 GPU 的數據進行快速 reduce 操作。由于 CPU 擅長執行向量化計算,這一步能夠非常高效地完成。然后,將每個節點 reduce 后的結果,利用雙二叉樹算法和 RDMA 傳輸,進行節點間的 allreduce 操作。雙二叉樹算法能夠有效地減少通信的跳數,降低通信延遲;RDMA 傳輸則能夠直接在節點間進行數據傳輸,避免了 CPU 的參與,進一步降低了開銷。
這種分而治之的策略,使得 HFReduce 相比于 NCCL 具有顯著的優勢。首先,它大幅降低了 PCIe 帶寬的消耗。由于節點內部的 reduce 操作已經在 CPU 上完成,節點間只需要傳輸 reduce 后的結果,數據量大大減少,從而降低了對 PCIe 帶寬的壓力。尤其是在大規模集群中,這一優勢更加明顯。其次,它消除了 GPU 內核的開銷。HFReduce 的 reduce 操作完全在 CPU 上進行,不占用寶貴的 GPU 計算資源,避免了 NCCL 的 GPU 內核啟動開銷,使得 GPU 能夠更專注于深度學習模型的計算。
為了進一步提升性能,HFReduce 還支持 NVLink 加速。通過在 PCIe A100 GPU 之間安裝 NVLink 橋接器,可以利用 NVLink 的高帶寬進行 GPU 之間的預 reduce 操作,進一步減少 PCIe 帶寬的壓力,然后再將結果傳輸到 CPU 進行最終的 allreduce。
HFReduce 的實現細節也體現了精益求精的工匠精神。對于小數據量的傳輸,利用 GDRCopy (GPU Direct RDMA) 技術,直接在 GPU 之間進行數據拷貝,避免了 CPU 的參與,降低了延遲;利用 CPU 的 SIMD (Single Instruction, Multiple Data) 指令,如 AVX512,對 reduce 操作進行向量化加速,充分發揮 CPU 的計算能力;優化內存訪問模式,減少跨 NUMA 節點訪問內存帶來的延遲;利用 RDMA (Remote Direct Memory Access) 技術,實現高效的節點間數據傳輸,避免額外的 CPU 開銷。
6. HaiScale:為深度學習量身打造的訓練框架
HaiScale 是 Fire-Flyer 2 AI-HPC 的深度學習訓練框架,它不僅僅是一個簡單的訓練工具,而是針對 PCIe 架構進行了全方位的優化,旨在最大程度地發揮硬件性能,為深度學習訓練提供強大的支持。
HaiScale 實現了一個增強版的分布式數據并行 (DDP) 算法。通過異步 allreduce 和反向傳播計算的重疊,HaiScale 進一步提高了訓練效率。傳統的 DDP 算法在進行 allreduce 操作時,需要等待所有 GPU 完成梯度計算,然后才能進行參數更新。HaiScale 則將 allreduce 操作和反向傳播計算進行重疊,即在 GPU 計算梯度的同時,就開始進行部分 allreduce 操作,從而隱藏了通信延遲,提高了整體的訓練效率。
針對 LLM 訓練,HaiScale 提供了多種并行化策略的支持,包括張量并行 (TP)、流水線并行 (PP) 和全分片數據并行 (FSDP)。對于需要高帶寬的張量并行操作,HaiScale 支持利用 NVLink 橋接,實現 PCIe GPU 之間的張量并行,提升 TP 效率。對于流水線并行,HaiScale 通過精細的數據并行 rank 配置,錯開不同流水線階段的執行時間,減少網絡競爭,提升流水線并行的效率。對于全分片數據并行 (FSDP),HaiScale 針對 PCIe 架構進行了深度優化,包括高效的內存管理,減少內存碎片,提升內存利用率;以及通信與計算重疊,將參數的通信和計算過程進行重疊,隱藏通信延遲。
除了上述策略外,HaiScale 還支持 ZeRO (Zero Redundancy Optimizer) 等其他并行化策略。用戶可以根據不同的模型和訓練需求,靈活選擇合適的策略,實現最佳的訓練效率。HaiScale 的這種靈活性和可擴展性,使得它能夠適應各種不同的深度學習訓練場景。
7. 存儲、資源管理與穩定性:全方位的保障
Fire-Flyer 2 采用了計算-存儲一體化網絡設計,將計算流量和存儲流量融合在同一網絡中,簡化了網絡架構,降低了成本。為了避免網絡擁塞,Fire-Flyer 2 采取了前面提到的多種網絡調優策略。
在存儲方面,Fire-Flyer 2 采用了自主研發的 3FS 分布式文件系統。3FS 針對 NVMe SSD 和 RDMA 網絡進行了專門的優化,實現了高吞吐量和低延遲,滿足了深度學習訓練對存儲系統的高要求。3FS 存儲節點的配置包括:1 顆 AMD 64 核 EPYC 7742 CPU,512GB 8 通道 DDR4-3200MHz 內存,2 個 Mellanox CX6 200Gbps IB 網卡,以及 16 個 15.36TB PCIe 4.0x4 NVMe SSD。
3FS 的核心技術之一是采用了 Chain Replication with Apportioned Queries (CRAQ) 協議。CRAQ 實現了強一致性和高性能。它將讀寫操作分離,寫操作在鏈式復制的尾節點執行,讀操作可以在任意節點執行,從而提高了讀性能。此外,3FS 還通過精細的請求發送控制機制,有效地緩解了網絡擁塞,實現了可持續的高吞吐量。
為了進一步提升 LLM 服務的效率和經濟性,Fire-Flyer 2 還開發了 3FS-KV 分布式數據處理系統,支持 KV 存儲、消息隊列和對象存儲等多種模式,并支持 DeepSeek 的 KV Context Caching on Disk 技術,可以將 LLM 服務的成本降低一個數量級。
在任務調度和資源管理方面,Fire-Flyer 2 采用了 HAI 平臺。HAI 平臺采用分時調度策略,根據資源需求和集群負載情況進行任務調度,并鼓勵用戶進行多 GPU 并行訓練,提高資源利用率。
為了保證集群的穩定可靠運行,Fire-Flyer 2 實現了多種機制,包括檢查點管理器 (Checkpoint Manager) 和驗證器 (Validator)。檢查點管理器能夠將模型參數和優化器狀態分塊寫入 3FS,實現快速保存和加載,并采用周期性異步保存策略,減少硬件故障帶來的損失。驗證器則定期檢查硬件的運行狀態,及時發現潛在問題。
8. 總結與展望:Fire-Flyer AI-HPC 的深遠意義
Fire-Flyer 2 AI-HPC 不僅僅是一個高性能計算集群,更是一個深度學習軟硬件協同設計的典范。它通過對計算節點、網絡架構、通信庫、訓練框架、存儲系統以及資源管理平臺的全面優化,實現了深度學習訓練的高性能、低成本和可持續性。Fire-Flyer 2 的成功,證明了軟硬件協同設計在構建高性價比 AI 基礎設施方面的巨大潛力。
Fire-Flyer AI-HPC 的研究成果和實踐經驗,為 AI-HPC 集群的建設和發展提供了寶貴的參考,也為深度學習的未來發展奠定了堅實的基礎。隨著深度學習技術的不斷演進,Fire-Flyer AI-HPC 也將持續創新,不斷探索 AI-HPC 架構的未來,為人工智能的發展貢獻力量。
附錄
對于NVlink,DeepSeek的研究人員是邊用邊罵:
B. Discussion about NVLink Technology Choices
Initially, we did not use NVLink to avoid extra costs and maintain stability, as HFReduce was sufficient for training requirements at that time. However, as the demand for LLMs increased, we added NVLink specifically for LLM training purposes. The decision to install NVLink should be based on actual needs due to its potential drawbacks。
還在附錄里列出了關鍵的典型錯誤:
IB網絡也被吐槽的體無完膚,這也許是之前英偉達股票狂跌的原因之一吧
圖片
。
而且仔細想一想,結合后面DeepSeek V3的論文中專門強調了對于內存讀寫和網絡框架及驅動的優化內容(甚至用了PTX),并且被誤解為要取代CUDA。就知道他們是在踩坑的同時填坑,填完了坑才有了這種軟硬件一體化設計的論文公開。
參考論文: arXiv:2408.14158v2 [cs.DC] 31 Aug 2024
