最近人工智能大火,AI 應用所涉及的技術能力包括語音、圖像、視頻、NLP 等多方面,而這些都需要強大的計算資源支持。AI 技術對算力的需求是非常龐大的,雖然 GPU 的計算能力在持續提升,但是對于 AI 來說,單卡的計算能力就算再強,也是有極限的,這就需要多 GPU 組合。而 GPU 多卡的組合,主要分為單個服務器多張 GPU 卡和多個服務器,每個服務器多張卡這兩種情況,無論是單機多卡還是多機多卡,GPU 之間需要有超強的通信支持。接下來,我們就來聊聊 GPU 通信技術。
01. 單機多卡GPU通信*
GPU Direct
GPU Direct 是 NVIDIA 開發的一項技術,可實現 GPU 與其他設備(例如網絡接口卡 (NIC) 和存儲設備)之間的直接通信和數據傳輸,而不涉及 CPU。
傳統上,當數據需要在 GPU 和另一個設備之間傳輸時,數據必須通過 CPU,從而導致潛在的瓶頸并增加延遲。使用 GPUDirect,網絡適配器和存儲驅動器可以直接讀寫 GPU 內存,減少不必要的內存消耗,減少 CPU 開銷并降低延遲,從而顯著提高性能。GPU Direct 技術包括 GPUDirect Storage、GPUDirect RDMA、GPUDirect P2P 和 GPUDirect 視頻。
GPUDirect Storage
GPUDirect Storage 允許存儲設備和 GPU 之間進行直接數據傳輸,繞過 CPU,減少數據傳輸的延遲和 CPU 開銷。
通過 GPUDirect Storage,GPU 可以直接從存儲設備(如固態硬盤(SSD)或非易失性內存擴展(NVMe)驅動器)訪問數據,而無需將數據先復制到 CPU 的內存中。這種直接訪問能夠實現更快的數據傳輸速度,并更高效地利用 GPU 資源。
GPUDirect Storage 的主要特點和優勢包括:
減少 CPU 參與:通過繞過 CPU,實現 GPU 和存儲設備之間的直接通信,GPUDirect Storage 減少了 CPU 開銷,并釋放 CPU 資源用于其他任務,從而改善系統的整體性能。
低延遲數據訪問:GPUDirect Storage 消除了數據通過 CPU 的傳輸路徑,從而最小化了數據傳輸的延遲。這對于實時分析、機器學習和高性能計算等對延遲敏感的應用非常有益。
提高存儲性能:通過允許 GPU 直接訪問存儲設備,GPUDirect Storage 實現了高速數據傳輸,可以顯著提高存儲性能,加速數據密集型工作負載的處理速度。
增強的可擴展性:GPUDirect Storage 支持多 GPU 配置,允許多個 GPU 同時訪問存儲設備。這種可擴展性對于需要大規模并行處理和數據分析的應用至關重要。
兼容性和生態系統支持:GPUDirect Storage 設計用于與各種存儲協議兼容,包括 NVMe、NVMe over Fabrics和網絡附加存儲(NAS)。它得到了主要存儲供應商的支持,并集成到流行的軟件框架(如NVIDIA CUDA)中,以簡化與現有的 GPU 加速應用程序的集成。
GPUDirect P2P
某些工作負載需要位于同一服務器中的兩個或多個 GPU 之間進行數據交換,在沒有 GPUDirect P2P 技術的情況下,來自 GPU 的數據將首先通過 CPU 和 PCIe 總線復制到主機固定的共享內存。然后,數據將通過 CPU 和 PCIe 總線從主機固定的共享內存復制到目標 GPU,數據在到達目的地之前需要被復制兩次、
有了 GPUDirect P2P 通信技術后,將數據從源 GPU 復制到同一節點中的另一個 GPU 不再需要將數據臨時暫存到主機內存中。如果兩個 GPU 連接到同一 PCIe 總線,GPUDirect P2P 允許訪問其相應的內存,而無需 CPU 參與。前者將執行相同任務所需的復制操作數量減半。
NVLink
在 GPUDirect P2P 技術中,多個 GPU 通過 PCIe 直接與 CPU 相連,而 PCIe 3.0*16 的雙向帶寬不足 32GB/s,當訓練數據不斷增長時,PCIe 的帶寬滿足不了需求,會逐漸成為系統瓶頸。為提升多 GPU 之間的通信性能,充分發揮 GPU 的計算性能,NVIDIA 于 2016 年發布了全新架構的 NVLink。NVLink 是一種高速、高帶寬的互連技術,用于連接多個 GPU 之間或連接 GPU 與其他設備(如CPU、內存等)之間的通信。NVLink 提供了直接的點對點連接,具有比傳統的 PCIe 總線更高的傳輸速度和更低的延遲。
高帶寬和低延遲:NVLink 提供了高達 300 GB/s 的雙向帶寬,將近 PCle 3.0 帶寬的 10 倍。點對點連接超低延遲,可實現快速、高效的數據傳輸和通信。
GPU 間通信:NVLink 允許多個 GPU 之間直接進行點對點的通信,無需通過主機內存或 CPU 進行數據傳輸。
內存共享:NVLink 還支持 GPU 之間的內存共享,使得多個 GPU 可以直接訪問彼此的內存空間。
彈性連接:NVLink 支持多種連接配置,包括 2、4、6 或 8 個通道,可以根據需要進行靈活的配置和擴展。這使得 NVLink 適用于不同規模和需求的系統配置。
NVSwitch
NVLink 技術無法使單服務器中 8 個 GPU 達到全連接,為解決該問題,NVIDIA 在 2018 年發布了 NVSwitch,實現了 NVLink 的全連接。NVIDIA NVSwitch 是首款節點交換架構,可支持單個服務器節點中 16 個全互聯的 GPU,并可使全部 8 個 GPU 對分別達到 300GB/s 的速度同時進行通信。
△ NVSwitch 全連接拓撲
***02. ***多機多卡GPU通信
RDMA
AI 計算對算力需求巨大,多機多卡的計算是一個常態,多機間的通信是影響分布式訓練的一個重要指標。在傳統的 TCP/IP 網絡通信中,數據發送方需要將數據進行多次內存拷貝,并經過一系列的網絡協議的數據包處理工作;數據接收方在應用程序中處理數據前,也需要經過多次內存拷貝和一系列的網絡協議的數據包處理工作。經過這一系列的內存拷貝、數據包處理以及網絡傳輸延時等,服務器間的通信時延往往在毫秒級別,不能夠滿足多機多卡場景對于網絡通信的需求。
RDMA(Remote Direct Memory Access)是一種繞過遠程主機而訪問其內存中數據的技術,解決網絡傳輸中數據處理延遲而產生的一種遠端內存直接訪問技術。
目前 RDMA 有三種不同的技術實現方式:
InfiniBand(IB):IB 是一種高性能互連技術,它提供了原生的 RDMA 支持。IB 網絡使用專用的 IB 適配器和交換機,通過 RDMA 操作實現節點之間的高速直接內存訪問和數據傳輸。
RoCE(RDMA over Converged Ethernet):RoCE是在以太網上實現 RDMA 的技術。它使用標準的以太網作為底層傳輸介質,并通過使用 RoCE 適配器和適當的協議棧來實現 RDMA 功能。
iWARP:iWARP 是基于 TCP/IP 協議棧的 RDMA 實現。它使用普通的以太網適配器和標準的網絡交換機,并通過在 TCP/IP 協議棧中實現 RDMA 功能來提供高性能的遠程內存訪問和數據傳輸。
GPUDirect RDMA
GPUDirect RDMA 結合了 GPU 加速計算和 RDMA(Remote Direct Memory Access)技術,實現了在 GPU 和 RDMA 網絡設備之間直接進行數據傳輸和通信的能力。它允許 GPU 直接訪問 RDMA 網絡設備中的數據,無需通過主機內存或 CPU 的中介。
GPUDirect RDMA 通過繞過主機內存和 CPU,直接在 GPU 和 RDMA 網絡設備之間進行數據傳輸,顯著降低傳輸延遲,加快數據交換速度,并可以減輕 CPU 負載,釋放 CPU 的計算能力。另外,GPUDirect RDMA 技術允許 GPU 直接訪問 RDMA 網絡設備中的數據,避免了數據在主機內存中的復制,提高了數據傳輸的帶寬利用率。
IPOIB
IPOIB(IP over InfiniBand)是一種在 InfiniBand 網絡上運行 IP 協議的技術。它將標準的 IP 協議棧與 IB 互連技術相結合,使得在 IB 網絡上的節點能夠使用 IP 協議進行通信和數據傳輸。
IPOIB 提供了基于 RDMA 之上的 IP 網絡模擬層,允許應用無修改的運行在 IB 網絡上。但是,IPoIB 仍然經過內核層(IP Stack),會產生大量系統調用,并且涉及 CPU 中斷,因此 IPoIB 性能比 RDMA 通信方式性能要低,大多數應用都會采用 RDMA 方式獲取高帶寬低延時的收益,少數的關鍵應用會采用 IPoIB 方式通信。
在大規模計算中,單機多卡場景下使用 GPUDiect、NVLink 技術,分布式場景下使用 GPUDirect RDMA 技術,可以大大縮短通信時間,提升整體性能。
審核編輯:湯梓紅
評論
查看更多