🎯 为什么需要多GPU?

大模型有几十亿到几千亿参数,一张GPU装不下。所以需要多张GPU分工,分工就需要“通信”。

🧠 什么是模型训练?

让模型“学习”的过程:

1 前向: 输入→计算→预测
2 反向: 比较答案→计算梯度→调整

"梯度"就是"往哪调整"的指南针

🔢 什么是“层”?

模型像流水线,数据依次经过第1层、第2层...第24层。每层=一次矩阵乘法

✨ 六种分工方式

🟦 TP
张量并行

同一层横切,每个GPU算一部分

像两人合抬大桌子
🟪 PP
流水线并行

层数纵切,前后传递

像流水线传递工件
🟩 DP
数据并行

复制模型,各处理不同数据

像开多窗口服务
🟧 EP
专家并行

MoE中不同专家分布在不同GPU

像分诊台把病人分到不同科室
🟦 SP
序列并行

沿序列维度切分计算

Megatron-SP / DeepSpeed Ulysses
🟥 CP
上下文并行

沿序列维度切分 Attention

支持超长上下文(100K+ tokens)

📺 本示例设定

GPU0 GPU1
Stage1: 层1-12
↓ PP ↓
GPU2 GPU3
Stage2: 层13-24

4GPU = 1个完整模型

GPU 训练通信流可视化

理解大模型训练中多GPU如何协作

步骤 7 / 12
MoE结果收集 EP
专家计算完成后,通过All-to-All将结果发回原来的GPU
结果收集 (Combine):

• 与Token分发相反的过程
• 每个GPU把计算结果发回Token原来所在的GPU
• 再次执行 All-to-All 通信

对称通信: 分发和收集的通信量基本相同,网络压力也相同。
📊 通信量: 同Token分发,约 128MB
🟠 Scale-out网络 ⭐ 同Token分发
• 再次All-to-All,通信模式相同
• 网络压力与分发阶段相当
Stage 1 (前12层)
Stage 2 (后12层)
TP 通信
TP 通信
PP
PP
DP All-Reduce
EP All-to-All
GPU 0 TP左半
All-to-All 结果回传
GPU 1 TP右半
All-to-All 结果回传
GPU 2 TP左半
All-to-All 结果回传
GPU 3 TP右半
All-to-All 结果回传
TP 张量并行 同一层的矩阵切分到多GPU
PP 流水线并行 不同层分配到不同GPU组
DP 数据并行 相同模型处理不同数据
EP 专家并行 MoE专家分布在不同GPU

📊 网络要求对比表

通信类型 网络层级 带宽要求 延迟要求 拓扑要求 典型硬件
🟦 TP Scale-up 极高 600GB/s+ (~4.8Tbps) 极低 μs级 全互联 NVLink/NVSwitch
🟪 PP Scale-out 中等 100-400Gbps 中等 ms级 点对点 IB/RoCE
🟩 DP Scale-out 400Gbps+ 可容忍 Ring/Tree IB 400G+
🟧 EP Scale-out 极高 400Gbps+ 无阻塞网络 Fat-Tree IB 400G+
🟦 SP Scale-up 600GB/s+ (~4.8Tbps) 极低 μs级 同TP NVLink
🟥 CP Scale-out 200-400Gbps 中等 Ring IB/RoCE

💡 关键结论:

  • TP: 机内通信为主,依赖NVLink高带宽低延迟
  • PP: 跨机点对点,网络压力最小
  • DP: All-Reduce跨整个集群,通信量巨大
  • EP: MoE的All-to-All对bisection带宽要求最苛刻,需要Fat-Tree无阻塞网络

📡 NCCL 通信原语

NVIDIA Collective Communications Library

当前步骤使用
All-to-All
Broadcast 广播
A
-
-
A
A
A
一个GPU的数据“广播”给所有其他GPU。像老师在课堂上向所有学生宣布同一条消息。
Reduce 归约
1
2
3
6
-
-
所有GPU的数据“汇总”到一个GPU(如求和)。像老师收集所有学生的试卷并统计总分。
AllReduce 全归约 ⭐ 最常用
1
2
3
6
6
6
汇总后每个GPU都得到结果。= Reduce + Broadcast。DP梯度同步的核心操作!
AllGather 全收集 ⭐ TP常用
A
B
C
ABC
ABC
ABC
每个GPU的不同数据“拼接”起来,每人都得到完整版本。TP前向传播时用于拼接矩阵结果。
ReduceScatter 归约分发 ⭐ TP常用
A₁B₁C₁
A₂B₂C₂
A₃B₃C₃
ΣA
ΣB
ΣC
先归约求和,然后每人分到一部分结果。= Reduce + Scatter。TP反向传播时用于梯度汇总。
All-to-All 全交换 🔥 MoE核心
abc
def
ghi
adg
beh
cfi
每个GPU向每个GPU发送不同数据,矩阵转置式交换。MoE专家路由的核心操作!对网络bisection带宽要求极高。
Send / Recv 点对点传输
A
-
-
-
A
-
一对一传输。PP流水线传递激活值/梯度时使用。
Scatter 分发
ABC
-
-
A
B
C
一个GPU的数据“切分”给各个GPU。像老师把试卷分发给不同学生。
Gather 收集
A
B
C
ABC
-
-
各GPU的数据“拼接”到一个GPU。像老师收集每个学生不同的作业。