跳到主要内容

总览

本章节范围:上下文并行 (Context Parallelism, CP) 的算法与通信——把单条序列沿 token 维度切到多卡,解决长上下文 (128K-1M+) 下单卡装不下 activation 与 KV cache 的问题。 目标读者:设计或评估长上下文并行部署的工程师。

范围与边界 (Scope)

  • 包含:CP 为何长上下文必备、Ring Attention、DeepSpeed-Ulysses、Ring/Ulysses 选型与混合、decode 阶段 CP (pass-Q)、异构 attention 下的 CP 通信。
  • 不包含:

名词定义

本章节所有子文档默认这些名词已定义,各子文档只补充本文新引入的名词。

名词定义
上下文并行 (CP, Context Parallelism)沿序列 token 维度把单条序列切到多卡,每卡持 $S/N$ 个 token 的中间状态;与 TP/DP/EP 正交的独立维度
Ring AttentionCP 的一种实现:K/V 块在卡间环形传递,配合 online softmax 增量计算,每卡只持 $S/N$ 个 K/V
DeepSpeed-UlyssesCP 的另一种实现:attention 前后各一次 All-to-All,把张量在「序列切分」与「head 切分」间转置
Online softmax不保留全部 logits、增量更新 running max/sum 的 softmax,支持 K/V 分块流式计算
Pass-KVRing Attention 在 prefill 的形态:K/V 块在环上轮转 (数据量大)
Pass-QRing Attention 在 decode 的形态:query 在环上传递 (数据量小),各卡用本地 KV 段算 partial attention
Causal 配平causal mask 下 Ring 各卡负载不均时,用 balanced chunk split / striped 重排序列块拉平负载
USP (Unified Sequence Parallelism)Ring + Ulysses 的混合:group 内 Ulysses (切 head),group 间 Ring (切序列)
$N_{\text{CP}}$CP 并行度,序列切分到的卡数
Tree AttentionCP 的 decode 实现:跨卡归约从 ring 环传改为树形 AllReduce,只传 online softmax 三量,通信步数 $O(\log N)$
Linear attention SP线性注意力 / SSM 的序列并行:传固定 $d\times d$ 状态矩阵而非 K/V,通信量与序列长无关

@tbl-par-cpov-glossary 上下文并行章节共享名词表

CP 为什么是长上下文的必备并行?

长上下文下单卡存储压力来自 activation 与 KV cache 两块,CP 通过切 token 把两者均摊到多卡

prefill 阶段每层 forward activation 与序列长度线性。隐藏维 $d$、batch 1 时单层约 $S \cdot d \cdot \text{dtype}$:

上下文$d = 7168$, BF16备注
8K0.11 GiB单卡轻松
128K1.75 GiB单卡可装
1M14 GiBH100 80 GiB 只能装 5 层左右,配合 activation checkpoint 仍紧张

@tbl-par-cpov-activation 长上下文下单层 activation 的存储压力

decode 阶段累计 KV cache 与 $S$ 线性。即便有 MLA (Multi-head Latent Attention) / GQA (Grouped-Query Attention) 等压缩,1M context 在 V3 风格模型下仍要数十 GB / 序列。

CP 通过切 token 把这两块压力均摊到 $N_{\text{CP}}$ 张卡,每卡只持 $S / N_{\text{CP}}$ 个 token 的中间状态。CP 主要应对 attention 的跨 rank 全局性:一个 rank 的 query 要看的 K/V 可能分布在其他 rank 上。

注意「KV 按 $N_{\text{CP}}$ 分摊」是 ring / Ulysses 式分布式 KV 的属性,不是所有 CP 实现都成立:DSA 稀疏注意力模型(DeepSeek-V3.2 / GLM-5)的生产 CP 走 AllGather 全量 KV + 每卡全量回写路线,只分摊计算不分摊 KV 内存,容量压力交给 MLA 压缩与 PP 承担,见 7.5 异构 Attention 下的 CP。评估 CP 配置的内存收益时必须先确认实现属于哪一类。

CP 在训练与推理各阶段的角色不同:

CP 与序列并行 (SP) 有什么本质区别?

CP 与 Megatron SP 名字相近,但 SP 不是独立并行维度——它的并行度绑死等于 TP 度、不切 attention 计算本身,CP 才是与 TP/DP/EP 正交的独立维度并真正切分 attention

