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