模型层 开放阅读

上下文并行

Context Parallelism

概念 ID
context-parallelism
更新时间
2026-05-29
来源数量
待补

上下文并行(Context Parallelism, CP)

3 秒看懂

一句话: 把一整条超长文本序列切成多段,分给多张 GPU 各算一块,再通过通信把注意力计算”拼”回来——让单机装不下的超长上下文,在集群上跑起来。

3 分钟产业解释

为什么需要它?

大模型训练/推理面临一个根本矛盾:序列越长,注意力计算量呈 O(n²) 增长,显存占用也线性增长。当上下文窗口从 4K 扩展到 128K、甚至百万级 token 时,单张 GPU 无论算力还是显存都扛不住。

传统的三维并行——张量并行(TP)、流水线并行(PP)、数据并行(DP)——分别切模型的宽度、深度和数据样本维度,但没有切”序列”这个维度。上下文并行(CP)就是补上这第四刀。

核心直觉

把一句话比作一根长面条:

  • TP 是把面条竖着切薄(切模型头/层内维度)
  • PP 是把面条横着一段段切(切模型层)
  • DP 是给不同厨师各发一根面条(不同样本)
  • CP 是把同一根面条切成 N 段,N 个厨师各煮一段,最后把汤底味道对齐(交换注意力所需的 K/V 信息)

谁在用?

  • Meta FAIR:训练 Llama 3 系列长上下文版本时引入 Context Parallelism,是该术语的主要推动者
  • NVIDIA:在 Megatron-Core 框架中集成了 CP 支持,与 TP/PP/DP 组合成四维并行
  • Google DeepMind:TPU Pod 上的长序列训练方案包含类似的序列切分思路(具体实现细节未充分披露)
  • DeepSpeed:提出 Ulysses 方案,属于 CP 的一种通信模式变体

15 分钟专家深入

基本机制

CP 的核心挑战在于:注意力计算天然需要所有 Q 与所有 K/V 的交互。你把序列切开了,每张卡只有一段 Q 和对应的 K/V,但要算完整注意力,就必须拿到其他卡上的 K/V(或等价信息)。

目前主流有两种通信拓扑来解决这个问题:

方案一:Ring Attention(环形注意力)

源自 Liu et al. 2023 的论文 Ring Attention with Blockwise Transformers for Near-Infinite Context

原理示意(4 张 GPU 的环):

GPU0 ──→ GPU1 ──→ GPU2 ──→ GPU3 ──→ GPU0
 (Q0,K0,V0)  (Q1,K1,V1)  (Q2,K2,V2)  (Q3,K3,V3)

每一步:
  - 每张 GPU 用本地 Q 与当前持有的 K/V 块算一个 partial attention
  - 然后把 K/V 块沿环发给下一张 GPU
  - 经过 N-1 步后,每张 GPU 都"见过了"所有 K/V 块

优点: 通信与计算可以流水线重叠——在算当前块注意力的同时,下一块 K/V 已经在路上。带宽需求是点对点(P2P),通信量随并行度线性增长。

缺点: 环上步数 = 并行度 - 1,延迟随 GPU 数线性增加;需要精细的调度来保证计算和通信的 overlap。

方案二:All-to-All(全交换)

DeepSpeed Ulysses 采用的方案,思路是:

步骤 1: All-to-All 通信,把各 GPU 上的 Q/K/V 从"按序列切分"重排为"按注意力头切分"
步骤 2: 每张 GPU 负责若干头的完整序列注意力(此时又回到了 TP 的计算模式)
步骤 3: All-to-All 通信,把结果重排回"按序列切分"

优点: 只需两步 All-to-All,延迟不随并行度线性增长(取决于集合通信拓扑)。

缺点: All-to-All 在大规模跨节点时通信开销可能较大;需要在单次通信中交换更多数据。

因果掩码的特殊处理

在自回归(causal)模型中,每个 token 只能看到它前面的 token。CP 切分后,处于序列前段的 GPU 完全不需要后面 GPU 的 K/V(因果掩码会把它们置零)。利用这个特性,实际通信量可以大幅减少——这是一种”掩码感知”的优化。

具体来说:如果将序列等分为 N 段,GPU i 只需要 GPU 0 到 GPU i 的 K/V(因果方向),因此:

  • GPU 0 不需要任何远端 K/V
  • GPU N-1 需要所有 GPU 的 K/V

