序列並行(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 實現參考
來源宣告
本文中涉及的具體論文歸屬基於上述論文的公開版本;硬體引數和廠商資訊如無特殊標註則為公開已知資訊;無量化基準對比資料來源的部分已標註為定性分析。文中未引用任何付費行業報告的獨家資料。
準確性宣告:本頁技術內容基於公開論文和開原始碼中的已知資訊撰寫。涉及具體數字(通訊量公式、張量形狀推導)時均有明確推導依據;涉及廠商內部實現細節時標註”未充分公開”。如您發現事實性錯誤,歡迎指正。