📄 论文 |
📚 技术文档 |
Discord |
微信交流群 |
🇺🇸 English
VCCL 以高效率、高可用、高可视三大核心能力,重塑 GPU 通信体验:
-
高效率(High Efficiency)
借鉴 DPDK 的设计理念,VCCL 引入 “DPDK-Like P2P” 高性能调度,让 GPU 尽可能保持满载:
早期在 CPU 侧实现万兆网络的用户态高速数据面,需要通过大页内存 + 零拷贝并将数据通路从内核态迁移到用户态,以绕开协议栈多次拷贝和中断开销。
类比之下,当前 CUDA 在通信/计算调度与 API 颗粒度方面仍有限制(公开资料亦提到 H800 的 132 个 SM 中会预留约 20 个用于通信)。VCCL 的做法与 DPDK 优化内核路径类似:通过智能调度将通信任务从 GPU CUDA 栈卸载到 CPU 侧,联合零拷贝与 PP 工作流的全局负载均衡,显著缩短 GPU 空闲时间。
在千亿参数 Dense 模型训练中,我们的内部对比结果显示:整网训练算力利用率在 SOTA 之上再提升约 2%(环境可复现,见示例说明)。 Ps:无核现在还不支持容错和telemetry,后续工作之一。 -
高可用(High Availability)
提供轻量级本地恢复容错(Fault Tolerance)机制,在不显著增加系统负担的前提下,有效应对网口 Down / 交换机故障等引发的训练中断。具体而言,VCCL通过创建备份QP的方式来实现链路故障后的流量切换,同时,VCCL支持当链路状态恢复后无感的流量切回。整体故障率可降低超过 50%。 -
高可视(High Visibility)
提供微秒级滑动窗口的通信流量可观测(Flow Telemetry),助力研发调优与拥塞检测。
更多 VCCL 介绍和使用指南, 请参考VCCL 文档。
说明:当前提供源码构建方式。
$ git clone https://github.com/sii-research/VCCL.git
$ cd VCCL
$ make -j src.build如 CUDA 不在 /usr/local/cuda,
$ make src.build CUDA_HOME=<path to cuda install>VCCL 编译产物位于 build/(可通过 BUILDDIR 修改)。
默认情况下,VCCL 会针对所有支持的架构进行编译。为了加速编译并减小二进制文件大小,可以考虑重新定义 NVCC_GENCODE(在 makefiles/common.mk 中定义),使其仅包含目标平台的架构:
# 仅编译目标架构以加速构建并减小体积(示例:Hopper 架构 H100/H200)
$ make -j80 src.build NVCC_GENCODE="-gencode=arch=compute_90,code=sm_90"要在系统上安装 VCCL,请创建一个包,然后以 root 身份安装它。
# Debian/Ubuntu
sudo apt install -y build-essential devscripts debhelper fakeroot
make pkg.debian.build
ls build/pkg/deb/
# RedHat/CentOS
sudo yum install -y rpm-build rpmdevtools
make pkg.redhat.build
ls build/pkg/rpm/
# OS-agnostic tarball
make pkg.txz.build
ls build/pkg/txz/VCCL的测试,请参考 https://github.com/nvidia/nccl-tests.
$ git clone https://github.com/NVIDIA/nccl-tests.git
$ cd nccl-tests
$ make
$ ./build/all_reduce_perf -b 8 -e 256M -f 2 -g <ngpus>-
本项目基于
nccl_2.26.6-1开发,并在相关文件中保留上游版权与许可信息。 -
详细许可条款请见 LICENSE。
-
感谢开源社区(包括但不限于 NCCL 与 nccl-tests 项目)的卓越工作。