Parallel_(并行)
2026/7/23大约 3 分钟
在 PyTorch 和大模型训练的语境下,当你听到大佬们讨论 Parallel(并行) 时,他们讨论的是大模型时代的核心生存技能:“当一个模型大到一张显卡根本装不下时,我们该怎么把它大卸八块,分给多张显卡一起算?”
这就是业界著名的 “3D 并行 (3D Parallelism)”。对于 AI Infra SRE 来说,这三种并行策略决定了你集群里网络带宽的生死。
我们可以用“厨房做菜”的生动比喻来拆解这三大并行策略:
1. Data Parallel (DP / DDP) - 数据并行
- 做法: 每张 GPU(每个厨师)手里都有一份完整的模型副本(菜谱)。我们把庞大的训练数据(几万个订单)切成好几份,分给不同的 GPU 去算。
- 通信特点: 大家各自埋头算,只在算出最终结果(梯度)时,通过 NCCL 的
AllReduce互相通气,把结果加起来。 - SRE 视角: 这是最基础的并行。它对网络带宽的要求相对较低,跨机器跑也没太大问题。
- 致命缺点: 极其浪费显存!如果模型本身就有 70GB,那你每张卡都要被占掉 70GB,稍微大一点的模型直接就集体 OOM(内存溢出)了。
-1.png)
-2.jpeg)
2. Tensor Parallel (TP) - 张量并行(最吃硬件的一集)
- 做法: 核心大招。一张卡装不下模型?那我们就把模型里的某一个巨大的矩阵计算(比如一个超大号的披萨),直接用刀切开。GPU 0 负责算左半边,GPU 1 负责算右半边。
- 通信特点: 厨师们在同一个案板上切同一块肉,他们需要极其频繁地交换中间结果(使用 NCCL 的
AllGather和ReduceScatter)。 - SRE 视角(高危预警): TP 的通信量极其恐怖,每计算一步都要疯狂互相发数据。因此,TP 绝对不能跨机器跑!它必须被锁死在同一台服务器内部,利用 GPU 之间极速的 NVLink(那条高速公路)来跑。如果你看到有人把 TP 组配到了跨机器的网络上,那集群的网络会瞬间被彻底堵死。
-3.png)
image.png
3. Pipeline Parallel (PP) - 流水线并行
- 做法: 像工厂流水线一样。假设模型有 100 层,GPU 0 负责算第 1-25 层,算完把结果扔给 GPU 1 算第 26-50 层,以此类推。
- 通信特点: 只需要在相邻的两张卡(两个工位)之间,传递那一点点边界的激活值数据(Point-to-Point 通信)。
- SRE 视角: 通信量极小,非常适合跨机器、跨机柜甚至跨数据中心去跑。但缺点是容易出现“气泡”(Bubble),也就是 GPU 1 在算的时候,GPU 2 只能干等着,算力利用率会受影响。
总结成一张 SRE 架构图:
在真正的千卡大集群里,这三者是混用的(所以叫 3D 并行):
- 机器内部的 8 张卡: 用 TP (张量并行) 榨干 NVLink 的速度。
- 相邻的几台机器: 用 PP (流水线并行) 把模型的 100 层分摊掉。
- 不相邻的几百台机器: 用 DP (数据并行) 吃掉海量的训练数据。
在这三种并行策略中,目前工业界用得最多、显存切分最优雅的其实是基于数据并行的进化版——FSDP(完全分片数据并行)。你想先深入了解这三种基础并行的底层细节,还是直接跳到当今大厂最爱用的 FSDP 切分魔法?