维度Megatron SPContext Parallelism
是否独立并行维度否(并行度绑死 = TP 度,不增加总卡数)是(与 TP / DP / EP 正交,增加总卡数)
切分对象LayerNorm/Dropout 区段激活(序列维)attention 的 K/V 与全部层激活(序列维)
attention 计算不切:AG 恢复完整序列后仍是 TP 的 head 并行切:每卡只算 $S/N_{\text{CP}}$ 个 token 的 Q
处理 attention 全局性无需处理(每卡看完整序列)必须解决 attention 跨 rank 的 all-pairs
关键通信AllGather + ReduceScatter(替代 TP AllReduce)Ring Attention 的 K/V 环传递
目的减少 TP 激活冗余 + 把 AllReduce 拆成可 overlap 的 AG+RS把序列摊到多卡,解决单卡装不下长序列 activation/KV
适用上下文长度任意 (主要优化 overlap 与激活显存)长序列 (128K+) 必须

@tbl-par-cpov-vs-sp CP 与 Megatron SP 的对比

SP 的命名谱系、机制公式与 overlap 实现见 4.1 总览

CP 与 PP 比,切的对象一样吗?

CP 与 PP 都能把超长序列摊到多卡,但切的对象不同:CP 切序列 token, PP 切模型层。

维度CPPP
切分对象序列 token模型层
内存效果单层 activation 减小 $N_{\text{CP}}$单 stage 持有的层数减少 $N_{\text{PP}}$
通信模式Ring attention (attention 内部)P2P stage 间传 activation
Bubble有 ($\sim 1/N_{\text{PP}}$)
适合场景长序列深模型

@tbl-par-cpov-vs-pp CP 与 PP 的对比

两者可共用:例如 1M context + 60 层模型,CP=8 + PP=4,每 GPU 持 1/8 序列 × 15 层。

CP 与其他并行维度怎么协同?

CP 与 TP / EP / DP / PP 都是正交维度,4D / 5D 混合并行的全局 GPU 数 = DP × PP × TP × CP × EP。每个 GPU 同时承担多重角色:

  • Attention 时使用 CP 通信 (ring 或 all-to-all)
  • Dense GEMM 时使用 TP 通信 (AllReduce 或 AG+RS)
  • MoE 时使用 EP 通信 (all-to-all)
  • 反向梯度同步时使用 DP 通信 (AllReduce)

带宽资源存在竞争:

  • CP 和 TP 通常同时在 attention / MLP 内部,可能竞争同一根 NVLink
  • EP 在 MoE 子层,与 attention 子层时间错开,与 CP 不直接冲突
  • DP 梯度同步在反向最后阶段,与前向 CP 不冲突

调度设计的核心是把 CP 和 TP 通信错峰

CP 与其他并行维度的并发带宽竞争

当 CP 与 TP/EP 同时活跃时,它们共享同一 NVLink 拓扑,带宽竞争直接影响 MFU。业界有三种应对路线:

路线 1: Megatron 互斥 — CP 与 TP overlap 不能同时启用。Yuan et al. (USENIX ATC 2024) 确认 Megatron-LM 在两者共存时直接抛运行时错误。原因:CP 的 ring P2P 与 TP 的 AllReduce 争夺同一 NVLink 带宽和 CUDA stream,同时运行导致严重退化或死锁[1]。实践中:有 CP 时必须禁用 tp_comm_overlap;CP 只可与 DP overlap 安全共存。

路线 2: DeepSeek V3 避 TP — V3 训练刻意不用 TP(H800 NVLink 降至 400 GB/s 后 AllReduce 效率严重下降),改用 EP + DualPipe 双微批次 overlap,实测 all-to-all overlap 达 88.9%[2]。DeepEP V2 用 IB Virtual Lane 把 EP 流量与其他工作负载隔离,SM 使用从 24 降至 4-6[3]。但 V3 训练中 CP 与 EP 并发竞争的公开数据缺失

路线 3: Helix 时间解耦 — Attention 段用 CP/KVP(序列维度切分),FFN 段用 TP/TP×EP,同一 GPU 池零闲置切换。A2A 切换通信量与序列长度无关(仅 ∝ B×H),HOP-B 在 batch 维度 overlap A2A 与 attention 计算,用时间掩盖而非静态资源隔离[^helix]。

经验规则

