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 和其他分布式推理栈中。