LLM 训练 · 并行策略与通信

大模型并行通信模式详解:
DP / TP / PP / EP / CP,以及 3D/4D 混合并行怎么配

五个维度各切什么、各花多少通信量、该放在哪一层网络——一次讲透

大模型训练与推理的本质矛盾是:模型越来越大,单卡显存和算力都不够用。解法只有一个字:切。但「切」有五种切法——数据并行(DP)、张量并行(TP)、流水线并行(PP)、专家并行(EP)、上下文并行(CP),每种切法产生完全不同的通信模式,而通信模式决定了这些并行该摆在网络的哪一层。

本文把五个维度逐个讲清楚,再给出混合并行(3D/4D/5D)的配置思路与落地要点。

为什么必须并行

一、为什么必须并行:一句话讲清显存四件套

训练显存被四样东西吃掉:

占用项量级(以参数量 P 计)说明
模型权重~2P(FP16/BF16)推理也要
梯度~2P训练专属
优化器状态~12P(Adam FP32 一阶/二阶动量 + 主权重)训练专属,最大头
激活值随 batch × 序列长度增长长序列时爆炸

一个 70B 模型纯权重就要 140GB(FP16),加上梯度和优化器状态超过 1TB——单张 80GB 卡连零头都放不下。所以必须把权重、梯度、优化器状态、激活值分别切到多张卡上,这就是并行的全部动机。

五个维度总览

二、五个维度总览:谁切什么

维度全称切的是什么通信原语通信量典型摆位
DPData Parallelism数据(batch)AllReduce(Ring)小(≈2×参数量)跨节点
TPTensor Parallelism权重矩阵(层内)AllReduce最大节点内(NVLink)
PPPipeline Parallelism模型深度(层间)点对点 Send/Recv很小跨节点
EPExpert ParallelismMoE 专家All-to-All中大视规模
CPContext Parallelism序列(token 维)环形 KV 传递中跨节点(长序列)

一句话记:TP/EP 切参数,DP 切数据,CP 切序列,PP 切深度——五个维度互相正交,可以任意叠加。

总卡数的基本公式:

总 GPU 数 = TP × PP × CP × EP × DP

不用长上下文和 MoE 时,CP=EP=1,公式退化为 DP = 总卡数 / (TP × PP)。所谓「调优」,本质就是在满足显存约束的前提下,选一组 TP/PP 让通信开销最小、DP 尽量大。

逐个讲

三、五个维度逐个讲

1. DP(数据并行):最朴素,也最先用

怎么切:每张卡保存一份完整模型副本,各自吃不同的数据 batch,训练完把梯度同步一致。

通信模式:每步一次 Ring AllReduce——现代框架不会让每个 GPU 把梯度发给所有 GPU(那样通信量是 GPU 数倍),而是排成环,分两步:

  1. ReduceScatter:每卡只汇总梯度的 1/N 分片
  2. AllGather:把各卡的分片广播拼回完整梯度

总通信量约 2×参数量,与 GPU 数量无关(这是 Ring AllReduce 的精髓),但与模型大小强相关——模型越大,DP 通信开销越大。

代价:显存完全不省(每卡都有完整权重+梯度+优化器状态)。7B 模型 FP16 梯度约 14GB,一次 AllReduce 每卡要产生几十 GB 流量,所以大模型从不单用 DP。

进化方向:ZeRO / FSDP——把优化器状态、梯度、参数本身也切片分散到各卡,用「通信换显存」。ZeRO-3 在千卡规模训练万亿参数模型时,单卡显存占用可从 TB 级降到 GB 级。

2. TP(张量并行):通信量最大,必须待在节点内

怎么切:把每一层的权重矩阵按维度切开,多卡协同完成一次矩阵乘法。

Transformer 里的标准做法是 列切 → 行切 交替(Megatron 风格),前向每层要 2 次 AllReduce,反向再 2 次。

通信模式特点:通信量最大、频次最高、对延迟最敏感——每次前向/反向都要通信,且通信量正比于激活值大小(与 batch×序列长度相关)。

铁律:TP 必须放在节点内,靠 NVLink/NVSwitch 承载(几百 GB/s 到 TB/s 级);一旦 TP 跨节点走以太网/RoCE,通信就会把计算吃光。所以 TP 度数通常 ≤ 8(等于单机 GPU 数)。

代价:通信量随 TP 度数暴涨,且 LayerNorm/Dropout 等算子在 TP 下会重复计算激活(见下面的 SP)。

3. SP(序列并行):TP 的「补丁」

严格说 SP 不是独立维度,而是 TP 的配套优化:

所以 SP 是「TP 组内的激活切分」,不改变通信组拓扑,只省激活显存。SP 与 CP 名字像、本质不同:SP 是 TP 的补丁(组内切激活),CP 是独立维度(跨节点切序列)。

4. PP(流水线并行):通信量最小,但怕「气泡」

怎么切:按层切——前 1/4 层放卡 0,接着 1/4 放卡 1……每卡只放一段 Transformer Block。

