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