首页优化地图方法索引基础概念
返回技术汇总表 ↗

F005 · 基础讲解

分布式基础:DP、TP 与集合通信

先说明设备各持有什么、最后需要什么结果,再选择通信操作。

本页目录

01 · 数据并行和张量并行

数据并行 DP:各卡持有相同模型,处理不同样本,然后同步更新所需梯度。张量并行 TP:把同一层的张量计算分给多卡,每张卡得到一部分结果;需要按切分方式拼接或求和。

SP 常指序列并行,但具体含义依框架而定。学习 MC² 时应画出 Tensor 的具体切分轴,避免只凭缩写推断数据流。

依据:Megatron Core · Parallelism Guide ↗

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₁。因为它们贡献给同一个输出,所以要求和,而不是把两个输出简单拼接。

依据:NVIDIA · cuBLASMp Tensor Parallelism ↗

04 · 分片与通信的联系

ZeRO / FSDP 让各卡常驻一部分训练状态,计算前按需汇集参数,反向后归约和分片梯度。省掉重复保存的容量,可能引入额外数据交换。框架必须协调 rank 分组和调用顺序;rank 是通信组中设备进程的编号。

依据:DeepSpeed · ZeRO ↗ · PyTorch · FSDP2 fully_shard(main) ↗

带着这些概念,继续读优化方法

参考资料

继续:MoE 计算优化:Grouped GEMM 与重排融合 →返回优化总览
AI Infra 知识库 · 总览 → 独立讲解网站更新 2026-10-08
搜索知识库

搜索方法与基础概念 · Esc 关闭