01 · 数据并行和张量并行
数据并行 DP:各卡持有相同模型,处理不同样本,然后同步更新所需梯度。张量并行 TP:把同一层的张量计算分给多卡,每张卡得到一部分结果;需要按切分方式拼接或求和。
SP 常指序列并行,但具体含义依框架而定。学习 MC² 时应画出 Tensor 的具体切分轴,避免只凭缩写推断数据流。
02 · 四种常见集合通信
| 操作 | 两卡小例子 | 每卡最后拿到什么 |
|---|---|---|
| AllGather | 卡0有[a,b],卡1有[c,d] | 两卡都有[a,b,c,d]。 |
| AllReduce(求和) | 卡0有[1,2],卡1有[3,4] | 两卡都有[4,6]。 |
| ReduceScatter(求和) | 先把[1,2]与[3,4]求和,再分片 | 卡0保留[4],卡1保留[6]。 |
| All-to-All | 每卡各有发给不同目的卡的数据 | 每卡收到其他卡发给自己的那部分。 |
AllReduce 和 ReduceScatter 的输出驻留方式不同,不能不改后续布局就互换。AllGather 组合分片;AllReduce 则对对应元素执行归约。
03 · 一层为什么需要归约
行并行 Linear 按输入维度切成两部分:X=[X₀,X₁],W 对应切成 W₀、W₁。每卡算 Y₀=X₀W₀、Y₁=X₁W₁,最终 Y=Y₀+Y₁。因为它们贡献给同一个输出,所以要求和,而不是把两个输出简单拼接。
04 · 分片与通信的联系
ZeRO / FSDP 让各卡常驻一部分训练状态,计算前按需汇集参数,反向后归约和分片梯度。省掉重复保存的容量,可能引入额外数据交换。框架必须协调 rank 分组和调用顺序;rank 是通信组中设备进程的编号。