Skip to content

02. Data Parallel and Synchronization | 数据并行与同步 ​

学习问题 ​

数据并行让每个 rank 处理不同样本,却要求参数更新保持一致。计算可以复制,更新语义不能分叉,因此梯度同步构成多卡训练最基础的通信基线,也提供了理解 All-Reduce、payload 与同步等待的入口。

数据并行中的局部计算与梯度同步

核心机制 ​

从局部梯度到一致更新 ​

每个 rank 持有完整模型并独立完成前向与反向;在 optimizer step 之前,局部梯度必须经过归约。同步频率由 optimizer step 决定,而不是简单等于 micro-batch 数量。

阶段每个 rank 的状态是否需要通信关键约束
取样与前向不同 mini-batch、相同参数版本通常不需要数据分片不能重复或遗漏
反向产生局部梯度可与 backward bucket 重叠bucket 大小影响启动次数和重叠机会
梯度累积多个 micro-batch 累积局部梯度非同步轮可延后归约必须保持有效 batch 与 loss scaling 一致
optimizer step所有 rank 使用一致梯度更新需要完成同步任一慢 rank 都会延迟全局更新

Collective、Payload 与拓扑 ​

All-Reduce 是数据并行的常见同步原语,但真实性能由消息大小、调用频率、world size 和拓扑共同决定。小 payload 更容易受启动延迟影响,大 payload 更依赖链路带宽。

不同并行机制需要不同的数据交换语义。先回答“结果要回到哪些 rank”,再选择 Collective,不能只按 API 名称记忆。

Collective数据语义常见落点首要代价
All-Reduce聚合后把完整结果返回所有 rankDDP 梯度同步、部分 TP 输出归约每个 rank 都参与并接收完整结果
Reduce-Scatter聚合后把结果分片留在不同 rankZeRO/FSDP 梯度分片结果布局必须与后续状态分片一致
All-Gather收集各 rank 分片并恢复完整输入ZeRO-3/FSDP 参数恢复、部分 TP/CP 路径临时完整状态可能抬高峰值
All-to-All按目标 rank 重新分发不同数据EP token dispatch/combine消息不均与最慢 rank 决定完成时间
P2P Send/Recv在指定 rank 间传递数据Pipeline stage、KV handoff依赖关系和流水线空转
观察项说明对应实验
payload bytes每次同步传输的数据规模Part 02 · 47 的 payload matrix
collective frequency每个 step 触发多少次同步backward bucket 与 accumulation 配置
max-rank time最慢 rank 决定同步完成时间每 rank 时间与负载差异
overlap ratio通信有多少被 backward 计算覆盖trace 中通信与计算时间线
scaling efficiency增加 rank 后实际吞吐相对理想值的比例固定 global workload 的多卡对照

选择条件与验证证据 ​

目的入口
理解通信原语Part 01 · 20 NCCL 与 AllReduce
实测 collectivePart 02 · 47 通信 Profiling
从复制转向状态分片03 状态分片与 ZeRO
进入真实训练项目Part 02 · 79 分布式并行基准

相关阅读 ​

Released under the MIT License.