这对 ring attention 的调度有显著优化空间——部分环步可以直接跳过或标记为零计算。

与其他并行维度的组合

CP 在实践中几乎从不单独使用,而是嵌入到四维并行中:

总 GPU 数 = TP × PP × DP × CP

典型配置示例(训练 70B 级长上下文模型):
  TP=8(节点内 NVLink 带宽高)
  PP=2(跨节点流水线)
  DP=若干(数据并行组数)
  CP=若干(上下文并行组数)

CP 的通信模式主要是跨节点 P2P(ring)或 All-to-All,对互连带宽的要求低于 TP(TP 需要在前向/反向每层都做 AllReduce),但高于纯 DP。


技术原理

数学基础

给定输入序列长度 $S$,总注意力头数 $H$,head dimension $d$。

标准注意力: \text{Attn}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right) V

其中 Q, K, V \in \mathbb{R}^{S \times H \times d}

CP 切分后(以 $N$ 张 GPU 为例):

每张 GPU $i$ 持有:

  • Q_i \in \mathbb{R}^{(S/N) \times H \times d}
  • K_i \in \mathbb{R}^{(S/N) \times H \times d}
  • V_i \in \mathbb{R}^{(S/N) \times H \times d}

要计算 Q_i 的完整注意力,需要与所有 K_j, V_jj = 0, \ldots, N-1)交互:

\text{Attn}_i = \text{OnlineSoftmax}\left(\frac{Q_i [K_0; K_1; \ldots; K_{N-1}]^T}{\sqrt{d}}\right) [V_0; V_1; \ldots; V_{N-1}]

在线 Softmax(Online/Flash Softmax)

直接拼接所有 K/V 再算 softmax 需要把完整 S \times S 矩阵放在内存里,这正是我们要避免的。实际实现依赖 FlashAttention 的分块 softmax 技巧

算法:Ring Attention + FlashAttention 分块计算

对每张 GPU i:
  初始化: O_i = 0, m_i = -inf, l_i = 0    # 输出、最大值、softmax 分母

  for j = 0 to N-1:    # 遍历环上的 K/V 块(含本地块)

    # 当前持有的 K/V 块为 K_j, V_j

    # 分块计算(内层 FlashAttention 分块循环,此处省略)
    S_ij = Q_i @ K_j^T / sqrt(d)           # (S/N) × (S/N)

    # 因果掩码:如果 j > i,mask 掉无因果关系的部分
    # (具体掩码形状取决于段的相对位置)

    m_ij = rowmax(S_ij)
    P_ij = exp(S_ij - m_ij)
    l_ij = rowsum(P_ij)

    # 在线合并
    m_new = max(m_i, m_ij)
    O_i = O_i * exp(m_i - m_new) + P_ij @ V_j * exp(m_ij - m_new)
    l_i = l_i * exp(m_i - m_new) + l_ij * exp(m_ij - m_new)
    m_i = m_new

    # 环通信:把 K_j, V_j 发给下一张 GPU,同时接收 K_{j+1}, V_{j+1}
    ring_send_recv(K_j, V_j)

  O_i = O_i / l_i    # 最终输出

关键点:

  • 数值稳定:通过维护 running max(m_i)和 running sum(l_i)来实现在线 softmax 合并,避免溢出
  • 显存友好:任意时刻只需持有一个 K/V 块,显存占用为 O(S/N) 而非 O(S)
  • 通信-计算重叠:ring_send_recv 与 P_ij @ V_j 计算可以异步并行

通信量分析

方案通信量(每层前向)通信模式带宽敏感度
Ring AttentionO(S·H·d·(N-1)/N) ≈ O(S·H·d) 累积P2P 点对点中等,可 overlap
All-to-All (Ulysses)2 × O(S·H·d)(重排+逆重排)All-to-All 集合通信较高,单次大块

注:以上为定性量级分析,具体通信字节数取决于实现细节(如是否压缩、是否 FP8 传输等)。

反向传播

CP 的反向传播需要对注意力计算求梯度。由于 softmax 的分块在线计算特性,反向时同样需要遍历环上的 K/V 块。这导致 CP 的反向通信量约为前向的 2-3 倍(需要传回梯度相关的 K/V 块,以及可能的重新计算)。

