序列并行(Sequence Parallelism)
3 秒看懂
序列并行(SP) 是将 Transformer 的序列维度(token 位置)切分到多张卡上并行计算的技术,与张量并行(TP)、流水线并行(PP)、数据并行(DP)互补,核心目标是降低长序列训练的激活显存占用并支持更长上下文窗口。主流实现包括 NVIDIA Megatron-SP(与 TP 耦合)、Ring Attention(环形通信)和 DeepSpeed Ulysses(AllToAll 通信)三条路线。
3 分钟产业解释
为什么需要序列并行?
大模型训练的显存瓶颈主要来自三块:参数、优化器状态、激活值(Activations)。当序列长度从 2K 推向 128K 甚至更长时,激活值的显存占用随序列长度线性增长,成为首要瓶颈。
以标准 Transformer 为例,每一层需要存储的激活包括:LayerNorm 输入、注意力分数矩阵、Dropout 掩码等,这些激活在前向时需要保留供反向使用(或用重计算换时间)。序列越长,这批激活越大。
序列并行的思路:既然序列维度很长,那就把它切成 N 份,每张卡只处理 S/N 个 token 的部分工作,从而将激活显存降低约 N 倍(在切分覆盖的操作范围内)。
在并行体系中的位置
现代大规模训练通常采用 4D 并行:
| 维度 | 切分对象 | 典型技术 |
|---|---|---|
| 数据并行(DP) | batch 维度 | ZeRO、DDP |
| 张量并行(TP) | 单层内的隐藏维度 | Megatron TP |
| 流水线并行(PP) | 层间切分 | GPipe、PipeDream |
| 序列并行(SP) | 序列(token)维度 | Megatron-SP / Ring Attention / Ulysses |
SP 与前三种正交,可以组合使用。实际训练中(如 GPT-3 175B 级别)通常 TP 在节点内(依赖 NVLink 高带宽),SP 与 TP 耦合或跨节点使用。
15 分钟专家深入
核心问题:TP “缝隙”中的冗余计算
Megatron-LM 的张量并行将注意力层和 MLP 层的隐藏维度切分到 N 张卡上,但层间的 LayerNorm、残差连接、Dropout 等操作不在 TP 切分范围内。在原始实现中,这些操作每张卡都持有完整的 [S, d] 张量(S 为序列长度,d 为隐藏维度),所有卡做完全相同的冗余计算。
当 S 很大时,这块冗余激活是显存大户。
Megatron-SP 的关键设计
Megatron-LM v2 的方案(NVIDIA,Korthikanti 等人,2022 年):
核心思路:在非 TP 区域(LayerNorm、残差、Dropout),沿序列维度切分,每张卡只持有 [S/N, d];进入 TP 区域(注意力、MLP)时再沿隐藏维度切分,每张卡持有 [S, d/N]。
通信机制的巧妙之处:原始 Megatron TP 在 TP 区域出口需要一次 AllReduce(合并各卡的隐藏维度部分结果)。Megatron-SP 将这个 AllReduce 拆解为:
- ReduceScatter:合并隐藏维度分量(reduce)的同时,沿序列维度分发(scatter),输出
[S/N, d] - ****在下一个 TP 区域入口用 AllGather 沿序列维度收集聚合,恢复
[S, d]后再做 TP 切分
关键结论:总通信量与纯 TP 完全相同(AllReduce = ReduceScatter + AllGather,通信量都是 2×S×d),但显著降低了非 TP 区域的激活显存。这是一个”免费午餐”——不增加通信成本即可减少显存。
Ring Attention 的不同思路
Ring Attention(Liu 等人,2023 年,UC Berkeley)采用完全不同的方法:
设备 0: 持有 Q0 K0 V0 ←── 环形传递 KV 块 ──→
设备 1: 持有 Q1 K1 V1 ←── 环形传递 KV 块 ──→
设备 2: 持有 Q2 K2 V2 ←── 环形传递 KV 块 ──→
设备 3: 持有 Q3 K3 V3 ←── 环形传递 KV 块 ──→
每个设备持有自己那一段序列的 Q、K、V。注意力计算需要每个 Q 段与所有 K、V 段做点积。Ring Attention 的做法是:
- 每个设备先用本地 KV 块计算注意力(分块方式,类似 FlashAttention 的在线 softmax)
- 同时将当前 KV 块沿环形拓扑传给下一台设备
- 接收上一台设备传来的 KV 块,继续计算
- 重复 N-1 轮,直到每个设备都看到了所有 KV 块
核心优势:通信与计算重叠——计算当前块的注意力时,同步发送/接收下一个 KV 块。只要单次通信时间 ≤ 单块计算时间(在大部分合理配置下成立),通信被完全隐藏。
上下文长度扩展性:Ring Attention 理论上可将支持的上下文长度线性扩展为设备数 × 单设备上下文长度。
DeepSpeed Ulysses 的折中路线
DeepSpeed Ulysses(Jacobs 等人,2023 年,Microsoft)采用 AllToAll 通信实现序列切分到注意力头切分的转置:
AllToAll 注意力计算 AllToAll
序列并行布局 ──────→ 头并行布局 ──────→ 注意力输出 ──────→ 序列并行布局
[S/N, H, d_h] [S, H/N, d_h] [S/N, H, d_h]
每层注意力需要两次 AllToAll:先从序列切分布局转为头切分布局(每个设备看到完整序列但只处理部分头),计算注意力后再转回来。
与 Ring Attention 的取舍:
- Ring Attention 通信量小但轮次多(N-1 轮),适合带宽受限场景
- Ulysses 通信轮次少(2 次 AllToAll)但单次通信量大,适合高带宽互连
技术原理(深入机制)
一、Megatron-SP 在 Transformer Block 中的工作流
以一个标准 Pre-Norm Transformer Block 为例,TP 度 = 4:
┌─────────────────────────────────────────────────────────┐
│ 非 TP 区域(SP 域) │
│ 每张卡持有: [S/4, d] │
│ │
│ ┌─────────┐ ┌─────────┐ │
│ │ LayerNorm│→ │ Dropout │ 序列维度各卡独立处理 │
│ └─────────┘ └─────────┘ │
└──────────────────────┬──────────────────────────────────┘
│ AllGather(序列维度聚合)
▼
┌─────────────────────────────────────────────────────────┐
│ TP 区域 │
│ 每张卡持有: [S, d/4] │
│ │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ │
│ │QKV Linear│→ │Self-Attn │→ │Out Linear│ │
│ │(列切分) │ │(头切分) │ │(行切分) │ │
│ └──────────┘ └───────────┘ └──────────┘ │
└──────────────────────┬──────────────────────────────────┘
│ ReduceScatter(隐藏维度归约 + 序列维度分散)
▼
┌─────────────────────────────────────────────────────────┐
│ 非 TP 区域(SP 域) │
│ 每张卡持有: [S/4, d] │
│ │
│ ┌───────────┐ ┌─────────┐ │
│ │ 残差加法 │→ │ LayerNorm│ ...继续下一段 │
│ └───────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────┘
通信操作详解:
AllReduce 分解为 ReduceScatter + AllGather:
ReduceScatter 示例 (N=4):
设备0: [S, d/4] ──┐
设备1: [S, d/4] ──┼─→ reduce → [S, d] → scatter S → 每设备得 [S/4, d]
设备2: [S, d/4] ──┤ 设备i 获得第 i 段
设备3: [S, d/4] ──┘
AllGather 示例 (N=4):
设备0: [S/4, d] ──┐
设备1: [S/4, d] ──┼─→ gather → 每设备得 [S, d]
设备2: [S/4, d] ──┤
设备3: [S/4, d] ──┘
通信量分析:
| 操作 | 每设备通信量 |
|---|---|
| 原始 AllReduce | 2×(S×d/N) |
| SP ReduceScatter | (S×d/N) |
| SP AllGather | (S×d/N) |
| 总计 | 2×(S×d/N),与原始相同 |
二、Ring Attention 的块级在线 Softmax
Ring Attention 需要在分块条件下正确计算 softmax,核心依赖在线 softmax 技术(与 FlashAttention 同源):
对于 Q_j 与第 i 个 KV 块的注意力计算:
m_j^(i) = max(m_j^(i-1), rowmax(S_ji)) # 运行最大值
P_ji = exp(S_ji - m_j^(i)) # 局部 softmax 分子(指数化)
l_j^(i) = exp(m_j^(i-1) - m_j^(i)) · l_j^(i-1) + rowsum(P_ji) # 运行分母
O_j^(i) = diag(exp(m_j^(i-1) - m_j^(i)))^(-1) · O_j^(i-1) + P_ji · V_i
再对 O_j^(i) 做归一化
其中 S_ji = Q_j · K_i^T / sqrt(d_k)
这保证了即使 KV 被分成 N 块逐一处理,最终结果与全量注意力数学等价(在浮点精度范围内)。
三、Ulysses 的 AllToAll 转置
AllToAll 通信示意 (N=4 设备, 4 个注意力头):
序列并行布局:
设备0: tokens[0:S/4], heads[0:4] ← 每设备全头、部分序列
设备1: tokens[S/4:S/2],heads[0:4]
设备2: tokens[S/2:3S/4],heads[0:4]
设备3: tokens[3S/4:S], heads[0:4]
↓ AllToAll 转置
头并行布局:
设备0: tokens[0:S], heads[0:1] ← 每设备全序列、部分头
设备1: tokens[0:S], heads[1:2]
设备2: tokens[0:S], heads[2:3]
设备3: tokens[0:S], heads[3:4]
每个设备在头并行布局下独立计算注意力(对完整序列),然后通过反向 AllToAll 回到序列并行布局。
技术演进史
| 时间 | 事件 | 意义 |
|---|---|---|
| 2019-2020 | Megatron-LM v1(Shoeybi 等人,NVIDIA) | 提出大规模 TP + PP,非 TP 区域全量冗余 |
| ~2021 | DeepSpeed 序列并行早期探索 | Microsoft 在 DeepSpeed 框架中尝试序列维度切分 |
| 2022 | Megatron-LM v2(Korthikanti 等人,NVIDIA) | 将 SP 与 TP 耦合,通信量零增加实现激活显存节省;配套选择性激活重计算 |
| 2023 | Ring Attention(Liu 等人,UC Berkeley) | 环形通信 + 在线 softmax,线性扩展上下文长度 |
| 2023 | DeepSpeed Ulysses(Jacobs 等人,Microsoft) | AllToAll 路线,系统级优化长序列训练 |
| 2024+ | 多种 SP 方法组合与工程化 | SP 与 FlashAttention、Context Parallelism 等融合,走向生产级 |
注:以上时间为论文公开/发布的大致时间,非精确日期。
技术路线对比
| 维度 | Megatron-SP(耦合 TP) | Ring Attention | DeepSpeed Ulysses |
|---|---|---|---|
| 切分方式 | 非 TP 区域切序列,TP 区域切隐藏维度 | 全区域切序列 | 全区域切序列,注意力内通过 AllToAll 转为头并行 |
| 通信模式 | ReduceScatter + AllGather | Ring 环形传递 KV 块 | AllToAll(每层两次) |
| 额外通信量 | 零(替换 AllReduce,量相同) | 有,但可与计算重叠 | 有,AllToAll 通信量与序列长度×隐藏维度成正比 |
| 上下文扩展能力 | 受限于 TP 度(通常 ≤ 节点内 GPU 数) | 理论上线性扩展(设备数 × 单设备上下文) | 取决于设备数和 AllToAll 效率 |
| 通信-计算重叠 | 不需要(无额外通信) | 是,核心优势 | 部分可重叠 |
| 对互连带宽要求 | 无额外要求(已含在 TP 通信中) | 中等(带宽 ≥ 计算/通信比阈值即隐藏) | 较高(AllToAll 为 all-to-all 通信模式) |
| 实现复杂度 | 低(Megatron-LM 已集成) | 中高(需块级 softmax、掩码处理) | 中(DeepSpeed 已集成) |
| 与 TP 的关系 | 必须耦合使用 | 独立,可与任意并行组合 | 独立,可与任意并行组合 |
| 适用场景 | 节点内训练,已有 TP 部署 | 超长上下文训练,跨节点 | 高带宽互连环境,中长序列 |
⚠️ 以上对比为定性分析,实际性能取决于具体模型规模、序列长度、硬件拓扑和框架实现,无通用量化数据可引用。
上下游
上游依赖
| 环节 | 具体关系 |
|---|---|
| GPU 算力 | SP 本身不改变计算量(FLOPs 不变),但改变计算分布;需要足够的并行设备数 |
| 互连带宽 | Ring Attention 和 Ulysses 对互连带宽敏感;NVLink/NVSwitch 带宽越高,SP 效率越好 |
| 显存 HBM | SP 的直接目的是降低激活显存,对 HBM 容量需求的降低幅度与 SP 度正相关 |
| FlashAttention | Ring Attention 的块级 softmax 与 FlashAttention 技术同源;FlashAttention 本身也降低了单卡内注意力显存 |
| 深度学习框架 | Megatron-LM、DeepSpeed、PyTorch FSDP 等框架提供 SP 实现;框架成熟度决定易用性 |
下游影响
| 环节 | 具体影响 |
|---|---|
| 长上下文模型训练 | SP 使 128K+ 甚至更长上下文的全量训练成为可能(非靠位置编码外推) |
| 推理长序列处理 | 训练时的长上下文能力直接决定推理时可服务的最大上下文长度 |
| 模型架构选择 | SP 的可用性使研究者在设计架构时不必过度顾虑序列长度限制 |
| 训练吞吐 | SP 在降低显存的同时,可能允许更大 batch size,间接提升 MFU |
关键指标
| 指标 | 说明 | 典型表现(定性) |
|---|---|---|
| SP 度(sp_size) | 序列被切分的份数 | Megatron-SP 通常 = TP 度;Ring/Ulysses 灵活可调 |
| 激活显存节省比例 | SP 覆盖的操作区域的激活显存降低 | Megatron-SP: 非 TP 区域激活降低约 sp_size 倍;Ring/Ulysses: 注意力相关激活降低约 sp_size 倍 |
| 通信额外开销 | 相比无 SP 的纯 TP 方案 | Megatron-SP: ~零;Ring: 可隐藏;Ulysses: 有,取决于互连 |
| 等效最大上下文长度 | 训练中实际支持的最大序列长度 | Ring Attention: 理论上 ≈ 单卡上下文 × sp_size;实际受显存和通信限制 |
| 计算效率(MFU) | 模型 FLOPs 利用率 | SP 本身不影响计算量,但可能通过减少重计算需求间接提升 MFU |
具体数值因模型规模、硬件配置、框架版本差异很大,未找到统一的基准对比数据,不编造具体数字。
供需与市场数据
为什么 SP 现在重要
需求端:
- 大模型上下文窗口竞赛:主流模型从 4K → 32K → 128K → 更长,训练时必须在序列维度上并行
- 多模态长视频/文档理解:输入 token 数激增
- Agent/长程推理场景:需要更长的工作记忆
供给端(硬件瓶颈):
- 单卡 HBM 容量增长速度远落后于模型规模和序列长度增长速度
- SP 是用通信换显存的策略,对互连带宽提出更高要求
- 节点内 NVLink 带宽持续提升(NVLink 4→5),利好 SP 实际效率
市场关联
| 影响方向 | 分析 |
|---|---|
| 高带宽互连需求 | SP 通信量增大 → NVLink/NVSwitch、InfiniBand 需求强化 |
| GPU 单卡显存压力缓解 | SP 降低激活显存 → 部分场景可用更少卡训练同等模型 |
| 长上下文推理市场 | 训练侧 SP 能力 → 推理侧可服务更长输入 → 支撑文档分析、代码理解等高价值场景 |
无独立的”序列并行”市场规模数据,它嵌入在大模型训练基础设施的投入中。
代表公司与技术映射
| 公司/机构 | 角色 | 具体贡献 |
|---|---|---|
| NVIDIA | 核心推动者 | Megatron-LM 系列(Megatron-SP 与 TP 耦合方案);CUDA 通信原语支持 |
| Microsoft | 框架提供者 | DeepSpeed Ulysses;DeepSpeed 框架中的 SP 支持 |
| UC Berkeley | 算法创新者 | Ring Attention 论文提出 |
| Google DeepMind | 大规模实践者 | 内部长序列训练方案(具体实现未充分公开) |
| Meta | 框架与实践 | PyTorch DTensor / FSDP 中的序列切分支持;内部 LLaMA 长上下文训练 |
| Anthropic / OpenAI | 需求方 | 超长上下文产品功能依赖 SP 等长序列训练技术 |
注:各家内部的并行策略细节通常未充分公开,上述为基于公开论文、开源代码和行业报道的推断。
投资逻辑
核心推理链
大模型上下文长度持续增长(4K → 128K+)
↓
单卡显存无法容纳长序列的完整激活值
↓
序列并行成为训练必需品
↓
SP 增加通信需求 → 高带宽互连成为关键基础设施
↓
利好: NVLink/NVSwitch 生态(NVIDIA)、高速网络设备(InfiniBand/RoCE 供应商)
具体关注点
- NVIDIA 的生态锁定:Megatron-SP 与 TP 的耦合设计深度绑定 NVIDIA 的 NVLink 通信拓扑,强化了其在大规模训练中的不可替代性
- 互连带宽的长期增长:每代 GPU 的互连带宽提升都是 SP 效率提升的前提,关注 NVLink 代际升级节奏
- 开源框架竞争:Megatron-LM vs. DeepSpeed vs. PyTorch 原生方案之间的生态竞争,影响下游客户的硬件选择
- 超长上下文的落地验证:如果 128K+ 上下文在商业应用中被证明有显著价值,SP 相关技术的投入将加速
风险因素
- 若模型架构本身演进到不依赖超长注意力(如线性注意力、状态空间模型等),SP 的重要性可能降低
- 单卡 HBM 容量大幅提升(如 HBM4 代际跃升)可能部分缓解 SP 需求
- 推理侧的长序列处理可能采用与训练不同的优化路径
常见误读纠偏
❌ 误读 1:“Megatron-SP 会增加通信量”
正解:Megatron-SP 用 ReduceScatter + AllGather 替换了原有的 AllReduce,总通信量完全相同。这是一个零额外通信成本的优化。需要注意的是,这是特指 Megatron-SP(耦合 TP 的方案),Ring Attention 和 Ulysses 确实引入了额外通信。
❌ 误读 2:“序列并行和数据并行是一回事”
正解:数据并行(DP)沿 batch 维度切分,每张卡处理不同的数据样本但相同的完整模型;序列并行(SP)沿序列维度切分,每张卡处理同一样本的不同 token 段。两者正交,可以同时使用。DP 不能降低单样本的激活显存,SP 可以。
❌ 误读 3:“Ring Attention 能实现无限长上下文”
正解:Ring Attention 将上下文长度线性扩展到设备数 × 单设备上下文,但”线性扩展”≠“无限”。实际受限于:(1) 可用设备总数;(2) 通信-计算重叠的前提条件(通信延迟 ≤ 计算时间);(3) 超长序列的数据获取和训练稳定性。
❌ 误读 4:“SP 减少了总计算量(FLOPs)”
正解:SP 不改变总 FLOPs——所有 token 对之间的注意力计算仍然需要完成,只是分布在不同设备上。SP 的核心收益是显存节省和上下文长度扩展,不是计算加速。不过,显存节省可能间接允许更大 batch size,从而提升硬件利用率(MFU)。
学习路径
入门(建立直觉)
- 理解 Transformer 的前向/反向中,哪些张量随序列长度线性增长(激活值)
- 了解 Megatron-LM 的张量并行(TP)原理——知道”哪些操作被 TP 切分了,哪些没有”
- 读懂 AllReduce = ReduceScatter + AllGather 的分解
进阶(理解机制)
- 阅读 Megatron-LM v2 论文:Reducing Activation Recomputation in Large Transformer Models(Korthikanti 等人,2022)
- 阅读 Ring Attention 论文:Ring Attention with Blockwise Transformers for Near-Infinite Context(Liu 等人,2023)
- 阅读 DeepSpeed Ulysses 论文
- 对比三种方案的通信模式和适用场景
深入(工程实践)
- 阅读 Megatron-LM 开源代码中
sequence_parallel相关实现 - 理解 FlashAttention 的在线 softmax 机制(Ring Attention 的基础)
- 在小规模集群上实际跑通不同 SP 方案,观察显存和吞吐变化
- 研究 SP 与 FlashAttention、Context Parallelism 的融合设计
推荐资源
- NVIDIA Megatron-LM GitHub 仓库(有详细注释和文档)
- Flash Attention 论文(Dao 等人)——理解在线 softmax
- Lillian Weng 的博客关于并行训练的综述文章
- 各论文的实验部分——对比不同并行策略的实际效果
一句话总结
序列并行通过沿 token 维度切分计算和存储,解决了长序列训练的激活显存瓶颈——Megatron-SP 与 TP 耦合实现零额外通信的显存节省,Ring Attention 和 Ulysses 则从不同角度实现了序列长度的弹性扩展,三者共同构成了当前大模型长上下文训练的并行基础设施。
延伸阅读与来源
核心论文
- Korthikanti, V., et al. (2022). Reducing Activation Recomputation in Large Transformer Models. — Megatron-SP 方案
- Liu, H., et al. (2023). Ring Attention with Blockwise Transformers for Near-Infinite Context. — Ring Attention
- Jacobs, S. A., et al. (2023). DeepSpeed Ulysses: System Optimizations for Enabling Training of Extreme Long Sequence Transformer Models. — Ulysses
- Shoeybi, M., et al. (2020). Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism. — Megatron-LM 基础
补充参考
- Dao, T., et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. — 在线 softmax 技术基础
- Rajbhandari, S., et al. (2020). ZeRO: Memory Optimizations Toward Training Trillion Parameter Models. — 大模型显存优化全景
- NVIDIA Megatron-LM GitHub:
https://github.com/NVIDIA/Megatron-LM— 工程实现参考 - Microsoft DeepSpeed GitHub:
https://github.com/microsoft/DeepSpeed— Ulysses 实现参考
来源声明
本文中涉及的具体论文归属基于上述论文的公开版本;硬件参数和厂商信息如无特殊标注则为公开已知信息;无量化基准对比数据来源的部分已标注为定性分析。文中未引用任何付费行业报告的独家数据。
准确性声明:本页技术内容基于公开论文和开源代码中的已知信息撰写。涉及具体数字(通信量公式、张量形状推导)时均有明确推导依据;涉及厂商内部实现细节时标注”未充分公开”。如您发现事实性错误,欢迎指正。