模型並行
3秒看懂
當一個大型模型(如千億引數的語言模型)的引數和中間啟用值超過單個GPU視訊記憶體承載上限時,模型並行技術將模型的計算圖切分,分散式部署在多個加速器上,所有裝置協作完成一次前向/後向傳播。它主要包含兩種範式:流水線並行(按層切分,層間傳遞啟用/梯度)和張量並行(將單層內的矩陣乘法切分,層內進行通訊),常與資料並行組合成“3D並行”來訓練超大型模型。
3分鐘產業解釋
為什麼需要模型並行?
單體GPU的視訊記憶體(比如常見的80GB)無法存放一個千億引數的全精度模型及其最佳化器狀態。資料並行雖能提高吞吐,但要求每個裝置存放完整模型副本,無法解決單卡視訊記憶體瓶頸。模型並行將模型結構本身剖分到多個裝置,讓叢集的總視訊記憶體與總算力被整合起來,突破“模型放不下”這道牆。
產業落地形態
在主流大型模型訓練(如Llama系列、GPT-3、DeepSeek等)中,研究者普遍採用3D並行:張量並行(TP)負責單層超大矩陣的計算切分,流水線並行(PP)將數百層分配到幾十個流水段,資料並行(DP)在每次迭代裡並行處理多個微批次,三者疊加可在數千GPU上線性擴充套件。此外,MoE(混合專家)架構催生了專家並行,將不同專家引數分佈到不同裝置,可視為模型並行的延伸。
與推論的關係
模型並行不僅用於訓練,大型模型推論時同樣因視訊記憶體不足需要將權重分片到多卡,常見形式是張量並行和流水線並行,再配合KV Cache等推論最佳化技術。
15分鐘專家深入
1. 流水線並行 (Pipeline Parallelism, PP)
核心思想:將模型按層切分成多個Stage,每個Stage部署在獨立裝置上。前向傳播時,中間啟用從Stage i傳至Stage i+1;反向傳播時,梯度從Stage i+1傳回Stage i。
- 樸素流水線:一個批次的計算順序嚴格,同一時刻大部分裝置空閒,出現嚴重的“氣泡”。
- 微批次流水線(GPipe):將一個mini-batch拆成M個微批次,前向對整個批次按stage順序推送,反向同樣按微批次反向回傳。氣泡比例 ≈ (P−1)/M,P為流水段數。增大M可攤薄氣泡,但需更多視訊記憶體暫存中間啟用(除非啟用重計算)。
- 1F1B排程(PipeDream-2BW等):前向與反向交錯執行,每個裝置在完成一個微批次前向就儘快開始一個微批次反向,維持更少的待發梯度緩衝區,進一步壓縮氣泡,並能更好地平衡計算與通訊。
2. 張量並行 (Tensor Parallelism, TP)
針對Transformer等模型,單層內的權重矩陣(線性投影)被按列或按行切分。以最常見的1D張量並行(Megatron-LM)為例:
- 輸入x,權重矩陣W,輸出y = xW。
- 列並行:將W按列切分成[W₁, W₂],x分別乘W₁、W₂,得到y₁、y₂,再通過AllReduce或更精細的AllGather/ReduceScatter合併完整y。
- 行並行:將W按行切分,需將x按對應方式切分。前向中執行AllReduce或AllGather以聚合結果。
在Transformer的自注意力和MLP中,列線性後往往配行線性,兩者組合可將昂貴的AllReduce轉化為在更小維度的通訊,且計算與通訊可重疊。1D TP在超大型模型上通訊需求會隨並行度增大而升高,因此通常在一個高速互聯域內(如同一節點的多卡NVLink互聯)保持TP,外層用PP/DP擴充套件跨越較慢的網路。
3. 多維度張量並行與自動並行
為解決1D TP的通訊縮放瓶頸,學術界提出2D/2.5D/3D張量並行,將權重和啟用同時在其兩個或多個維度切分,通訊原語變為多輪AllReduce/AllGather組合,通訊量在特定條件下低於1D方案,但實現複雜度高,多在專用系統或研究型架構中演示。
自動並行:Alpa、GSPMD、TensorFlow Mesh等系統通過編譯技術自動搜尋最優的運算元內並行(張量並行)和運算元間並行(流水線並行)策略,降低手寫並行成本。這些系統將模型定義為計算圖,按硬體拓撲、通訊頻寬和視訊記憶體約束,自動生成混合並行方案。
4. 混合並行與通訊域分層
實際千卡叢集上,典型配置為:節點內多卡(通常8卡)採用高速NVLink/NVSwitch進行TP,節點間採用InfiniBand或RoCE網路執行DP和PP。DP的AllReduce梯度同步、TP的群體通訊、PP的點對點啟用/梯度傳遞需在並行的不同階段交錯執行。DeepSpeed ZeRO(ZeRO-1/2/3)與模型並行結合,ZeRO-3將最佳化器狀態、梯度和引數在DP的AllGather/ReduceScatter中分片,進一步降低冗餘。
技術原理
以下深入解析張量並行中關鍵通訊模式與計算流程。
張量並行:以Megatron的MLP塊為例
一個MLP塊接受輸入h (seq_len × hidden_size),兩線性投影:
- 第一個線性層(h→4h):採用列並行。
- 第二個線性層(4h→h):採用行並行。
設張量並行度為t,hidden_size為d。
h (seq_len × d)
│
┌────┴────┐
列並行:hW₁ᵀ hW₂ᵀ <--- W₁,W₂ 形狀均為 d × (4d/t)
│ │
g₁ g₂ <--- g₁,g₂ 形狀 seq_len × (4d/t)
│ │
(GELU) (GELU)
│ │
a₁ a₂ <--- a₁,a₂ 形狀 seq_len × (4d/t)
│ │
行並行:a₁V₁ a₂V₂ <--- V₁,V₂形狀 (4d/t) × d
│ │
y₁ y₂ <--- 每個形狀 seq_len × d, 部分和
└────┬───┘
AllReduce (求和) <--- 跨t個裝置
│
y (seq_len × d)
通訊量與計算量
對於列並行,前向只產生g₁、g₂,只需要在計算第二個線性層時傳遞。具體MP實現中,第一個列並行不需要AllReduce,第二個行並行的輸入是列切分好的a₁,a₂,計算y₁=a₁V₁, y₂=a₂V₂,然後AllReduce求和恢復完整y。反向則對稱通訊。
這樣每次前向通訊量約為 2 * seq_len * d * (t-1)/t(AllReduce),隨並行度t增大,通訊佔比上升。因此張量並行通常限制在節點內低速通訊範圍(t≤8)。
流水線並行排程:1F1B序列示例
假設4個stage,微批次數量設為8(實際通常選擇M遠大於P以減少氣泡)。用程式碼塊表示時間線:
時間步 -> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Stage 0: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
Stage 1: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
Stage 2: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
Stage 3: F0 F1 F2 F3 B0 F4 B1 F5 B2 F6 B3 F7 B4 B5 B6 B7
每個裝置在前向傳遞完最初的若干微批次後,開始交錯執行前向與反向計算(如F4與B0交替),維持高負載率,氣泡極小。
技術演進史
- 2016‑2018:模型並行尚以簡單的層間切分或手工並行存在。GPipe(2019)提出微批次流水線,開啟高效流水線並行大門。
- 2019:NVIDIA釋出Megatron‑LM,率先在Transformer內引入張量並行(1D TP),成功訓練83億引數模型。同年,Microsoft的ZeRO(零冗餘最佳化器)出現在DeepSpeed中,主要最佳化資料並行,但與模型並行互補。
- 2020:PipeDream‑2BW提出雙向流水線排程,降低啟用記憶體。Megatron逐步完善為3D並行架構:TP+PP+DP。
- 2021:DeepSpeed將ZeRO‑3與模型並行整合,實現線性擴充套件。Alpa、GSPMD出現,推動自動並行。
- 2022‑2023:隨著MoE模型(Switch Transformer、Mixtral等)普及,專家並行作為模型並行的新維度出現,每個專家被放置在獨立裝置,路由分配輸入token,帶來All‑to‑All通訊模式。
- 2024+:萬億引數模型探索中,分層通訊拓撲最佳化(如將所有TP置於NVSwitch域,PP跨機櫃等)和模型並行與序列並行的結合(如Ring Attention)成為前沿。
技術路線對比
| 並行策略 | 切分粒度 | 通訊量 | 視訊記憶體節省 | 氣泡/通訊開銷 | 實現複雜度 | 適用場景 |
|---|---|---|---|---|---|---|
| 資料並行 | 按資料 | 梯度AllReduce(每步) | 無 | 低 | 低 | 模型可放入單卡,需提吞吐 |
| 流水線並行 | 按層 | 啟用/梯度點對點傳 | 高 | 氣泡(可緩解) | 中 | 模型深度大,層間計算量較均衡 |
| 張量並行 | 單層矩陣內 | AllReduce/AllGather | 高 | 通訊頻寬敏感 | 高 | 單層過大,需要節點內高速互聯 |
| 專家並行 | 按專家引數 | All‑to‑All(每token) | 高 | 低於等規模密集 | 中高 | MoE模型,路由多專家 |
| 3D並行(混合) | 多層、層內、資料 | 混合上述 | 最高擴充套件 | 需仔細調優 | 極高 | 千億/萬億引數訓練,大規模叢集 |
視訊記憶體節省與通訊量為定性評估,實際取決於具體配置和硬體。
上下游
上游
- 硬體:GPU(NVIDIA H100等)、TPU、NPU提供大視訊記憶體和高速互聯(NVLink、NVSwitch、InfiniBand、PCIe Gen5)。
- 分散式通訊庫:NCCL、MPI、Gloo等高效集合通訊是模型並行的地基。
- 架構與編譯器:PyTorch Distributed、Megatron‑LM、DeepSpeed、Alpa、GSPMD、OneFlow等,提供高層API和自動最佳化。
- 排程與資源管理:Kubernetes、Slurm、雲端原生彈性訓練平台。
下游
- 大型模型訓練:是千億/萬億量級語言模型、多模態模型、推薦模型訓練的必備手段。
- 大型模型推論:多卡推論部署需模型並行以降低延遲或破解視訊記憶體限制。
- 科學計算:物理模擬等深度學習模型也會應用。
關鍵指標
- 並行效率:實際吞吐 / (總裝置數 × 單裝置吞吐的線性預期)。
- 氣泡率:流水線並行中裝置空閒時間佔比,受微批次數和stage數影響。
- 通訊量/計算量比:衡量張量並行開銷,數值越小越好。
- 視訊記憶體均衡度:各裝置間的引數+啟用+最佳化器狀態的記憶體使用差異,不均衡會導致“木桶效應”。
- 故障恢復能力:大叢集訓練常面臨故障,檢查點儲存/載入與並行友好的恢復策略至關重要。
(具體數字因硬體、配置、模型結構而異,無通用標準值,需按現場profiling確定。)
供需與市場資料
大量企業、研究機構對千億、萬億引數模型訓練的需求驅動模型並行成為“標準基建”。據行業估算,訓練一個萬億引數模型可能需要數千甚至上萬張高效能GPU,高效模型並行是讓這些裝置協同發揮算力的關鍵。雲端廠商(AWS、Azure、GCP)相繼推出針對大型模型訓練的“並行最佳化叢集”服務,架構如Megatron-LM和DeepSpeed的下載量與社群活躍度迅速攀升,反映出旺盛的產業需求。可以觀察到,擁有自主高效的模型並行架構(如NVIDIA的Megatron、微軟的DeepSpeed)的公司在雲端AI服務市場中的競爭力明顯增強。(具體市場營收資料未充分揭露,此處為定性描述。)
代表公司與資本對映
- NVIDIA:不僅供應GPU和NVLink互聯,其Megatron‑LM架構是事實上的張量並行標準,NeMo平台整合了3D並行,鞏固了其在AI基礎設施的核心地位。
- 微軟:DeepSpeed以ZeRO聞名,並整合流水線並行和張量並行,降低大型模型訓練門檻,是其Azure智慧雲端的重要賣點。
- Google:GPipe開創者,後續推出GSPMD自動並行和Pathways系統,結合TPU專屬互聯,其內部大型模型(如PaLM)深度使用模型並行,技術通過Google Cloud輸出。
- Meta:開源LLaMA系列和FairScale/Opt等架構,在多維並行方面有大量實踐與共享,驅動研究和生態發展。
- 其他:百度(飛槳PaddlePaddle分散式策略)、華為(昇思MindSpore及昇騰叢集的並行最佳化)、國內雲端廠商(阿里PAI、騰訊混元)均在大型模型並行技術上深度投入。初創公司(如MosaicML被Databricks收購)也因創新並行訓練效率而獲得資本青睞。
投資邏輯
模型並行技術是AI Scaling Law得以延續的關鍵基礎設施。關注點:
- 硬體互聯能力:節點內高頻寬交換(如NVSwitch)直接決定TP的規模上限,利好掌握先進互聯技術的晶片龍頭。
- 訓練效率與成本:更優秀的並行策略(如1F1B排程改良、自動並行編譯)能顯著降低等效算力成本,使雲端服務商或模型公司獲益。
- 架構生態壁壘:Megatron+DeepSpeed等組合形成事實標準,新進入者需繞過龐大工程積累。投資擁有強大並行架構掌控力的企業,可享受大型模型軍備競賽的“賣鏟人”紅利。
- 風險:模型架構變化(如MoE、RWKV等非Transformer結構)可能改變並行策略的通用性;如果單晶片視訊記憶體和算力增速持續超越模型規模增速,部分模型並行的必要性會下降(但當前趨勢仍為模型增速更快)。
常見誤讀糾偏
-
誤讀1:“模型並行解決了所有擴充套件性問題”
事實:模型並行必須與資料並行、ZeRO、啟用重計算、混合精度等組合成完整方案,僅靠一種並行難以實現大規模線性擴充套件。而且隨著並行度增大,通訊開銷可能成為新瓶頸。 -
誤讀2:“流水線並行就是模型並行的全部”
事實:流水線並行是按層進行運算元間並行,張量並行則是運算元內並行。很多工程實踐會同時採用兩者,在節點內用張量並行解決單層視訊記憶體問題,跨節點用流水線並行擴充套件深度。 -
誤讀3:“張量並行在任何規模的Transformer上都表現優異”
事實:張量並行在引數量不夠大、並行度較高時,通訊量可能超過計算收益,導致整體吞吐下降。實踐中,僅在單層引數量超過某個閾值(如數十億)或矩陣維度極大時才啟用,並與較小的並行度配合。
學習路徑
- 基礎知識:掌握集合通訊(AllReduce、AllGather、ReduceScatter、All‑to‑All)和分散式訓練基本概念(rank、world size)。
- 經典論文:
- GPipe(2019)
- Megatron‑LM(2019)
- PipeDream‑2BW(2020)
- DeepSpeed ZeRO(2020)
- Alpa(2022)
- 動手實踐:
- 使用PyTorch Distributed編寫簡單的列/行並行MLP,在單機多卡環境驗證通訊。
- 復現Megatron‑LM微型示例,嘗試調節TP/PP/DP組合,觀察吞吐變化。
- 閱讀DeepSpeed配置檔案,理解ZeRO Stage3與模型並行的協作。
- 進階:研究Megatron‑LM原始碼中的張量並行MLP和注意力實現;嘗試用Alpa自動並行一箇中等規模Transformer;瞭解拓撲感知通訊(如節點內NCCL呼叫與節點外InfiniBand排程)。
一句話總結
模型並行是大型模型時代突破單卡視訊記憶體牆,通過協同切分計算圖讓數千GPU合力訓練萬億引數模型的核心策略。
延伸閱讀與來源
- 經典論文:
GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism (2019)
Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism (2019)
Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM (2021)
DeepSpeed: System Optimizations Enable Training Deep Learning Models with Over 100 Billion Parameters (2020)
Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning (2022) - 開原始碼:
Megatron‑LM (GitHub)
DeepSpeed (GitHub) - 技術部落格:NVIDIA Developer Blog、Microsoft Research Blog、Google AI Blog上關於並行訓練的專題文章。
- 行業分析:各大雲端廠商關於大型模型訓練叢集架構的白皮書,以及主要AI晶片公司的技術峰會演講。
注:本文因未取得具體硬體規格的權威檢索資料,涉及通訊頻寬、視訊記憶體容量、並行規模等數字為定性描述或行業慣常經驗,未標註具體數值的,表示[未充分揭露]或基於公開領域估計。