- 单个GPU卡内存有限,从而引发的各种问题,可分为两个维度来看:
- 换句话而言,如果模型又小,单个batch数据不多,一张卡跑就够了,也不需要各种并行。
- 如果模型一张卡能放下,但单个batch的数据放不下,那只需要DP,这样计算效率最高。在这种情况下再加入其他并行策略反而拖累训练效率。
- 只有在模型单卡也放不下的时候,这时才必须考虑DP之外的并行。不同的并行策略根据模型结构的不同,采取的策略也不一样。
- DP/TP/PP/EP/SP都可以同时开启(EP依赖于DP,只有DP开启的情况下,才可能开启EP;SP依赖于TP,只有在TP开启的情况下才能用SP)。
以上摘抄自:https://zhuanlan.zhihu.com/p/1904506837543420662
用做饭流水线通俗讲清 DP、TP、PP
做大份红烧肉套餐,一共:切肉、炖肉、调酱汁、装盘四道工序,客人有很多份订单。 GPU = 厨师,多张 GPU = 多个厨师。
1. DP 数据并行(最简单)
所有厨师每个人都会完整做完一整份红烧肉。 订单太多,把客人分成 4 批:厨师 1 做第 1 批客人,厨师 2 做第 2 批,各自独立从头做到尾。 做完之后统一核对调味标准(同步梯度)。
特点: 每个人手里都有全套配方(完整模型),只分工客人,互相很少交流。 对应 AI:每张 GPU 存完整模型,只拆分训练图片 / 文本,适合单纯提速。
2. PP 流水线并行(分层分工)
把做菜步骤拆开,每人只干固定一步: 厨师 1:只切肉 厨师 2:只炖肉 厨师 3:只调酱汁 厨师 4:只装盘
肉切好递给下一个人,不用所有人互相传东西,只传给隔壁。 对应 AI:把模型几十层拆开,A 卡算前几层,B 卡算中间几层,只把中间结果传给隔壁卡。
特点:同一时间只和隔壁一张卡通信,对带宽要求很低。
3. TP 张量并行(拆同一道工序,最吃带宽)
现在有一道工序特别复杂:一锅超大红烧肉,一个厨师根本忙不过来,必须 4 个人同时处理同一锅肉。 厨师 1 切一半肉,厨师 2 切另一半;厨师 3 熬一半酱汁,厨师 4 熬另一半。 做完之后四个人必须把自己手里半成品全部交换给所有人,拼出完整一份肉和酱汁。 四个人互相来回递食材,所有人之间都要频繁传递东西,非常考验传递速度(对应 xGMI 带宽)。
对应 AI:一层神经网络权重太大,一张卡装不下,把这一层拆开分给多张卡,计算完所有卡互相交换数据。
大模型五大并行 DP / TP / PP / SP / EP
统一设定:GPU = 厨师,完整模型 = 全套做菜菜谱,训练样本 = 客人订单,张量 / 激活 = 半成品食材,梯度 = 口味修正意见,高速互联 xGMI/NVLink = 厨师间快速传菜通道
一、DP 数据并行 Data Parallelism
核心逻辑
所有 GPU 都保存完整模型,只拆分输入训练数据,每张卡独立跑一批样本。
做饭类比
4 位厨师,每个人都掌握全套做菜流程;店里订单爆单,把订单平均分成 4 份,厨师各自独立做完自己手里所有订单。全部烹饪完成后,所有人交换口味修正意见(梯度),统一调整做菜配方标准,保证味道一致。
核心特点
- 卡间仅同步梯度(修正意见(梯度)--本次做题错在哪、该怎么微调模板的误差信号),传输数据极少,普通网卡就能满足,不需要高速互联;
- 硬性限制:单卡显存必须放下完整模型,超大模型无法单独只用 DP;
- 作用:扩大单次训练样本总量,加速训练收敛。
二、PP 流水线并行 Pipeline Parallelism
核心逻辑
纵向切割模型,按网络层拆分,每张 GPU 固定负责连续几层网络。
做饭类比
完整做菜流程分 4 道工序:洗菜→切菜→翻炒→装盘,4 名厨师分工固定岗位。厨师 1 洗完食材,只传给隔壁厨师 2;厨师 2 切完仅传给厨师 3,全程只和相邻一人传递半成品,不用和其他厨师交流。
核心特点
- 单卡只存储模型一小部分,能放下极深的百层大模型;
- 通信仅发生在相邻两张卡,带宽需求是五种并行里最低;
- 缺陷:流水线气泡,部分厨师空闲等待,算力存在浪费;
- 适用:层数极深的稠密 Transformer 大模型。
三、TP 张量并行 Tensor Parallelism
核心逻辑
横向切分单层权重矩阵,单层权重体积过大单卡承载不下,多张 GPU 协同计算同一层网络。
做饭类比
需要熬一锅巨型酱汁,一个人处理不完,4 位厨师同时协作制作这一锅酱汁,每人只负责一半配料。各自完成加工后,必须把半成品发给其余所有厨师,拼凑出完整酱汁才能进入下一步。
核心特点
- 同 TP 组内所有 GPU 两两高频互传中间张量,通信压力极大,必须依赖 xGMI、NVLink 高速直连带宽(对应你之前 MI300X 64GB/s 单向链路逻辑);
- 专门解决 Attention、FFN 单层权重爆炸问题;
- TP 规模越大,单卡可并行使用的高速链路越多,聚合带宽越高。
四、SP 序列并行 Sequence Parallelism
核心逻辑
属于 TP 的配套优化,沿文本序列长度维度切分输入,分摊超长文本带来的激活显存开销。
做饭类比
一份超大量套餐,一盘放不下,4 位厨师各自分装 1/4 份食材分段加工,处理完成后拼接成完整套餐。
核心特点
- 针对性解决 32k/128k 超长上下文场景激活显存溢出;
- 常和 TP 组合使用,通信逻辑和 TP 相近,但传输数据体量更小;
- 仅在长文本大模型中启用,短文本场景收益微弱。
五、EP 专家并行 Expert Parallelism(MoE 稀疏模型专用)
核心逻辑
稠密 LLM 无需使用,MoE 模型包含大量独立专家模块,把不同专家分散存储到不同 GPU。
做饭类比
门店备有 10 种特色配菜(专家模块),4 位厨师每人保管 2~3 种配菜;收到客人订单后,仅调用订单需要的配菜厨师产出,其余厨师闲置待命。
核心特点
- 单卡不用存储全部专家,大幅降低显存占用,支撑万亿稀疏 MoE 模型;
- 通信以路由分发数据为主,和 TP 全员广播式传输有明显区别;
- 是稀疏大模型必备并行策略,纯稠密模型不用。
一句话速记区分
- DP:人人会全套菜,分开接待客人,只交换调味修正意见
- PP:每人只干一道工序,半成品只传给隔壁厨师
- TP:多人合力完成同一道巨型工序,全员互相传递半成品
- SP:超长套餐分段加工,缓解食材存放空间不足
- EP:MoE 专属,配菜分开存放,按需调用对应厨师
多维并行组合规则
- 普通稠密大模型三维并行:总 GPU 数量 = DP × PP × TP示例:TP=4,PP=2,DP=8总卡数 = 4 × 2 × 8 = 64 张
- MoE 稀疏大模型四维并行:总 GPU 数量 = DP × PP × TP × EP
五大并行直观对比表
| 并行方式 | 拆分对象 | 通信压力 | 依赖高速互联? | 适用模型 |
|---|---|---|---|---|
| DP 数据并行 | 训练样本,完整模型每卡一份 | 极小(仅传梯度) | 不需要 | 中小模型、提速扩容 batch |
| PP 流水线并行 | 模型网络层(纵向切) | 很低(仅邻卡传激活) | 可选 | 层数极深的稠密大模型 |
| TP 张量并行 | 单层权重矩阵(横向切) | 极高(全卡互传张量) | 必须 xGMI/NVLink | 单层权重超大的 Transformer |
| SP 序列并行 | 输入文本序列长度 | 中等,低于 TP | 需要高速互联 | 超长上下文大模型 |
| EP 专家并行 | MoE 专家模块 | 中等(路由通信) | 建议高速互联 | 稀疏 MoE 混合专家模型 |