实践中常结合 梯度检查点(activation checkpointing):前向时只保存少量中间状态,反向时重算部分注意力,以换回显存节省。


技术演进史

时间事件意义
2017Vaswani et al. 提出 Transformer注意力 O(n²) 问题的起点
2021Megatron-LM v2 发布确立 TP+PP+DP 三维并行范式
2022FlashAttention (Dao et al.)分块/tiling 注意力实现 IO-aware 计算,显存从 O(S²) 降至 O(S),为 CP 提供底层算子基础
2023.10Liu et al. 发布 Ring Attention 论文系统性提出环形通信 + 分块注意力组合,实现近无限上下文
2023-2024DeepSpeed 发布 Ulysses提出 All-to-All 通信模式的序列并行方案
2024Meta 在 Llama 3 长上下文训练中采用 Context Parallelism工业级落地验证,CP 成为训练 128K+ 上下文模型的标准并行维度
2024NVIDIA Megatron-Core 集成 CPCP 正式成为四维并行(TP+PP+DP+CP)的一等公民
2024FlashAttention-3 (Hopper 架构优化)与 CP 深度集成,支持 FP8/异步化

注:以上时间线基于公开论文/博客/会议演讲梳理,部分日期为近似。


技术路线对比

维度Ring AttentionAll-to-All (Ulysses)纯 TP 切头
序列切分✅ 切序列✅ 切序列(重排后等价切头)❌ 不切序列
通信模式P2P 环形集合 All-to-AllAllReduce
通信量O(S·H·d) 累积2·O(S·H·d)O(S·H·d) per layer(AllReduce)
通信-计算 overlap✅ 天然支持⚠️ 需要额外调度❌ 同步
支持的并行度上限受环延迟限制(实用中 ≤ 节点数级)受 All-to-All 拓扑限制受 head 数/节点内 NVLink 限制
因果掩码优化✅ 可跳过部分环步⚠️ 需要 mask 无效区域不适用
与 FlashAttention 集成✅ 原生兼容✅ 需要适配
适用场景超长上下文、跨节点中长上下文、高速互连通用
代表实现Meta/NVIDIA Megatron-CoreDeepSpeed UlyssesMegatron-LM TP

注:通信量为每层前向的量级估算,实际取决于实现配置。


上下游

上游依赖

硬件层:
  ├── 高带宽互连(NVLink/NVSwitch 节点内,InfiniBand/RoCE 跨节点)
  ├── 大容量 HBM(存放 K/V 缓存)
  └── 高算力 GPU(Tensor Core 加速矩阵运算)

算子层:
  ├── FlashAttention / FlashAttention-2/3(分块注意力核心算子)
  ├── NCCL(集合通信库,支持 P2P 和 All-to-All)
  └── CUDA Graph / Stream(异步通信-计算 overlap)

框架层:
  ├── Megatron-Core(NVIDIA 官方四维并行)
  ├── DeepSpeed(微软 Ulysses 方案)
  └── PyTorch FSDP2 / DTensor(分布式张量抽象)

下游应用

长上下文训练:
  ├── Llama 3 128K 上下文训练
  ├── 长文档理解 / 代码仓库级理解
  └── 多模态长序列(视频帧 + 文本)

长上下文推理:
  ├── 128K+ 上下文推理服务(vLLM 等推理框架考虑类似思路)
  └── KV Cache 分布式管理

科学计算:
  └── 超长序列 DNA/蛋白质序列建模

关键指标

指标说明典型量级(估算)
CP 并行度切分序列的 GPU 数通常 2-8(受通信开销约束)
序列长度扩展能力相比单卡可支持的最大序列长度线性扩展:CP=N → 支持约 N 倍序列长度
计算效率(MFU)相比无 CP 的模型浮点利用率变化开销约 [估算] 5%-15%,取决于 overlap 质量和互连带宽
通信/计算比通信时间占总计算时间的比例良好 overlap 下 < [估算] 10%;差条件下可 > 30%
显存节省注意力部分显存从 O(S) 降至 O(S/N)对长序列效果显著;但模型参数和优化器状态不减少
跨节点带宽需求Ring 方案每步传递一个 K/V 块块大小 = (S/N) × H × d × dtype_bytes,需与计算时间匹配

