五个维度各切什么、各花多少通信量、该放在哪一层网络——一次讲透
大模型训练与推理的本质矛盾是:模型越来越大,单卡显存和算力都不够用。解法只有一个字:切。但「切」有五种切法——数据并行(DP)、张量并行(TP)、流水线并行(PP)、专家并行(EP)、上下文并行(CP),每种切法产生完全不同的通信模式,而通信模式决定了这些并行该摆在网络的哪一层。
本文把五个维度逐个讲清楚,再给出混合并行(3D/4D/5D)的配置思路与落地要点。
训练显存被四样东西吃掉:
| 占用项 | 量级(以参数量 P 计) | 说明 |
|---|---|---|
| 模型权重 | ~2P(FP16/BF16) | 推理也要 |
| 梯度 | ~2P | 训练专属 |
| 优化器状态 | ~12P(Adam FP32 一阶/二阶动量 + 主权重) | 训练专属,最大头 |
| 激活值 | 随 batch × 序列长度增长 | 长序列时爆炸 |
一个 70B 模型纯权重就要 140GB(FP16),加上梯度和优化器状态超过 1TB——单张 80GB 卡连零头都放不下。所以必须把权重、梯度、优化器状态、激活值分别切到多张卡上,这就是并行的全部动机。
| 维度 | 全称 | 切的是什么 | 通信原语 | 通信量 | 典型摆位 |
|---|---|---|---|---|---|
| DP | Data Parallelism | 数据(batch) | AllReduce(Ring) | 小(≈2×参数量) | 跨节点 |
| TP | Tensor Parallelism | 权重矩阵(层内) | AllReduce | 最大 | 节点内(NVLink) |
| PP | Pipeline Parallelism | 模型深度(层间) | 点对点 Send/Recv | 很小 | 跨节点 |
| EP | Expert Parallelism | MoE 专家 | All-to-All | 中大 | 视规模 |
| CP | Context Parallelism | 序列(token 维) | 环形 KV 传递 | 中 | 跨节点(长序列) |
一句话记:TP/EP 切参数,DP 切数据,CP 切序列,PP 切深度——五个维度互相正交,可以任意叠加。
总卡数的基本公式:
总 GPU 数 = TP × PP × CP × EP × DP
不用长上下文和 MoE 时,CP=EP=1,公式退化为 DP = 总卡数 / (TP × PP)。所谓「调优」,本质就是在满足显存约束的前提下,选一组 TP/PP 让通信开销最小、DP 尽量大。
怎么切:每张卡保存一份完整模型副本,各自吃不同的数据 batch,训练完把梯度同步一致。
通信模式:每步一次 Ring AllReduce——现代框架不会让每个 GPU 把梯度发给所有 GPU(那样通信量是 GPU 数倍),而是排成环,分两步:
总通信量约 2×参数量,与 GPU 数量无关(这是 Ring AllReduce 的精髓),但与模型大小强相关——模型越大,DP 通信开销越大。
代价:显存完全不省(每卡都有完整权重+梯度+优化器状态)。7B 模型 FP16 梯度约 14GB,一次 AllReduce 每卡要产生几十 GB 流量,所以大模型从不单用 DP。
进化方向:ZeRO / FSDP——把优化器状态、梯度、参数本身也切片分散到各卡,用「通信换显存」。ZeRO-3 在千卡规模训练万亿参数模型时,单卡显存占用可从 TB 级降到 GB 级。
怎么切:把每一层的权重矩阵按维度切开,多卡协同完成一次矩阵乘法。
Transformer 里的标准做法是 列切 → 行切 交替(Megatron 风格),前向每层要 2 次 AllReduce,反向再 2 次。
通信模式特点:通信量最大、频次最高、对延迟最敏感——每次前向/反向都要通信,且通信量正比于激活值大小(与 batch×序列长度相关)。
铁律:TP 必须放在节点内,靠 NVLink/NVSwitch 承载(几百 GB/s 到 TB/s 级);一旦 TP 跨节点走以太网/RoCE,通信就会把计算吃光。所以 TP 度数通常 ≤ 8(等于单机 GPU 数)。
代价:通信量随 TP 度数暴涨,且 LayerNorm/Dropout 等算子在 TP 下会重复计算激活(见下面的 SP)。
严格说 SP 不是独立维度,而是 TP 的配套优化:
所以 SP 是「TP 组内的激活切分」,不改变通信组拓扑,只省激活显存。SP 与 CP 名字像、本质不同:SP 是 TP 的补丁(组内切激活),CP 是独立维度(跨节点切序列)。
怎么切:按层切——前 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))。
怎么切:MoE 层有 N 个专家,把专家分到不同 GPU 上,token 按路由结果发到对应专家计算,再收回来。
通信模式:All-to-All——每张卡都可能把 token 发给其他任何一张卡,是全连接式的通信,量级与「token 数 × 激活维度 × 路由专家数」相关。
两大难题:
优点:在参数量爆炸但激活稀疏的 MoE 模型上,EP 让「万亿参数」只激活一小部分,是降本关键。
怎么切:把序列维度切成 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 能铺到几千卡。
DP × TP × PP 三个维度正交组合:
举例:512 张卡,想让模型放进 8 卡(TP=8),模型切成 4 段(PP=4),那么 DP = 512 / (8×4) = 16。三个通信组(TP group / PP group / DP group)各自独立,互不干扰——这就是并行组(process group)设计。
于是完整公式变成:
总 GPU = TP × PP × CP × EP × DP
现实中千卡级别的训练基本都是 4D 甚至 5D 混合,例如 DeepSeek-V3 的 DualPipe + EP + 计算通信重叠,把五个维度压榨到极致。
不要一上来就上五维混合,按需逐级加:
调优时的三个观察指标(决定要不要动并行配置):
大模型并行没有「银弹配置」,只有约束下的最优解:显存、带宽、气泡、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 直连 · 向量云 · 大模型并行策略与通信
A. 切的对象不同:DP(数据并行)每卡保存完整模型、切数据 batch,靠 AllReduce 同步梯度;TP(张量并行)切层内权重矩阵,每层多次 AllReduce,通信量最大;PP(流水线并行)按层切模型深度,只在 stage 间传边界激活,通信量最小。三者正交,可组合成 3D 并行。
A. TP 的通信频次和通信量在所有维度里最高——前向反向每层都要 AllReduce,且通信量与激活大小成正比。只有节点内 NVLink/NVSwitch 的带宽(数百 GB/s 至 TB/s)和极低延迟才能承载;一旦 TP 跨节点走普通网络,通信开销会直接吃掉算力收益。
A. 气泡指流水线中因各 stage 先后依赖导致的 GPU 空转时间。解法依次是:① 1F1B 调度(前向反向交替、用 micro-batch 填满流水线);② 交错式 1F1B(virtual pipeline,每卡持多个非连续层块);③ DualPipe(DeepSeek-V3,前反向双向流水并重叠通信)。经验上 micro-batch 数 ≥ 4×PP 度数,气泡才可接受。
A. EP 用于 MoE 模型,采用 All-to-All 通信——每个 GPU 都可能把 token 发给其他任意 GPU,属于全连接式通信,是最贵的集合通信之一;且存在专家负载不均衡问题(热门专家被挤爆)。因此 EP 必须与计算重叠(如 DeepEP、DualPipe),并配合辅助损失或偏置调节做负载均衡。
A. 两者都切序列,但定位不同:SP 是 TP 的配套补丁——只把 LayerNorm/Dropout 等算子的输出在 TP 组内沿序列切分,省下重复的激活显存,不改变通信组;CP 是独立并行维度——把序列跨卡切分,用 Ring Attention 环形传递 KV 块,解决 128K/1M 超长上下文的显存问题。
A. 3D 并行 = DP × TP × PP(Megatron-LM 经典组合);4D 通常再加 EP(MoE 模型)或 CP(长序列);5D 则把 CP 与 EP 全部纳入。总卡数公式为 总 GPU = TP × PP × CP × EP × DP。维度正交、各自独立成通信组。
A. 官方朴素原则:先只用 DP(配 ZeRO/FSDP),放不下再加 TP,还放不下加 PP,MoE 加 EP,长序列加 CP。调优时盯三个指标:单卡 MFU(偏低且气泡明显就加大 micro-batch)、显存峰值(有富余就降 TP/PP 加 DP)、各 rank 通信耗时(集中在 TP AllReduce 就检查 TP 是否跨节点)。