欢迎光临
我们一直在努力

手绘 Megatron-LM 的 3D 并行拓扑图:请指出流水线并行与张量并行的切分边界在哪里?

Megatron-LM是NVIDIA开发的一个用于训练超大规模Transformer模型的框架。它通过组合三种并行技术(数据并行DP、张量并行TP、流水线并行PP)实现了高效的3D并行策略。对于希望配置和优化LLM训练的用户来说,理解TP和PP的精确切分边界至关重要。

1. Megatron的3D并行网格

Megatron将所有可用的GPU组织成一个逻辑上的三维网格,每个维度对应一种并行策略。假设我们有N个GPU,我们定义三个并行维度的大小:

  • $P_{dp}$ (数据并行度)
  • $P_{tp}$ (张量并行度)
  • $P_{pp}$ (流水线并行度)

要求 $P_{dp} \times P_{tp} \times P_{pp} = N$。

这种并行网格决定了通信组(Communication Groups)的划分,即哪些GPU需要在训练过程中互相通信。

2. 手绘拓扑图:模型结构的堆叠

想象一个大型Transformer模型是一个垂直堆叠的结构,每一层(Layer)都是一个Transformer Block。我们的手绘拓扑图可以从这个垂直堆叠开始。

张量并行(TP):在层内切分

TP的切分边界在Transformer层的内部。

张量并行关注如何将单个巨大的权重矩阵(例如,注意力机制中的QKV矩阵或前馈网络FFN中的权重矩阵)切分到$P_{tp}$个设备上。它的核心目标是减少单个GPU所需的内存,通过矩阵分块运算来实现。

切分点分析:

  1. 注意力模块的投影矩阵 (QKV): 权重矩阵通常按列切分(Column Parallel)。计算结果需要进行一次 All-GatherAll-Reduce 来聚合完整的输出。
  2. 前馈网络 (FFN) 的中间层: 第一个线性层按列切分,第二个线性层按行切分(Row Parallel)。

绘制 TP 切分: 在手绘图中,你可以画出一个Transformer Block的矩形。TP的边界是穿过这个矩形内部的垂直或水平线(取决于切分方向),将矩阵分成小块。

流水线并行(PP):在层间切分

PP的切分边界在Transformer层与层之间。

流水线并行关注如何将模型的顺序结构(即不同Transformer层)分配到$P_{pp}$个设备组上。每个设备组只负责模型的一部分连续层。

切分点分析:

假设模型有L层,流水线并行度为$P_{pp}$。每$L/P_{pp}$层构成一个流水线阶段(Stage)。

  • Stage 1: Layers 1 到 $L/P_{pp}$
  • Stage 2: Layers $(L/P_{pp}) + 1$ 到 $2L/P_{pp}$

绘制 PP 切分: 在手绘图中,你需要画出垂直堆叠的Transformer Block。PP的边界是横向切过相邻Transformer Block之间的空间。这些边界代表了需要进行激活值(Activation)或梯度(Gradient)传输的通信点。

3. 实际切分边界的可视化总结

特征 张量并行 (TP) 流水线并行 (PP)
切分位置 层内 (矩阵运算内部) 层间 (连续的Transformer Block之间)
目的 减少权重矩阵和激活值的显存占用 允许使用更大的模型,提高GPU利用率
通信操作 All-Reduce, All-Gather (高带宽需求) Send / Recv (带宽要求相对低,但延迟敏感)

4. 示例配置(伪代码)

虽然我们无法直接在文本中运行Megatron,但我们可以通过配置参数来展示如何定义这些边界,从而控制拓扑结构。

# 假设总共有32个GPU
# N = 32

# 场景 1: 重TP,轻PP,不使用DP
# 适用于单节点内多卡(或高速互联)训练超大单层模型
PP_SIZE=2  # 切分点数量少,模型切成2段
TP_SIZE=16 # 矩阵被切分成16份
DP_SIZE=1  # 不使用数据并行

# 场景 2: 重PP,轻TP
# 适用于跨节点训练(节点间带宽低,节点内带宽高)
PP_SIZE=8  # 模型被切分成8段
TP_SIZE=4  # 矩阵被切分成4份
DP_SIZE=1

# Megatron-LM 启动配置示例
# 假设使用PyTorch DDP/NCCL后端

run_megatron.sh \
    --num-gpus 32 \
    --model-parallel-size ${TP_SIZE} \
    --pipeline-model-parallel-size ${PP_SIZE} \
    --data-parallel-size ${DP_SIZE} \
    --micro-batch-size 8 \
    --global-batch-size 1024

在这个配置中,pipeline-model-parallel-size 决定了你在模型层间有多少个切分点($P_{pp}-1$个),而 model-parallel-size 决定了在每一个Transformer Layer内部,矩阵被切分了多少次。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 手绘 Megatron-LM 的 3D 并行拓扑图:请指出流水线并行与张量并行的切分边界在哪里?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址