注:以上量级为基于算法分析的估算,具体数值取决于模型规模、序列长度、硬件配置和实现优化程度。


供需与市场数据

供给侧

CP 的落地推动了以下硬件/软件需求:

供应环节CP 带来的需求市场影响
GPU 互连CP 对跨节点带宽敏感,推动高速互连需求InfiniBand / RoCE 需求上升(NVIDIA IB 业务受益)
HBM 容量长序列 K/V Cache 需要更多显存HBM 产能紧张(SK Hynix/Samsung/Micron 受益)
网络设备跨节点 CP 需要低延迟网络交换机/网卡需求(Broadcom/NVIDIA networking)
训练框架四维并行增加软件复杂度框架集成价值上升(NVIDIA Megatron-Core 生态锁定)

需求侧

  • 128K+ 上下文已成标配趋势:GPT-4 Turbo (128K)、Claude (200K)、Gemini (1M+)、Llama 3.1 (128K)
  • 长上下文训练不是可选项而是必选项,CP 是实现手段之一
  • 推理侧也在探索类似的序列切分(如 Prefill 阶段的 CP),以支持长上下文低延迟推理

市场数据

  • 长上下文模型训练所需 GPU 集群规模通常在 [厂商未充分披露] 数千至数万卡级别
  • CP 不直接创造独立市场,而是 “卖水人”逻辑——推动高速互连和大容量 HBM 的消耗量增长

注:具体训练集群规模和成本数据属于各厂商机密,上文为行业公开信息推断。


代表公司与资本映射

角色公司/组织CP 相关动作资本映射
框架定义者NVIDIAMegatron-Core 集成 CP 为四维并行一环NVDA(直接受益于生态锁定 + GPU 销售)
框架参与者MicrosoftDeepSpeed Ulysses 方案MSFT(Azure AI 基础设施)
模型训练方MetaLlama 3 长上下文训练使用 CPMETA(开源生态 + 自用训练)
模型训练方GoogleTPU 长序列方案(具体实现未充分披露)GOOGL
互连供应NVIDIA Networking (Mellanox)InfiniBand 为 CP 跨节点通信主力NVDA
互连供应BroadcomRoCE 网卡/交换机AVGO
HBM 供应SK Hynix / Samsung / Micron长序列训练推高 HBM 需求000660.KS / 005930.KS / MU
推理框架vLLM / TensorRT-LLM 等长上下文推理的序列切分优化开源/内部工具

投资逻辑

核心链条

长上下文成为标配
    ↓
训练 128K+ 上下文需要 CP
    ↓
CP 需要:① 大量 GPU  ② 高速互连  ③ 大容量 HBM
    ↓
受益标的:NVDA(GPU+互连) > AVGO(网络) > HBM 三巨头 > 训练云厂商

边际变化判断

判断理由
CP 是训练侧的刚需128K 已成下限,百万级上下文竞赛中 CP 几乎不可替代
CP 推高”单任务 GPU 消耗”同样规模模型,加入 CP 维度意味着需要更多 GPU 来训练同一任务
互连价值占比上升CP 的通信密集特性使得网络带宽成为瓶颈,高速互连的”单价×数量”增长
软件框架护城河加深四维并行的复杂度远超三维,Megatron-Core 的集成优势进一步巩固 NVIDIA 生态
边际递减风险CP 并行度受限于通信延迟,不能无限加卡;极长上下文可能需要算法层面突破(如线性注意力)

风险点

  • 算法替代风险:线性注意力、状态空间模型(Mamba 等)如果在长上下文任务上追平 Transformer 性能,CP 需求可能下降
  • 通信技术突破:如果芯片互连带宽大幅提升(如光学互连),CP 的通信瓶颈消失,其”推高硬件需求”的逻辑减弱
  • 推理侧趋势:推理更多依赖 KV Cache 压缩/稀疏注意力,不一定用 CP,投资逻辑更偏训练侧

常见误读纠偏

误读 1:“Context Parallelism 就是 Megatron-LM 的 Sequence Parallelism”

纠偏: 这是最常见的混淆。两者不同:

