uccl-project/uccl
UCCL is an efficient communication library for GPUs, covering collectives, P2P (e.g., KV cache transfer, RL weight transfer), and EP (e.g., GPU-driven)
解決的問題
UCCL 旨在解決 GPU 通訊函式庫中的效能瓶頸與可移植性問題。它提供了一個高效能、靈活且具備可移植性的通訊層,支援異構 GPU 與網路硬體(Nvidia, AMD, Broadcom, AWS EFA),讓 ML 工作負載能夠比 NCCL 或 RCCL 等傳統函式庫實現更高的吞吐量與更低的延遲。
工作原理
UCCL 作為 GPU 通訊函式庫運作,提供三個主要組件:
- UCCL-collective (UCCL-Tran):一種用於替換 NCCL/RCCL 的即插即用方案,使用軟體定義傳輸層。它透過在多達 256 條網路路徑上進行封包噴灑(packet spraying)來避免擁塞,並實現了先進的擁塞控制與用於丟包恢復的選擇性重傳。
- UCCL-P2P:提供用於高頻寬訊息傳輸的 initiator-target 傳輸 API,特別針對具備多執行緒傳輸引擎的下一代 800Gbps NIC 進行了優化。
- UCCL-EP:一種可移植的專家並行通訊(相容 DeepEP)實作,可在不同的 GPU 與 NIC 廠商之間實現高效能。
適用對象
面向從事大規模 ML 訓練與推論的開發人員與研究人員,特別是那些使用異構硬體環境,或尋求優化 KV cache 傳輸或專家並行 (MoE) 通訊等任務中的 GPU 間通訊的使用者。
亮點
- 即插即用替換:UCCL-collective 可以直接替換 NCCL/RCCL,無需更改應用程式程式碼。
- 異構支援:支援 Nvidia 與 AMD GPU 以及各種 NIC(Broadcom, Nvidia, AWS EFA)。
- 高效能:在特定設定下,AllReduce 操作的效能比 NCCL 高出多達 3.7 倍。
- 廣泛採用:已整合至 NVIDIA NeMo、AMD TheRock 以及其他分散式推論技術棧中。