模型并行
3秒看懂
当一个大模型(如千亿参数的语言模型)的参数和中间激活值超过单个GPU显存承载上限时,模型并行技术将模型的计算图切分,分布式部署在多个加速器上,所有设备协作完成一次前向/后向传播。它主要包含两种范式:流水线并行(按层切分,层间传递激活/梯度)和张量并行(将单层内的矩阵乘法切分,层内进行通信),常与数据并行组合成“3D并行”来训练超大模型。
3分钟产业解释
为什么需要模型并行?
单体GPU的显存(比如常见的80GB)无法存放一个千亿参数的全精度模型及其优化器状态。数据并行虽能提高吞吐,但要求每个设备存放完整模型副本,无法解决单卡显存瓶颈。模型并行将模型结构本身剖分到多个设备,让集群的总显存与总算力被整合起来,突破“模型放不下”这道墙。
产业落地形态
在主流大模型训练(如Llama系列、GPT-3、DeepSeek等)中,研究者普遍采用3D并行:张量并行(TP)负责单层超大矩阵的计算切分,流水线并行(PP)将数百层分配到几十个流水段,数据并行(DP)在每次迭代里并行处理多个微批次,三者叠加可在数千GPU上线性扩展。此外,MoE(混合专家)架构催生了专家并行,将不同专家参数分布到不同设备,可视为模型并行的延伸。
与推理的关系
模型并行不仅用于训练,大模型推理时同样因显存不足需要将权重分片到多卡,常见形式是张量并行和流水线并行,再配合KV Cache等推理优化技术。
15分钟专家深入
1. 流水线并行 (Pipeline Parallelism, PP)
核心思想:将模型按层切分成多个Stage,每个Stage部署在独立设备上。前向传播时,中间激活从Stage i传至Stage i+1;反向传播时,梯度从Stage i+1传回Stage i。
- 朴素流水线:一个批量的计算顺序严格,同一时刻大部分设备空闲,出现严重的“气泡”。
- 微批次流水线(GPipe):将一个mini-batch拆成M个微批次,前向对整个批量按stage顺序推送,反向同样按微批次反向回传。气泡比例 ≈ (P−1)/M,P为流水段数。增大M可摊薄气泡,但需更多显存暂存中间激活(除非激活重计算)。
- 1F1B调度(PipeDream-2BW等):前向与反向交错执行,每个设备在完成一个微批次前向就尽快开始一个微批次反向,维持更少的待发梯度缓冲区,进一步压缩气泡,并能更好地平衡计算与通信。
2. 张量并行 (Tensor Parallelism, TP)
针对Transformer等模型,单层内的权重矩阵(线性投影)被按列或按行切分。以最常见的1D张量并行(Megatron-LM)为例:
- 输入x,权重矩阵W,输出y = xW。
- 列并行:将W按列切分成[W₁, W₂],x分别乘W₁、W₂,得到y₁、y₂,再通过AllReduce或更精细的AllGather/ReduceScatter合并完整y。
- 行并行:将W按行切分,需将x按对应方式切分。前向中执行AllReduce或AllGather以聚合结果。
在Transformer的自注意力和MLP中,列线性后往往配行线性,两者组合可将昂贵的AllReduce转化为在更小维度的通信,且计算与通信可重叠。1D TP在超大模型上通信需求会随并行度增大而升高,因此通常在一个高速互联域内(如同一节点的多卡NVLink互联)保持TP,外层用PP/DP扩展跨越较慢的网络。
3. 多维度张量并行与自动并行
为解决1D TP的通信缩放瓶颈,学术界提出2D/2.5D/3D张量并行,将权重和激活同时在其两个或多个维度切分,通信原语变为多轮AllReduce/AllGather组合,通信量在特定条件下低于1D方案,但实现复杂度高,多在专用系统或研究型框架中演示。
自动并行:Alpa、GSPMD、TensorFlow Mesh等系统通过编译技术自动搜索最优的算子内并行(张量并行)和算子间并行(流水线并行)策略,降低手写并行成本。这些系统将模型定义为计算图,按硬件拓扑、通信带宽和显存约束,自动生成混合并行方案。
4. 混合并行与通信域分层
实际千卡集群上,典型配置为:节点内多卡(通常8卡)采用高速NVLink/NVSwitch进行TP,节点间采用InfiniBand或RoCE网络运行DP和PP。DP的AllReduce梯度同步、TP的群体通信、PP的点对点激活/梯度传递需在并行的不同阶段交错执行。DeepSpeed ZeRO(ZeRO-1/2/3)与模型并行结合,ZeRO-3将优化器状态、梯度和参数在DP的AllGather/ReduceScatter中分片,进一步降低冗余。
技术原理
以下深入解析张量并行中关键通信模式与计算流程。
张量并行:以Megatron的MLP块为例
一个MLP块接受输入h (seq_len × hidden_size),两线性投影:
- 第一个线性层(h→4h):采用列并行。
- 第二个线性层(4h→h):采用行并行。
设张量并行度为t,hidden_size为d。
h (seq_len × d)
│
┌────┴────┐
列并行:hW₁ᵀ hW₂ᵀ <--- W₁,W₂ 形状均为 d × (4d/t)
│ │
g₁ g₂ <--- g₁,g₂ 形状 seq_len × (4d/t)
│ │
(GELU) (GELU)
│ │
a₁ a₂ <--- a₁,a₂ 形状 seq_len × (4d/t)
│ │
行并行:a₁V₁ a₂V₂ <--- V₁,V₂形状 (4d/t) × d
│ │
y₁ y₂ <--- 每个形状 seq_len × d, 部分和
└────┬───┘
AllReduce (求和) <--- 跨t个设备
│
y (seq_len × d)
通信量与计算量
对于列并行,前向只产生g₁、g₂,只需要在计算第二个线性层时传递。具体MP实现中,第一个列并行不需要AllReduce,第二个行并行的输入是列切分好的a₁,a₂,计算y₁=a₁V₁, y₂=a₂V₂,然后AllReduce求和恢复完整y。反向则对称通信。
这样每次前向通信量约为 2 * seq_len * d * (t-1)/t(AllReduce),随并行度t增大,通信占比上升。因此张量并行通常限制在节点内低速通信范围(t≤8)。
流水线并行调度:1F1B序列示例
假设4个stage,微批次数量设为8(实际通常选择M远大于P以减少气泡)。用代码块表示时间线:
时间步 -> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Stage 0: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
Stage 1: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
Stage 2: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
Stage 3: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
每个设备在前向传递完最初的若干微批次后,开始交错执行前向与反向计算(如F4与B0交替),维持高负载率,气泡极小。
技术演进史
- 2016‑2018:模型并行尚以简单的层间切分或手工并行存在。GPipe(2019)提出微批次流水线,打开高效流水线并行大门。
- 2019:NVIDIA发布Megatron‑LM,率先在Transformer内引入张量并行(1D TP),成功训练83亿参数模型。同年,Microsoft的ZeRO(零冗余优化器)出现在DeepSpeed中,主要优化数据并行,但与模型并行互补。
- 2020:PipeDream‑2BW提出双向流水线调度,降低激活内存。Megatron逐步完善为3D并行框架:TP+PP+DP。
- 2021:DeepSpeed将ZeRO‑3与模型并行集成,实现线性扩展。Alpa、GSPMD出现,推动自动并行。
- 2022‑2023:随着MoE模型(Switch Transformer、Mixtral等)普及,专家并行作为模型并行的新维度出现,每个专家被放置在独立设备,路由分配输入token,带来All‑to‑All通信模式。
- 2024+:万亿参数模型探索中,分层通信拓扑优化(如将所有TP置于NVSwitch域,PP跨机柜等)和模型并行与序列并行的结合(如Ring Attention)成为前沿。
技术路线对比
| 并行策略 | 切分粒度 | 通信量 | 显存节省 | 气泡/通信开销 | 实现复杂度 | 适用场景 |
|---|---|---|---|---|---|---|
| 数据并行 | 按数据 | 梯度AllReduce(每步) | 无 | 低 | 低 | 模型可放入单卡,需提吞吐 |
| 流水线并行 | 按层 | 激活/梯度点对点传 | 高 | 气泡(可缓解) | 中 | 模型深度大,层间计算量较均衡 |
| 张量并行 | 单层矩阵内 | AllReduce/AllGather | 高 | 通信带宽敏感 | 高 | 单层过大,需要节点内高速互联 |
| 专家并行 | 按专家参数 | All‑to‑All(每token) | 高 | 低于等规模密集 | 中高 | MoE模型,路由多专家 |
| 3D并行(混合) | 多层、层内、数据 | 混合上述 | 最高扩展 | 需仔细调优 | 极高 | 千亿/万亿参数训练,大规模集群 |
显存节省与通信量为定性评估,实际取决于具体配置和硬件。
上下游
上游
- 硬件:GPU(NVIDIA H100等)、TPU、NPU提供大显存和高速互联(NVLink、NVSwitch、InfiniBand、PCIe Gen5)。
- 分布式通信库:NCCL、MPI、Gloo等高效集合通信是模型并行的地基。
- 框架与编译器:PyTorch Distributed、Megatron‑LM、DeepSpeed、Alpa、GSPMD、OneFlow等,提供高层API和自动优化。
- 调度与资源管理:Kubernetes、Slurm、云原生弹性训练平台。
下游
- 大模型训练:是千亿/万亿量级语言模型、多模态模型、推荐模型训练的必备手段。
- 大模型推理:多卡推理部署需模型并行以降低延迟或破解显存限制。
- 科学计算:物理模拟等深度学习模型也会应用。
关键指标
- 并行效率:实际吞吐 / (总设备数 × 单设备吞吐的线性预期)。
- 气泡率:流水线并行中设备空闲时间占比,受微批次数和stage数影响。
- 通信量/计算量比:衡量张量并行开销,数值越小越好。
- 显存均衡度:各设备间的参数+激活+优化器状态的内存使用差异,不均衡会导致“木桶效应”。
- 故障恢复能力:大集群训练常面临故障,检查点保存/加载与并行友好的恢复策略至关重要。
(具体数字因硬件、配置、模型结构而异,无通用标准值,需按现场profiling确定。)
供需与市场数据
大量企业、研究机构对千亿、万亿参数模型训练的需求驱动模型并行成为“标准基建”。据行业估算,训练一个万亿参数模型可能需要数千甚至上万张高性能GPU,高效模型并行是让这些设备协同发挥算力的关键。云厂商(AWS、Azure、GCP)相继推出针对大模型训练的“并行优化集群”服务,框架如Megatron-LM和DeepSpeed的下载量与社区活跃度迅速攀升,反映出旺盛的产业需求。可以观察到,拥有自主高效的模型并行框架(如NVIDIA的Megatron、微软的DeepSpeed)的公司在云AI服务市场中的竞争力明显增强。(具体市场营收数据未充分披露,此处为定性描述。)
代表公司与资本映射
- NVIDIA:不仅供应GPU和NVLink互联,其Megatron‑LM框架是事实上的张量并行标准,NeMo平台整合了3D并行,巩固了其在AI基础设施的核心地位。
- 微软:DeepSpeed以ZeRO闻名,并集成流水线并行和张量并行,降低大模型训练门槛,是其Azure智能云的重要卖点。
- 谷歌:GPipe开创者,后续推出GSPMD自动并行和Pathways系统,结合TPU专属互联,其内部大模型(如PaLM)深度使用模型并行,技术通过Google Cloud输出。
- Meta:开源LLaMA系列和FairScale/Opt等框架,在多维并行方面有大量实践与共享,驱动研究和生态发展。
- 其他:百度(飞桨PaddlePaddle分布式策略)、华为(昇思MindSpore及昇腾集群的并行优化)、国内云厂商(阿里PAI、腾讯混元)均在大模型并行技术上深度投入。初创公司(如MosaicML被Databricks收购)也因创新并行训练效率而获得资本青睐。
投资逻辑
模型并行技术是AI Scaling Law得以延续的关键基础设施。关注点:
- 硬件互联能力:节点内高带宽交换(如NVSwitch)直接决定TP的规模上限,利好掌握先进互联技术的芯片龙头。
- 训练效率与成本:更优秀的并行策略(如1F1B调度改良、自动并行编译)能显著降低等效算力成本,使云服务商或模型公司获益。
- 框架生态壁垒:Megatron+DeepSpeed等组合形成事实标准,新进入者需绕过庞大工程积累。投资拥有强大并行框架掌控力的企业,可享受大模型军备竞赛的“卖铲人”红利。
- 风险:模型架构变化(如MoE、RWKV等非Transformer结构)可能改变并行策略的通用性;如果单芯片显存和算力增速持续超越模型规模增速,部分模型并行的必要性会下降(但当前趋势仍为模型增速更快)。
常见误读纠偏
-
误读1:“模型并行解决了所有扩展性问题”
事实:模型并行必须与数据并行、ZeRO、激活重计算、混合精度等组合成完整方案,仅靠一种并行难以实现大规模线性扩展。而且随着并行度增大,通信开销可能成为新瓶颈。 -
误读2:“流水线并行就是模型并行的全部”
事实:流水线并行是按层进行算子间并行,张量并行则是算子内并行。很多工程实践会同时采用两者,在节点内用张量并行解决单层显存问题,跨节点用流水线并行扩展深度。 -
误读3:“张量并行在任何规模的Transformer上都表现优异”
事实:张量并行在参数量不够大、并行度较高时,通信量可能超过计算收益,导致整体吞吐下降。实践中,仅在单层参数量超过某个阈值(如数十亿)或矩阵维度极大时才启用,并与较小的并行度配合。
学习路径
- 基础知识:掌握集合通信(AllReduce、AllGather、ReduceScatter、All‑to‑All)和分布式训练基本概念(rank、world size)。
- 经典论文:
- GPipe(2019)
- Megatron‑LM(2019)
- PipeDream‑2BW(2020)
- DeepSpeed ZeRO(2020)
- Alpa(2022)
- 动手实践:
- 使用PyTorch Distributed编写简单的列/行并行MLP,在单机多卡环境验证通信。
- 复现Megatron‑LM微型示例,尝试调节TP/PP/DP组合,观察吞吐变化。
- 阅读DeepSpeed配置文件,理解ZeRO Stage3与模型并行的协作。
- 进阶:研究Megatron‑LM源代码中的张量并行MLP和注意力实现;尝试用Alpa自动并行一个中等规模Transformer;了解拓扑感知通信(如节点内NCCL调用与节点外InfiniBand调度)。
一句话总结
模型并行是大模型时代突破单卡显存墙,通过协同切分计算图让数千GPU合力训练万亿参数模型的核心策略。
延伸阅读与来源
- 经典论文:
GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism (2019)
Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism (2019)
Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM (2021)
DeepSpeed: System Optimizations Enable Training Deep Learning Models with Over 100 Billion Parameters (2020)
Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning (2022) - 开源代码:
Megatron‑LM (GitHub)
DeepSpeed (GitHub) - 技术博客:NVIDIA Developer Blog、Microsoft Research Blog、Google AI Blog上关于并行训练的专题文章。
- 行业分析:各大云厂商关于大模型训练集群架构的白皮书,以及主要AI芯片公司的技术峰会演讲。
注:本文因未取得具体硬件规格的权威检索数据,涉及通信带宽、显存容量、并行规模等数字为定性描述或行业惯常经验,未标注具体数值的,表示[未充分披露]或基于公开领域估计。