Context Parallelism (CP)Megatron-LM Sequence Parallelism (SP)
切什么切注意力计算中的序列维度(Q/K/V 按 sequence split)切 LayerNorm / Dropout 中的序列维度(这些操作在 TP 下未被切分)
解决什么问题超长序列放不下单卡TP 中 LayerNorm 等操作存在冗余计算
通信模式Ring P2P 或 All-to-All与 TP 共用 AllReduce/ReduceScatter
是否互补✅ 可以同时使用✅ 可以同时使用

Megatron-Core 中两者共存:SP 负责非注意力部分的序列维度优化,CP 负责注意力部分的序列切分。将二者混为一谈会导致对通信模式和并行策略的根本性误解。

误读 2:“CP 让任何模型都能无限扩展上下文长度”

纠偏: CP 只解决了注意力计算的算力和显存瓶颈。但长上下文还有其他卡点:

  • 位置编码外推:RoPE 等位置编码在超出训练长度后性能衰退,这不是 CP 能解决的
  • 注意力稀释:即使算力够了,模型在超长上下文中能否有效”注意到”远处信息,取决于架构和训练策略
  • 通信延迟的硬约束:Ring Attention 的延迟随并行度线性增长,存在实际上限

误读 3:“Ring Attention 的通信开销一定小于 All-to-All 方案”

纠偏: 取决于并行度和互连拓扑。Ring 的累积通信量随环长线性增长,当 CP 并行度较大时,每张卡的通信累积量可能超过 All-to-All 的两步通信。特别是在高带宽全连接拓扑(如 NVSwitch 连接的节点内)下,All-to-All 的效率可能更优。方案选择是 “通信模式 × 互连拓扑 × 并行度” 的联合优化问题,没有绝对优劣。


学习路径

入门(1-2 小时)

  1. 阅读 Vaswani et al. Attention Is All You Need 中注意力机制部分(理解 Q/K/V 和 O(n²) 问题)
  2. 阅读 Tri Dao 的 FlashAttention 博客/论文简介(理解分块注意力和 IO-aware 计算)

进阶(3-5 小时)

  1. 精读 Liu et al. Ring Attention with Blockwise Transformers for Near-Infinite Context(2023)—— CP 的理论基础
  2. 阅读 DeepSpeed 团队关于 Ulysses 的博客文章和论文
  3. 阅读 Megatron-Core 文档中关于 CP 的部分

深度(动手实践)

  1. 在 NVIDIA Megatron-Core 代码中找到 CP 相关实现,理解 ContextParallelSequenceParallel 的具体区别
  2. 阅读 FlashAttention-2/3 源码中与 CP 兼容相关的改动
  3. 模拟计算:给定模型大小、序列长度、GPU 数量,推算 CP 的通信量和预期 MFU

推荐资源

  • 论文:Ring Attention (Liu et al., 2023)、FlashAttention (Dao et al., 2022/2023)
  • 代码:NVIDIA/Megatron-LM(GitHub)、microsoft/DeepSpeed(GitHub)
  • 博客:NVIDIA 技术博客关于 Llama 3 训练基础设施的文章、Meta 工程博客关于 Llama 长上下文训练的内容
  • 演讲:GTC/Talks 中关于四维并行策略的 session

一句话总结

上下文并行(CP)是训练超长上下文大模型的第四个并行维度——切序列、换 K/V、拼注意力——它不改变模型架构,但让 Transformer 的注意力计算在集群上实现了序列维度的近线性扩展,是 128K+ 时代训练基础设施的关键拼图。


延伸阅读与来源

来源说明
Liu et al., Ring Attention with Blockwise Transformers for Near-Infinite Context, 2023Ring Attention 理论基础
Jacobs et al., DeepSpeed Ulysses: System Optimizations for Enabling Training of Extreme Long Sequence Transformer Models, 2023All-to-All 方案
Dao et al., FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness, 2022分块注意力算子基础
Dao et al., FlashAttention-2, 2023性能优化版本
NVIDIA Megatron-Core 文档四维并行集成实现
Meta 工程博客(Llama 3 系列)工业级 CP 落地参考
Shoeybi et al., Megatron-LM, 2019/2021TP/PP/DP 三维并行基线,理解 CP 如何补充

注:本页技术细节基于公开论文、框架文档和行业公开信息整理。涉及的具体配置参数和效率数据,凡无明确来源标注的,均为基于算法分析的估算或定性描述,不代表任何厂商的实际实现规格。

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型