| 后端 | 适用设备 | 通信方式 | 特点 | 推荐场景 |
|---|---|---|---|---|
| NCCL | GPU(NVIDIA) | GPU ↔ GPU(高速) | 性能最好、最稳定 | ✅ 多 GPU / 多机 GPU 训练首选 |
| Gloo | CPU / GPU | CPU ↔ CPU 或 CPU ↔ GPU | 兼容性好、配置简单 | CPU 训练、调试、小模型 |
| MPI | HPC / CPU | 高性能网络 | 配置复杂 | HPC 集群、科研 |
| UCC | GPU / HPC | 新一代通信库 | 实验性 | 高级用户 |
✅ 90% 的 PyTorch 用户只需要关心 NCCL 和 Gloo
| 情况 | 推荐后端 |
|---|---|
| 有 NVIDIA GPU | ✅ NCCL |
| 只有 CPU | ✅ Gloo |
| 混合 CPU / GPU | Gloo(但性能一般) |
| 场景 | 推荐 |
|---|---|
| 单机多卡 | NCCL |
| 多机多卡 | NCCL(需 InfiniBand / 高速网络) |
| 多机 CPU | Gloo / MPI |
| 分布式方式 | 推荐后端 |
|---|---|
DistributedDataParallel (DDP) | ✅ NCCL |
DataParallel (DP) | 单进程,不涉及后端 |
torchrun | NCCL |
rpc / PipelineParallel | Gloo / NCCL |
全称:NVIDIA Collective Communications Library
适用:NVIDIA GPU
优点
缺点
示例
export NCCL_SOCKET_IFNAME=eth0
torchrun --nproc_per_node=8 train.pytorch.distributed.init_process_group(
backend="nccl"
)适用:CPU / GPU
优点
缺点
示例
torch.distributed.init_process_group(
backend="gloo"
)适用:HPC 集群
优点
缺点
有 GPU 吗?
├─ 是 ──> 用 NCCL ✅
│ ├─ 单机多卡
│ └─ 多机多卡(网络好)
└─ 否 ──> 用 Gloo ✅NCCL WARN Connect failure解决
export NCCL_SOCKET_IFNAME=eth0
export NCCL_IB_DISABLE=1RuntimeError: Invalid backend: nccl原因:
gloo| 场景 | 推荐 |
|---|---|
| 单机 8×A100 | NCCL |
| 多机 GPU 训练 | NCCL |
| CPU 训练 | Gloo |
| 调试 / 小实验 | Gloo |
| HPC 集群 | MPI / Gloo |
如果你愿意,我可以:
只要告诉我你的 硬件环境 + 训练规模 即可。