通信模式:相邻 stage 之间只要传边界激活(点对点 Send/Recv),通信量极小,所以 PP 可以跨节点,用普通以太网甚至都能扛。

代价:流水线气泡(Bubble)。朴素实现下,卡 0 算完一批才轮到卡 1,其余卡全在空转。解法层层递进:

调度策略思路气泡
朴素 PP一次一个 micro-batch最大
1F1B(One-Forward-One-Backward)用多个 micro-batch 填满流水线,前向反向交替执行显著降低
交错式 1F1B(Interleaved / Virtual Pipeline)每卡持有多个不连续的层块(virtual stage)进一步降低
DualPipe(DeepSeek-V3)前向与反向双向流水,重叠计算与通信接近消除

实用算法:micro-batch 数量要 ≥ 4×PP 度数,气泡占比才可接受(约 气泡比例 ≈ (PP-1)/(micro-batch 数 + PP - 1))。

5. EP(专家并行):MoE 的专属维度

怎么切:MoE 层有 N 个专家,把专家分到不同 GPU 上,token 按路由结果发到对应专家计算,再收回来。

通信模式:All-to-All——每张卡都可能把 token 发给其他任何一张卡,是全连接式的通信,量级与「token 数 × 激活维度 × 路由专家数」相关。

两大难题:

优点:在参数量爆炸但激活稀疏的 MoE 模型上,EP 让「万亿参数」只激活一小部分,是降本关键。

6. CP(上下文并行):长序列的救命稻草

怎么切:把序列维度切成 N 段,每卡只处理一段 token。适合上下文长度到 128K 甚至 1M 的场景——此时单样本的注意力矩阵就能撑爆显存。

核心实现:Ring Attention / 环形 KV 传递

特点:CP 是独立并行维度(与 TP 正交),主要省激活与 KV 的显存,代价是引入环形的 KV 通信——通信量与序列长度成正比,长序列时不可忽略。

CP vs SP 一句话区分:SP 是「TP 内部顺手切激活」,CP 是「跨卡切序列做长上下文」,两者可以同时开。

通信量与摆放位置

四、通信量与摆放位置:一条铁律

把五个维度的通信量排个序(由大到小):

TP  >  SP  >  EP  >  PP  >  DP

由此得到并行布局的核心铁律:

并行维度通信量对带宽要求建议摆放
TP / SP最大(每层多次 AllReduce)极高、极低延迟节点内 NVLink(TP ≤ 8)
EP大(All-to-All)高尽量节点内,跨节点需精细重叠
CP中(环传 KV)中高可跨节点,与计算重叠
PP小(点对点激活)低可跨节点
DP小(Ring AllReduce,与卡数无关)中跨节点(可用较便宜网络)

一句话:越贵的通信越往机内塞,越便宜的通信越往外放。这条铁律同时解释了为什么 TP 度数通常不超过单机 GPU 数、为什么 DP 能铺到几千卡。

混合并行

五、混合并行:3D / 4D / 5D 怎么组合

1. 3D 并行:Megatron-LM 的经典配方

DP × TP × PP 三个维度正交组合:

举例:512 张卡,想让模型放进 8 卡(TP=8),模型切成 4 段(PP=4),那么 DP = 512 / (8×4) = 16。三个通信组(TP group / PP group / DP group)各自独立,互不干扰——这就是并行组(process group)设计。

2. 4D / 5D:加入 EP 与 CP

于是完整公式变成:

总 GPU = TP × PP × CP × EP × DP

现实中千卡级别的训练基本都是 4D 甚至 5D 混合,例如 DeepSeek-V3 的 DualPipe + EP + 计算通信重叠,把五个维度压榨到极致。

3. 混合并行的推荐配置顺序(官方朴素原则)

不要一上来就上五维混合,按需逐级加:

  1. 先只用 DP(配合 ZeRO/FSDP)——能放下就不折腾
  2. 放不下 → 加 TP(先 2 再 4,注意别跨节点)
  3. 还放不下 → 加 PP(层切分,注意 micro-batch 数量够不够)
  4. 上是 MoE → 加 EP
  5. 序列超长 → 加 CP

调优时的三个观察指标(决定要不要动并行配置):

落地要点

六、落地设计要点(八条)

  1. TP 绝不跨节点:TP 通信量与频次最高,跨节点必被网络拖死;TP 度数 ≤ 单机 GPU 数
  2. PP 要喂饱 micro-batch:micro-batch 数 ≥ 4×PP 度数,否则气泡吃掉一半算力
  3. DP 用 Ring AllReduce + ZeRO:通信量与卡数无关是它最大的优势;显存不够就上 ZeRO/FSDP
  4. EP 要重叠通信:All-to-All 与计算重叠是 MoE 训练的生命线,别让 GPU 等网络
  5. CP 用于长序列:序列超 32K 再考虑 CP,配合 FlashAttention 分块 + 环形 KV
  6. SP 与 TP 同组开:SP 是 TP 的免费显存优化,能开就开
  7. 并行组设计要清晰:TP/PP/CP/EP/DP 各自成组,通信域不交叉,避免「隐形全连接」
  8. 先测基线再调参:跑通小规模后固定 MFU/显存/通信耗时三个指标,再逐维加并行
