AI集羣通信中的軟硬件介紹

計算機網絡通信中最重要兩個衡量指標主要是 帶寬 和 延遲。分佈式訓練中需要傳輸大量的網絡模型參數,網絡通信至關重要。

AI集羣通信實現方式

AI集羣是由多臺包含CPU、內存、GPU的服務器組成,需要考慮機器內通信和機器間通信。

機器內通信通常包括共享內存、PCIe、NVLink等方式,機器間主要通過TCP/IP網絡和RDMA網絡(直連模式)。

 

機器內通信

同一機器內:

  • CPU之間可以通過共享內存來實現
  • CPU和GPU 可以通過PCIE\NVLink
  • GPU之間,可以通過NVLink直連

 

機器間通信

機器間通信,主要通過TCP/IP網絡,但是用網絡,需要過CPU,有延時損耗,現在最新的方方案是用RDMA直連網絡。

 

通信協調硬件

 

  • GPU與GPU 通過nvlink,GPU和CPU也通過NVLink綠色線
  • CPU通過總線共享內存
  • 服務器之間,通過RDMA網卡

PCIE

 

PCIe 5.0 最高速率是32G

NVLink

Nv爲了解決PCIE速度不高的問題,研發了NVLink解決方案,支持CPU和GPU互聯,GPU互聯。啓用 NVLink 的系統中,CPU 發起的事務(如控制和配置)仍然通過 PCIe 連接。

保留 PCIe 編程模型,同時在連接帶寬方面提供巨大的優勢。

 

RDMA

RDMA主要特性:

• CPU Offload:無需CPU干預,遠程主機CPU緩存(cache)不會被訪問的內存內容所填充

• Kernel Bypass:專有 Verbs interface ,應用程序可以直接在用戶態執行數據傳輸

• Zero Copy:每個應用程序都能直接訪問集羣中的設備的虛擬內存

 

我們可以通過下面的圖來對比,左邊藍色是傳統TCP/IP,右邊是RDMA,通過直連技術可以不經過內存區域拷貝。

 

RDMA,公司用的RoCE方案。

通信協調軟件

MPI

通用接口,可調用 Open-MPI, MVAPICH2, Intel MPI等。

MPI(Message Passing Interface)定義了多個原語的消息傳遞接口,這一接口主要被用於多進程間的通信。MPI 系統通信方式是建立在點對點通信之上。而集合通訊是建立在端到端通信的基礎上,在一組進程內的通訊原語。

 

NCCL

NCCL 架構和工作流程:

NVIDIA AI 庫依賴 NCCL 提供編程抽象,通過高級拓撲檢測、通用路徑搜索和針對 NVIDIA 架構優化的算法,針對每個平臺和拓撲進行高度調整。 NCCL API 從 CPU 啓動,GPU執行,在 GPU 內存之間移動或交換數據。最後利用 NVLink 聚合多個高速 NIC 的帶寬。

 

Pytorch中,MPI和NCCL 對比,MPI主要是CPU,NCCL是GPU:

 

總結

硬件通過PCIe、NVLink、RDMA來針對不同場景實現硬件通信,軟件主要是MPI和NCCL。

參考

DeepLearningSystem/03.communication.pdf at main · chenzomi12/DeepLearningSystem (github.com)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章