总览
本章节范围:序列并行 (Sequence Parallelism, SP) 的命名谱系、Megatron-SP 的精确机制(f/g 算子、激活显存公式)与 AG/RS×GEMM 的 overlap 内核实现。 目标读者:评估 TP+SP 部署配置、为序列并行通信建模的工程师。
范围与边界 (Scope)
- 包含:
- 「sequence parallelism」一词的命名谱系与归类(本文)
- SP 与 TP / CP 的本质区别(本文)
- SP 在推理场景的剩余价值与框架现状(本文)
- Megatron-SP 机制:f/g 共轭算子、通信插入位置、激活显存公式、backward 额外通信、Dropout RNG → 4.2 Megatron-SP 机制
- AG/RS 与 GEMM 的 overlap 内核:TE Userbuffers / ByteDance Flux / PyTorch async-TP → 4.3 通信 overlap 实现
- 不包含:
- Ring Attention / Ulysses / LASP 的机制与通信量推导 → 见 7.1 总览
- TP 本身的权重切分与 AllReduce 分析 → 见 3 张量并行 (TP)
- 跨并行策略的 overlap 通用原理(DualPipe、EP overlap 等) → 见 9.2 计算通信 Overlap
名词定义
本章节所有子文档默认这些名词已定义,各子文档只补充本文新引入的名词。
| 名词 | 定义 |
|---|---|
| Megatron-SP | Korthikanti et al. 2022 提出的序列并行:在 TP 组内把 AllReduce 拆为 AllGather + ReduceScatter,将 LayerNorm / Dropout 区段的激活沿序列维度分片;必须与 TP 联用,并行度等于 TP 度。本章及本项目 docs 中「SP」默认指它 |
| RSA (Ring Self-Attention) | Colossal-AI 2021 提出的序列并行:K/V 在卡间环形传递完成 attention,是 Ring Attention / CP 的前身 |
| TP-sp / SP-Ulysses / SP-Ring | USP 论文对三类「序列并行」的统一命名:TP-sp = Megatron-SP(依附 TP);SP-Ulysses = all-to-all 重排 head;SP-Ring = K/V 环传。后两类可独立使用 |
| SP region | transformer 层内激活按序列维度分片的区段(LayerNorm / Dropout / residual add 所在),张量 shape 为 $[b, s/t, h]$ |
| TP region | 激活为完整序列、按 TP 方式(head / 列 / 行)切分的区段(attention / MLP 的 GEMM 所在) |
| Selective activation recomputation | 只重算 attention 内 $O(as^2)$ 类激活、保留 GEMM 输入激活的重计算策略,与 SP 组合使用 |
| $t$ | TP 并行度(= SP 并行度),沿用 Megatron 论文符号 |
@tbl-par-spov-glossary 序列并行章节共享名词定义
「sequence parallelism」为什么有四种含义?
至少四个机制完全不同的工作都自称 sequence parallelism,NVIDIA 又把其中 ring 类另行命名为 context parallelism,造成今天的术语分裂[1]。
| 时间 | 工作 | 自称 | 机制一句话 | 今天归类 |
|---|---|---|---|---|
| 2021-05 | Colossal-AI (RSA)[2] | Sequence Parallelism | K/V 环形传递,序列切到多卡做 attention | 机制属 CP,历史名 SP |
| 2022-05 | Megatron-SP[3] | Sequence Parallelism | TP 组内 AG+RS 分片 LayerNorm/Dropout 激活 | SP(NVIDIA 官方保留此名) |
| 2023-09 | DeepSpeed-Ulysses[4] | Sequence Parallelism | all-to-all 重排 head/seq,每卡算完整 head | CP 实现(部分语境仍称 SP) |
| 2023-10 | Ring Attention[5] | (未用 SP/CP 标签) | blockwise K/V 环传 + online softmax | CP(NVIDIA 将其归入 CP) |
| 2024-04 | LASP[6] | Sequence Parallelism | 线性 attention 传固定状态矩阵 | 线性注意力 SP,见 CP 章 |
| 2024-05 | USP[1] | Unified Sequence Parallelism | 统一 Ulysses + Ring 为混合框架 | CP 混合(USP 自称 SP 大类) |
@tbl-par-spov-timeline 「sequence parallelism」命名时间线
命名分裂的过程分三步:
- 2021 年词源在 ring 类:Colossal-AI 最早以 sequence parallelism 为题,机制是切 attention 的 RSA——按今天的分类是 CP。
- 2022 年 Megatron 用同名指另一件事:Korthikanti et al. 把「TP 组内 AG+RS 激活分片」也叫 sequence parallelism,机制与 RSA 无关。
- 2023-2024 年 NVIDIA 锁定命名:NeMo / Megatron-Core 把 sequence parallelism 留给 Korthikanti 方案(开关
sequence_parallel),把覆盖全部层的 ring 类序列切分另起名 context parallelism(开关context_parallel_size),两个开关独立可叠加[7]。推理框架(vLLM / TensorRT-LLM)跟随这套命名。学术界(USP / LASP / DeepSpeed)则继续把所有序列维切分统称 SP。
本项目 docs 采用 NVIDIA 生态命名:SP = Megatron-SP(本章),ring / Ulysses / 线性注意力序列并行 = CP(07-上下文并行)。读论文时先核对作者属于哪个命名体系,再对照本表归类。
SP 与 TP / CP 的本质区别是什么?
SP 是 TP 的伴生优化,不是独立并行维度:它不引入新的卡数,不切 attention 计算,只改变 TP 组内非 GEMM 区段的激活布局与通信原语[3]。
| 维度 | TP | Megatron-SP | CP |
|---|---|---|---|
| 是否独立并行维度 | 是 | 否(并行度被绑死 = TP 度,tensor_model_parallel_size = 1 时 Megatron-LM 直接报错) | 是(与 TP/DP/EP 正交) |
| 切分对象 | 权重(head / 列 / 行) | LayerNorm/Dropout 区段的激活(序列维) | attention 的 K/V 与全部层激活(序列维) |
| attention 计算 | 按 head 并行,每卡看完整序列 | 不变(仍是 TP 的 head 并行,AG 后完整序列) | 被切分:每卡只算 $S/N_{\text{CP}}$ 个 token 的 Q |
| 关键通信 | AllReduce | AllGather + ReduceScatter | K/V 环传 (Ring) 或 all-to-all (Ulysses) |
| 解决的问题 | 单卡装不下权重 | TP 激活冗余 + AllReduce 不可 overlap | 单卡装不下长序列 activation / KV cache |
| 增加总卡数 | 是 | 否 | 是 |
@tbl-par-spov-vs-tp-cp SP 与 TP / CP 的本质区别
「SP 和 CP 都切序列 token」的表述容易误导成同类技术的两种实现,实际差异在 attention:SP 在进 attention 前用 AllGather 恢复完整序列,attention 本身还是 TP 的 head 并行;CP 让每卡只持有序列的一段,attention 必须跨卡解决 Q 对远端 K/V 的依赖。机制细节见 4.2 Megatron-SP 机制 与 CP 章 7.2 Ring Attention。
SP 在推理里还剩什么价值?
训练侧 SP 的收益在推理 prefill 只剩激活分片与 overlap 两项的残余,decode 阶段完全退化[8]。
| 训练侧收益 | 推理 prefill | 推理 decode |
|---|---|---|
| Dropout mask 分片存储 | 无(推理无 Dropout) | 无 |
| 反向传播激活分片存储 | 无(推理无反向) | 无 |
| LayerNorm 区段激活分片 | 保留(但激活占总显存比例远低于训练) | 无意义($s=1$ 无可切分) |
| AG+RS 可与 GEMM overlap | 保留(长 prefill 有收益) | 反而更慢(消息太小,拆开多付启动开销)[9] |
@tbl-par-spov-inference SP 收益在推理两阶段的退化
decode 每步只处理 1 个新 token,序列维度无可切分;TokenWeave 实测推理 generation 阶段把 AllReduce 拆成 RS+AG 做 overlap 比直接 AllReduce 更慢[9]。推理框架对 TP 通信的优化走了另一条路——把 AllReduce 本身做快(NVLS multicast 的 MultiShot AllReduce,约 3× 于 ring 实现)或与 residual+LayerNorm 融合(reduce_fusion),而不是 SP 式激活切分[10]。
| 框架 | Megatron-SP 式 AG+RS | 状态 | 备注 |
|---|---|---|---|
| vLLM | sequence_parallelism torch.compile pass(AllReduce → RS+AG,AG 延迟到 LayerNorm 后) | 已实现,默认关闭 | dynamic shape 兼容问题,等 PyTorch 2.9 后重新启用[11] |
| TensorRT-LLM | 无显式 SP 开关 | — | 走 reduce_fusion + MultiShot AllReduce 路线[10] |
| SGLang | TP-SP 支持 (PR #12820) | WIP(2026 Q1 roadmap) | 未发布[12] |
@tbl-par-spov-frameworks 推理框架对 Megatron-SP 的支持现状(2026-06)
长上下文 (128K+) prefill 的序列切分需求由 CP 承担而不是 SP:CP 直接分摊 KV cache 与全层激活、支持变长序列、decode 阶段有 pass-Q 形态可用,Meta 的百万 token 推理实践与 vLLM / SGLang 的活跃开发方向都在 CP[13]。
子文档索引 (Index)
- 4.2 Megatron-SP 机制 — f/g 共轭算子、通信插入位置、激活显存三档公式、backward 额外 AllGather、Dropout RNG、工程约束
- 4.3 通信 overlap 实现 — AG/RS×GEMM 的内核级 overlap:TE Userbuffers(bulk / pipelined)、ByteDance Flux(tile 级融合)、PyTorch async-TP(SymmetricMemory)、代价与适用边界
参考资料
- Fang & Zhao, USP: A Unified Sequence Parallelism Approach for Long Context Generative AI, arXiv:2405.07719, 2024. https://arxiv.org/abs/2405.07719
- Li et al., Sequence Parallelism: Long Sequence Training from System Perspective, arXiv:2105.13120, 2021. https://arxiv.org/abs/2105.13120
- Korthikanti et al., Reducing Activation Recomputation in Large Transformer Models, arXiv:2205.05198, 2022. https://arxiv.org/abs/2205.05198
- Jacobs et al., DeepSpeed Ulysses: System Optimizations for Enabling Training of Extreme Long Sequence Transformer Models, arXiv:2309.14509, 2023. https://arxiv.org/abs/2309.14509
- Liu et al., Ring Attention with Blockwise Transformers for Near-Infinite Context, arXiv:2310.01889, 2023. https://arxiv.org/abs/2310.01889
- Sun et al., Linear Attention Sequence Parallelism, arXiv:2404.02882, 2024. https://arxiv.org/abs/2404.02882
- NVIDIA NeMo Framework, Parallelisms 文档(区分
sequence_parallel与context_parallel_size两个独立开关). https://docs.nvidia.com/nemo-framework/user-guide/25.02/nemotoolkit/features/parallelisms.html - Insu Jang, Tensor Parallelism and Sequence Parallelism: Detailed Analysis, 2024. https://insujang.github.io/2024-01-11/tensor-parallelism-and-sequence-parallelism-detailed-analysis/
- TokenWeave: Efficient Compute-Communication Overlap for Distributed LLM Inference, arXiv:2505.11329, 2025. https://arxiv.org/abs/2505.11329
- NVIDIA, 3x Faster AllReduce with NVSwitch and TensorRT-LLM MultiShot, 2024. https://developer.nvidia.com/blog/3x-faster-allreduce-with-nvswitch-and-tensorrt-llm-multishot/
- vLLM issue #25277, Sequence Parallelism and Async TP disabled by default. https://github.com/vllm-project/vllm/issues/25277
- SGLang, Development Roadmap 2026 Q1, issue #12780. https://github.com/sgl-project/sglang/issues/12780
- Meta, Context Parallelism for Scalable Million-Token Inference, arXiv:2411.01783, 2024. https://arxiv.org/abs/2411.01783