总结

七、写在最后

大模型并行没有「银弹配置」,只有约束下的最优解:显存、带宽、气泡、MOE 负载,四项互相拉扯。理解每个维度的通信模式,就理解了该怎么摆位——

把这张「通信量地图」记住,3D/4D/5D 的配置就从玄学变成了推导题。

关于向量云:大模型落地,把基础设施的复杂性留给我们

并行策略调优、集群通信优化、长序列与 MoE 部署,都是持续的基础设施工程。向量云(南京)科技有限公司依托字节跳动火山方舟官方授权,专注大模型应用落地:

向量云能力说明
官方授权接入火山方舟官方 API 与官方 Key 直连
低折扣 Token专属折扣价,用量越大越划算
独享接入点独立接入点,缓存与配额不被公共池挤占
缓存隔离降本上下文缓存红利稳定落袋
计费灵活按量计费、即用即扣、注册充值 10 元起
协议兼容OpenAI 兼容协议,业务代码几乎零改动

接入方式:注册后获取官方 API Key,把 base_url 指向向量云接入点即可直接调用火山方舟官方模型。

获取 API Key:https://ark.tokenrize.cn/ · 火山方舟官方 API 与 Key 直连,注册即用

一句话总结:TP/SP 塞进 NVLink,PP/DP 铺到跨节点,EP 配 MoE、CP 配长序列——通信量地图就是混合并行的配置指南。

关于向量云
向量云(南京)科技有限公司

面向大模型应用落地的技术服务型企业,依托字节跳动火山方舟能力,为合作方提供低折扣模型 Token、可独立部署的运营支撑平台及全链路运营支持。

火山方舟官方授权 官方 API Key 独享接入点 缓存隔离降本 低折扣 Token 即用即扣 · 不设账期

常见问题(FAQ)

火山方舟官方 API 与官方 Key 直连 · 向量云 · 大模型并行策略与通信

Q1. DP、TP、PP 三者到底有什么区别?

A. 切的对象不同:DP(数据并行)每卡保存完整模型、切数据 batch,靠 AllReduce 同步梯度;TP(张量并行)切层内权重矩阵,每层多次 AllReduce,通信量最大;PP(流水线并行)按层切模型深度,只在 stage 间传边界激活,通信量最小。三者正交,可组合成 3D 并行。

Q2. 为什么张量并行(TP)必须放在节点内?

A. TP 的通信频次和通信量在所有维度里最高——前向反向每层都要 AllReduce,且通信量与激活大小成正比。只有节点内 NVLink/NVSwitch 的带宽(数百 GB/s 至 TB/s)和极低延迟才能承载;一旦 TP 跨节点走普通网络,通信开销会直接吃掉算力收益。

Q3. 流水线并行的「气泡」是什么?怎么减少?

A. 气泡指流水线中因各 stage 先后依赖导致的 GPU 空转时间。解法依次是:① 1F1B 调度(前向反向交替、用 micro-batch 填满流水线);② 交错式 1F1B(virtual pipeline,每卡持多个非连续层块);③ DualPipe(DeepSeek-V3,前反向双向流水并重叠通信)。经验上 micro-batch 数 ≥ 4×PP 度数,气泡才可接受。

Q4. EP(专家并行)为什么通信开销大?

A. EP 用于 MoE 模型,采用 All-to-All 通信——每个 GPU 都可能把 token 发给其他任意 GPU,属于全连接式通信,是最贵的集合通信之一;且存在专家负载不均衡问题(热门专家被挤爆)。因此 EP 必须与计算重叠(如 DeepEP、DualPipe),并配合辅助损失或偏置调节做负载均衡。

Q5. SP(序列并行)和 CP(上下文并行)有什么不同?

A. 两者都切序列,但定位不同:SP 是 TP 的配套补丁——只把 LayerNorm/Dropout 等算子的输出在 TP 组内沿序列切分,省下重复的激活显存,不改变通信组;CP 是独立并行维度——把序列跨卡切分,用 Ring Attention 环形传递 KV 块,解决 128K/1M 超长上下文的显存问题。

Q6. 3D、4D、5D 混合并行分别是什么?

A. 3D 并行 = DP × TP × PP(Megatron-LM 经典组合);4D 通常再加 EP(MoE 模型)或 CP(长序列);5D 则把 CP 与 EP 全部纳入。总卡数公式为 总 GPU = TP × PP × CP × EP × DP。维度正交、各自独立成通信组。

Q7. 混合并行该怎么配?有没有推荐顺序?

A. 官方朴素原则:先只用 DP(配 ZeRO/FSDP),放不下再加 TP,还放不下加 PP,MoE 加 EP,长序列加 CP。调优时盯三个指标:单卡 MFU(偏低且气泡明显就加大 micro-batch)、显存峰值(有富余就降 TP/PP 加 DP)、各 rank 通信耗时(集中在 TP AllReduce 就检查 TP 是否跨节点)。