Skip to content

20. NCCL and AllReduce Basics | NCCL and AllReduce Basics

难度: Medium | 标签: NCCL, AllReduce, Distributed Training | 目标人群: 准备进入 Chapter 2 / 3 的学习者

这一页把 Chapter 1 的硬件直觉,接到多卡训练和分布式通信上。重点是:多卡不只是算,还要通信。

前置关系

  • Chapter 2 / 3 会直接遇到分布式训练和扩展问题
  • 先建立“多卡不是只靠算,还要靠通信”的直觉

你应该先建立的直觉

1. 多卡训练不只是把计算切开

多卡训练除了切计算,还要解决:

  • 梯度怎么同步
  • 参数怎么广播
  • 状态怎么聚合

这就是通信协议和通信库存在的意义。

2. AllReduce 是最核心的通信原语之一

你可以先把 AllReduce 理解成:

  • 每张卡都有一份局部结果
  • 通过通信把结果聚合起来
  • 再把聚合后的结果分发给所有卡

这一步在数据并行训练里非常常见。

3. NCCL 是为了让通信更高效

NCCL 的价值在于:

  • 为 GPU 间通信提供高效实现
  • 让 AllReduce 这类操作更接近硬件能力
  • 减少通信成为系统瓶颈的概率

所以它不是“一个名字”,而是分布式训练里很关键的基础设施。

一个最常见的理解路径

text
单卡训练 -> 多卡并行 -> 局部结果需要同步 -> AllReduce 聚合 -> NCCL 提供高效实现

这条线比记住每种通信 API 更重要。
后面 Chapter 2 / 3 的并行训练、分布式扩展和性能分析,都会用到这个思路。

常见误区

  • 以为多卡只是在“复制更多 GPU”
  • 把通信看成训练之外的附属问题
  • 以为 AllReduce 只是一个 API 名称
  • 忽略通信拓扑对性能的影响

这一页学完后,你应该能回答

  • 多卡训练为什么离不开通信
  • AllReduce 在做什么
  • NCCL 为什么重要
  • 为什么 Chapter 2 / 3 的并行训练章节要先讲通信基础

和后续章节的联系

  • Chapter 2: Parallel Training
    你会看到数据并行和通信同步是如何配合的

  • Chapter 2: ZeRO / Gradient Checkpointing
    你会看到通信和显存优化如何一起影响训练成本

  • Chapter 3: 分布式扩展
    你会看到更复杂的通信模式和拓扑优化

小结

这一页的作用很简单:

  • 先让你知道多卡为什么离不开通信
  • 再让你知道 AllReduce 和 NCCL 在做什么
  • 最后让你知道为什么 Chapter 2 / 3 要把它们作为前置基础

如果你已经能把“多卡训练”理解成“计算 + 通信”的组合,这一页的目标基本达成。

Released under the MIT License.