概念定义

模型并行是一种分布式训练技术,将单个模型的不同部分(层、张量或专家)分配到不同的计算设备上,使得超大规模模型能够突破单个设备的内存限制进行训练。

详细解释

与数据并行不同,模型并行解决的核心问题是”模型太大,单个GPU装不下”。当模型参数量达到数百亿甚至万亿级别时,即使是最先进的GPU(如H100的80GB显存)也无法容纳完整模型。模型并行通过将模型的不同部分分配到多个GPU上,实现了超大规模模型的训练。 2025年的模型并行技术已经发展出多种成熟方案:张量并行(Tensor Parallelism)、流水线并行(Pipeline Parallelism)、序列并行(Sequence Parallelism)以及专家并行(Expert Parallelism)。这些技术常常组合使用,形成多维度的并行策略。

工作原理

张量并行(Tensor Parallelism)

将单个层的权重矩阵分割到多个GPU:
# 原始矩阵乘法: Y = X @ W
# 张量并行版本:
# W = [W1, W2, ..., Wn]  # 列切分
# Y = [X@W1, X@W2, ..., X@Wn]  # 并行计算
# 最终结果通过concat或reduce获得

流水线并行(Pipeline Parallelism)

将模型按层划分,形成流水线:
GPU0: [Layer 1-6]   →
GPU1: [Layer 7-12]  →
GPU2: [Layer 13-18] →
GPU3: [Layer 19-24]

序列并行(Sequence Parallelism)

在序列维度上分割激活值,减少内存占用:
# 激活值形状: [batch, sequence, hidden]
# 在sequence维度切分到不同GPU
# 配合张量并行使用,进一步降低内存需求

Megatron-LM实现(2025版本)

# 组合使用多种并行策略
model = MegatronModel(
    tensor_model_parallel_size=8,     # 8路张量并行
    pipeline_model_parallel_size=16,  # 16路流水线并行
    sequence_parallel=True,           # 启用序列并行
    use_fp8=True                      # FP8加速(H100支持)
)

实际应用

内存计算公式

单GPU内存需求 = 模型参数 / (TP × PP)
其中:TP = 张量并行度,PP = 流水线并行度

性能优化策略

  1. 带宽优先原则:张量并行需要频繁通信,优先部署在高带宽互联(NVLink)的节点内
  2. 流水线平衡:确保各阶段计算量均衡,避免流水线气泡
  3. 混合并行:结合数据并行,形成3D并行策略
  4. 通信优化:使用All-Gather和Reduce-Scatter优化通信模式

2025年最新进展

  • FP8支持:NVIDIA Hopper架构原生支持FP8,显著提升吞吐量
  • 自动并行:框架可自动搜索最优并行配置
  • 动态调度:根据负载动态调整并行策略
  • 跨节点优化:InfiniBand NDR 400Gb/s支持更大规模张量并行

典型配置示例

训练175B参数模型(类GPT-3):
  • 张量并行:8路(节点内)
  • 流水线并行:16路(跨节点)
  • 数据并行:8路
  • 总GPU数:1024个A100
  • 单次迭代:32秒
  • GPU利用率:44%(138 TFLOPS/GPU)

相关概念

延伸阅读