模型層 開放閱讀

上下文並行

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 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型