规则来源适用场景
CP+TP 并发时禁用 TP overlapMegatron-LM 运行时约束Megatron 生态
6-8% SM 可饱和 NVLink 通信带宽TokenWeave (H100 实测)AllReduce with NV-SHARP
节点内 NVLink vs 跨节点 IB ≈ 4:1DeepSeek V3 (H800)EP 通信路由优化
通信时间 < 计算时间时 overlap 收益最大Lagom[4]多维并发 overlap
A2A 切换通信量 ∝ B×H,与序列长度无关Helix[^helix]CP→TP 模式切换

@tbl-par-cpov-bandwidth-rules CP 与其他并行维度带宽竞争的经验规则

对仿真建模,推荐三种并发模式供用户选择:(1) 互斥 — T_total = T_CP + T_TP(保守,无竞争);(2) 错峰 — T_total = max(T_CP, T_TP)(理想,Helix 风格);(3) 竞争 — 用 Lagom 风格的可减带宽模型 $B_{\text{available}} = B_{\text{peak}} - \sum V(NC_k, C_k)$ 建模挤占效应。

主流框架怎么支持 CP?

框架 / 方案CP 实现状态备注
Megatron-LMContext Parallel稳定Ring 改进版 + balanced load split
DeepSpeedUlysses稳定all-to-all 重排 head 维度,适合 head 多 + 全连接
USP / yunchangRing + Ulysses hybrid稳定group 内 Ulysses,group 间 Ring
Meta (生产推理)pass-KV / pass-Q生产prefill 传 KV、decode 传 Q,按 KV miss rate 动态选 (交叉阈值 ~5%)
vLLMDCP (Decode CP) + Helix A2ADCP 已合并,Helix A2A (PR #34883) 已合并PCP (Prefill CP) 活跃开发中,vllm-ascend 后端已支持
SGLangChunked PP + DSA allgather-CP + Helix (TP+CP)DSA prefill CP 生产(V3.2/GLM-5,cp_utils.py),roadmap (#21788) 继续泛化序列切分两模式(zigzag in-seq-split / round-robin-split),AllGather 全量 KV + 每卡全量回写;MLA PCP (#23292) / Qwen3-MoE PCP (#18233) 开发中
DeepSeek V4Round-robin token 分片生产 (2026-04)与 CSA/HCA/SWA 混合注意力深度耦合,非 Ring/Ulysses
Untied UlyssesHeadwise chunkingICML 2026中间 tensor 内存 -87.5%, 5M tokens on 8×H100
NanoCPRequest-level dynamic CParXiv 2026-05吞吐 +3.27×, MoE 通信解耦;详见 09-推理部署模式
Tree Attention (Zyphra)树形 AllReduce decodearXiv 2024-08decode 比 Ring 快 4-8×, exact, JAX 实现
DistFlashAttn / LightSeq动态调度 + 重算感知arXiv 2023-10causal work-stealing, vs Ring 1.67×, 8× 更长序列

@tbl-par-cpov-frameworks 主流框架与方案对 CP 的支持(更新至 2026-06)

子文档索引 (Index)

  • 7.2 Ring Attention — K/V 环传 + online softmax 增量计算、通信量、overlap 条件、causal 配平
  • 7.3 DeepSpeed-Ulysses — all-to-all 重排 head/seq、Ring vs Ulysses 选型、USP 混合
  • 7.4 Decode 阶段 CP — decode 何时需要 CP、pass-Q 通信、Helix 时序流水、业界进展
  • 7.5 异构 Attention 下的 CP — SWA / CSA / HCA / 稀疏 top-k / 块级稀疏 (MoBA) / 线性注意力 (LASP-2/2H) 的 CP 通信原语;V4 round-robin + DSA (V3.2/GLM-5) AllGather-CP 两个生产案例;先传后选 vs 先选后传两路线 tradeoff
  • 7.6 Tree Attention — 树形 AllReduce 替代 ring 环传、三量归约、通信量与序列长解耦、仅 decode

参考资料

  1. Yuan et al., Accelerating the Training of Large Language Models using Efficient Communication Scheduling, USENIX ATC 2024. https://www.usenix.org/system/files/atc24-yuan.pdf
  2. DeepSeek-AI, Insights into DeepSeek-V3: Scaling Challenges and Reflections, arXiv:2505.09343, 2025. https://arxiv.org/abs/2505.09343
  3. DeepSeek-AI, DeepEP: Efficient Expert-Parallel Communication Library, GitHub, 2025. https://github.com/deepseek-ai/DeepEP
  4. Lagom: Unleashing the Power of Communication and Computation Overlap, arXiv:2602.20656, 2026. https://arxiv.org/abs/2602.20656