DeepSeek-V3 训练基础设施 · arXiv:2412.19437

DualPipe: 双向流水线并行

DeepSeek 如何通过在双向流水线中重叠计算与通信,实现近零通信开销。DualPipe 是使 DeepSeek-V3 的 671B 参数训练在经济上可行的基础设施支柱。

双向调度

从流水线两端同时送入微批次,最大化所有阶段的 GPU 利用率。

计算-通信重叠

将每个块拆分为 4 个组件(Attention、Dispatch、MLP、Combine),实现计算与 All-to-All 通信的重叠。

气泡减少约 50%

相比 1F1B,流水线气泡比率显著降低,接近零空闲时间。

4 组件块分解

DualPipe 的核心洞察:MoE 模型中的每个 Transformer 层可以拆分为 4 个组件,将计算密集型和通信密集型操作分离,使 DualPipe 能够完美地实现重叠。

Attention

计算密集型。在每个节点上本地处理 Q/K/V 投影和注意力分数。

计算
All-to-All Dispatch

通信密集型。将 Token 路由到跨节点的指定专家。

通信
Expert MLP

计算密集型。每个专家独立处理分配给它的 Token。

计算
All-to-All Combine

通信密集型。将专家输出收集回原始节点。

通信
Attention
All-to-All Dispatch
Expert MLP
All-to-All Combine
Micro-batch 1
Attn
Dispatch
MLP
Combine
Micro-batch 2
Waiting...
Attn
Dispatch...

没有重叠时,通信阻塞计算。GPU 空闲等待数据传输。

双向流水线调度

DualPipe 从流水线两端同时送入微批次。在 DualPipe 的调度中,前向传递从左到右流动,反向传递从右到左流动,填补原本浪费 GPU 时间的流水线气泡。

时间步 →
1
2
3
4
5
6
7
8
9
10
11
12
13
14
阶段 1
F1
F1'
F+B
F+B
F+B
F+B
F+B
F+B
F+B
B1
B1'
F+B
F+B
阶段 2
F2
F2'
F+B
F+B
F+B
F+B
F+B
B2
B2'
F+B
F+B
阶段 3
F3
F3'
F+B
F+B
F+B
B3
B3'
F+B
F+B
阶段 4
F4
F4'
F+B
B4
B4'
F+B
F+B
阶段 5
F5
F+B
B5'
F+B
F+B
F+B
阶段 6
B6
F+B
F6'
F+B
F+B
F+B
F+B
阶段 7
B7
B7'
F+B
F7
F7'
F+B
F+B
F+B
F+B
阶段 8
B8
B8'
F+B
F+B
F+B
F8
F8'
F+B
F+B
F+B
F+B
前向
反向
前向+反向
气泡

与只从一个方向发送微批次的 1F1B 不同,DualPipe 同时使用双端。这意味着 DualPipe 中每个方向的'预热'和'冷却'气泡互相填补,实现了接近零的 GPU 空闲时间。

气泡比率对比

流水线气泡代表处理器空闲等待时浪费的 GPU 时间。DualPipe 相比 1F1B 和 Zero Bubble 等现有方法大幅减少了这些气泡。

气泡比率(8 阶段)

0%30%60%90%110%1F1BZB-1PDualPipe

气泡公式

1F1B100%
(PP−1)(F+B)
参数内存: 1×(基准)
ZB-1P(零气泡)~70%
(PP−1)(F+B−2W)
参数内存: 1×(基准)
DualPipe~26%
(PP/2−1)(F&B+B−3W)
参数内存: 2× 参数
PP = 流水线阶段数。F = 前向时间,B = 反向时间,W = 权重更新时间。DualPipe 用 2× 参数内存换取约 50% 的气泡减少,在训练 DeepSeek-V3 这种规模的模型时,这是非常值得的权衡。

性能结果

DualPipe 在 DeepSeek-V3 训练中带来了显著的实际吞吐量提升。

约 1.8× 吞吐量

~1.8×

与基准流水线并行相比,DualPipe 实现了约 1.8 倍的训练吞吐量提升。

近零通信开销

≈ 0%

跨节点专家并行的 All-to-All 通信几乎完全隐藏在计算之后。

线性可扩展性

671B

性能在数百个节点间高效扩展,支持 671B 参数模型的训练。

内存权衡

需要 2× 参数内存(存储前向和反向模型副本),激活内存略有增加。

常见问题 (FAQ)

因为它同时从流水线两端处理微批次,每个阶段需要两份模型参数副本——一份用于正向微批次,一份用于反向微批次。这是一个有意的权衡:用内存换吞吐量。
ZB-1P 通过在单一流水线方向内重新排序操作来减少气泡。DualPipe 更进一步,使用双向调度——从两端送入微批次。此外,DualPipe 专门针对 MoE 模型中的 All-to-All 通信重叠,这是 ZB-1P 没有解决的问题。
DualPipe 的双向调度概念适用于任何流水线并行模型。但 4 组件分解(Attention/Dispatch/MLP/Combine)是专门为跨节点专家并行的 MoE 架构设计的。对于稠密模型,DualPipe 的通信重叠收益会较小。
DualPipe 被设计为与其他并行策略互补。在 DeepSeek-V3 的训练配置中,DualPipe 负责流水线并行,而张量并行和专家并行在每个流水线阶段内运行。DualPipe 的 4 组件分解专门针对专家并行带来的 All-to-All 通信,使这些策略协同工作而非相互冲突。

知识小测验

看看你掌握了多少核心知识点?

QUESTION 1 / 3Score: 0

DualPipe 的核心创新是什么?