模型層 開放閱讀

Broadcast(廣播通訊)

Broadcast

概念 ID
broadcast
更新時間
2026-05-29
來源數量
待補

Broadcast(廣播通訊)

3 秒看懂

Broadcast 是分散式計算中最基礎的”一對多”集體通訊原語:一個節點持有資料,將相同副本分發給所有參與節點。 在 AI 訓練中,它是模型初始化、引數同步的”起跑槍”。

3 分鐘產業解釋

為什麼 AI 產業鏈需要關注一個”通訊原語”?

當大型模型訓練從單卡擴充套件到數千甚至數萬張 GPU 時,所有 GPU 必須在訓練開始前拿到完全相同的初始權重和超引數。這個”把同一份資料發給所有人”的動作,就是 Broadcast。

  • 如果沒有高效 Broadcast:每張 GPU 各自隨機初始化,模型根本不收斂。
  • 規模化後:Broadcast 的延遲直接決定叢集”從靜止到開始訓練”的啟動時間。萬卡規模下,一次完整的模型引數廣播如果做得差,可能浪費數秒甚至數分鐘。
  • 產業位置:它是 NCCL、MPI、Gloo 等通訊庫的基礎原語之一,也是 AllReduce、AllGather 等更復雜集體操作的底層建置塊。理解 Broadcast,是理解整個分散式訓練通訊棧的起點。

簡言之:Broadcast 是 AI 算力叢集的”廣播體操”——所有人必須同步拿到同一套指令,才能開始工作。

15 分鐘專家深入

1. 形式化定義

在 $P$ 個參與程序(GPU/節點)中,指定一個 root 程序(rank 0)。Broadcast 的語義是:

$$ \text{root 持有 buffer } B \xrightarrow{\text{Broadcast}} \text{所有 } P \text{ 個程序的 buffer 都變為 } B $$

  • 輸入:root 程序的本地 buffer(大小 $n$ 元素)
  • 輸出:所有程序本地 buffer 均為 root 的副本
  • 通訊量:每個非 root 程序接收 $n$ 元素;root 傳送 $P-1$ 次(樸素實現)或經樹形結構分發

2. 在 AI 訓練中的典型使用場景

場景說明
模型引數初始化同步rank 0 完成初始化(或載入 checkpoint)後,Broadcast 至所有 rank,確保起點一致
超引數/學習率分發全域性超引數(lr、warmup schedule、loss scale 等)從 master 廣播
BN 統計量同步部分實現中,全域性 BatchNorm 的均值/方差通過 Broadcast 或 AllBroadcast 分發
梯度累積後的引數更新分發在非 AllReduce 範式的引數伺服器架構中,更新後的引數從 server Broadcast 到 worker

3. 與其他集體通訊原語的關係

                        ┌─────────────────────────────────────┐
                        │        集體通訊原語層次              │
                        ├─────────────────────────────────────┤
                        │                                     │
                        │  Broadcast  (1 → All)               │
                        │  Scatter    (1 → All, 各得不同分片)  │
                        │  Gather     (All → 1, 匯聚到 root)  │
                        │  AllGather  (All → All, 拼接分片)    │
                        │  Reduce     (All → 1, 規約到 root)  │
                        │  AllReduce  (All → All, 規約後廣播)  │
                        │  All-to-All (All → All, 每對不同)    │
                        │                                     │
                        │  ┌───────────────────────────────┐  │
                        │  │ AllReduce = Reduce + Broadcast │  │
                        │  │ AllGather = Gather + Broadcast │  │
                        │  └───────────────────────────────┘  │
                        └─────────────────────────────────────┘

關鍵洞察:Broadcast 是許多高階集體操作的”下半段”。AllReduce 本質上是先 Reduce(多對一規約)再 Broadcast(一對多分發)。理解 Broadcast 的演算法複雜度,直接有助於理解 AllReduce 的通訊成本。

4. 在大型模型訓練架構中的實際位置

  • Megatron-LM:在資料並行(DP)和流水線並行(PP)中,廣播用於在訓練開始時同步模型權重。具體地,tensor parallel 內部的引數分佈通過特定分片方式處理,而跨 DP 組的權重初始同步依賴 Broadcast。
  • DeepSpeed ZeRO:ZeRO Stage 1/2/3 將最佳化器狀態/梯度/引數分片儲存,在需要時通過 AllGather(可視為一系列 Broadcast 的組合)重建完整引數。
  • PyTorch DDPtorch.distributed.broadcast()DistributedDataParallel 初始化時被隱式呼叫,確保所有程序的模型引數一致。

技術原理(最深)

1. Broadcast 的經典演算法

Broadcast 的演算法設計核心是最小化通訊輪次和總通訊量。以下是主要策略:

(a) 樸素線性 Broadcast(Flat)

Root (rank 0) 依次向 rank 1, 2, ..., P-1 傳送資料

輪次: P-1
Root 傳送量: (P-1) × n
每輪 1 條訊息, 但 root 是瓶頸

適用: P 很小 (如 2-4 卡)

(b) 二叉樹 Broadcast(Binomial Tree)

P 個程序排列成二叉樹 (邏輯拓撲)
Root 在第 1 輪發給 1 個節點
第 2 輪 root + 已收到的節點各發給 1 個新節點
...依此類推

輪次: ⌈log₂ P⌉
每輪每個活躍節點發 1 條訊息
總通訊量: 每個非 root 節點恰好接收 1 次 n 元素

          [0]
         /   \
       [1]   [2]
      / \    / \
    [3][4] [5][6]

第 0 輪: 0 → 1
第 1 輪: 0 → 2, 1 → 3
第 2 輪: 0 → 4(?), 1 → 4, 2 → 5, 3 → 6
(實際編號方式有多種變體)

優勢:輪次對數增長,適合中等規模。 劣勢:頻寬利用率不均勻(葉節點利用率低)。

(c) 分段流水線 Broadcast(Scatter-Gather 式 / Ring-based)

將 n 元素分成 k 段: n = k × (n/k)

利用 ring 拓撲:
  - 每段沿 ring 流轉, 經過 P-1 步到達所有節點
  - k 段流水線化, 不同段在 ring 的不同位置同時傳輸

理論頻寬: 接近鏈路頻寬上限 (當 k 足夠大時)
輪次: P-1 輪 (但每輪傳輸 n/k 而非 n)
延遲: (P-1) × (α + n/(k×β)), 其中 α=延遲, β=頻寬

NCCL 的實現傾向於此類,因為它能充分利用鏈路頻寬,尤其在 NVLink/NVSwitch 拓撲下。

(d) 雙二叉樹 Broadcast(Double Binary Tree)

NCCL 2.x 以後在多節點場景中採用的最佳化策略之一:
使用兩棵互補的二叉樹, 分別處理資料的不同部分,
使得每棵樹上的內部節點和葉節點角色交替,
從而平衡所有節點的通訊負載。

目標: 避免 root 和靠近 root 的節點成為瓶頸

2. 拓撲感知的 Broadcast 實現

實際系統中,Broadcast 的效能強烈依賴硬體拓撲

┌──────────────────────────────────────────────────────────┐
│                    一個典型 GPU 節點                       │
│                                                          │
│   ┌────────┐  NVLink/NVSwitch   ┌────────┐              │
│   │ GPU 0  │◄══════════════════►│ GPU 1  │              │
│   └───┬────┘    (900 GB/s*)     └───┬────┘              │
│       │          雙向頻寬            │                    │
│       │                              │                    │
│   ┌───┴────┐                    ┌───┴────┐              │
│   │ GPU 2  │◄══════════════════►│ GPU 3  │              │
│   └────────┘                    └────────┘              │
│                                                          │
│  * NVLink 4.0 單向約 450 GB/s, 雙向約 900 GB/s          │
│    (具體值因 GPU 架構代際而異, 此為 H100 級別估算值)       │
│                                                          │
│         ↕ PCIe / C2C                                    │
│   ┌──────────────┐                                       │
│   │    CPU / NIC  │                                       │
│   └──────┬───────┘                                       │
└──────────┼───────────────────────────────────────────────┘

     InfiniBand / RoCE
    (單埠約 200 Gbps 即 ~25 GB/s, HDR)

┌──────────┼───────────────────────────────────────────────┐
│          其他節點 ...                                     │
└──────────────────────────────────────────────────────────┘

實現策略

  1. 節點內(intra-node):利用 NVLink/NVSwitch 的高頻寬,通常採用樹形或 ring 形拓撲,單輪可傳輸大量資料。
  2. 節點間(inter-node):頻寬遠低於節點內,通常由 rank 0(或指定 root rank)通過 IB/RoCE 將資料傳送給其他節點的代表 rank,再由該 rank 在節點內廣播。
典型的兩層 Broadcast:
Step 1: Rank 0 ──IB──> 各節點的 root rank  (節點間)
Step 2: 每節點 root ──NVLink──> 節點內其他 GPU (節點內)

3. NCCL 中的 Broadcast 實現要點

NCCL(NVIDIA Collective Communications Library)是當前 NVIDIA GPU 叢集上集體通訊的事實標準:

  • NCCL 的 Broadcast 實現通常是拓撲感知的:在初始化階段探測 NVLink/NVSwitch 連線、PCIe 拓撲、IB/RoCE 網路拓撲,然後建置最優通訊樹或 ring。
  • NCCL 2.x 支援多節點 Broadcast,自動處理節點間和節點內的分層通訊。
  • 通訊與計算 overlap:雖然 Broadcast 本身不像 AllReduce 那樣常被用於計算 overlap(因為 Broadcast 通常發生在訓練開始前),但在流水線並行中,權重的分發可以與前向計算重疊。
  • NCCL 的 Broadcast 支援**就地(in-place)和非就地(out-of-place)**兩種模式。

4. 通訊量與頻寬公式

對於大小為 $D$ 位元組的 buffer,在 $P$ 個 GPU 間做 Broadcast:

演算法總資料移動量輪次頻寬利用率
Flat(線性)(P-1) \times D$P-1$低(root 瓶頸)
Binomial TreeD \times (P-1)(每個非 root 收 $D$)\lceil\log_2 P\rceil中等
Ring(分段)(P-1) \times D$P-1$ 輪,每輪 $D/k$
二叉樹(分段)約 $D$\lceil\log_2 P\rceil,分段流水線

頻寬最優下界:任何 Broadcast 演算法中,每個非 root 節點至少接收 $D$ 位元組,因此總資料移動量至少 (P-1) \times D。Ring-based 分段流水線可接近此下界的同時充分利用鏈路頻寬。


技術演進史

時期標誌事件Broadcast 的角色
MPI 時代(~2000s)MPI_Bcast 是 HPC 標準原語廣泛用於科學計算的初始化與引數分發
引數伺服器興起(~2012-2017)DistBelief → PS-Lite引數更新從 server 廣播到 worker,但更常用 Push/Pull 非同步語義
AllReduce 崛起(~2017-2019)Horovod 推廣 Ring-AllReduceBroadcast 角色相對弱化(AllReduce 內含廣播),但初始化同步仍需
NCCL 2.x 成熟(~2019-至今)NCCL 成為 NVIDIA 叢集通訊標準NCCL 原生支援 Broadcast,自動拓撲最佳化,效能持續改進
萬卡時代(~2023-至今)GPT-4 級別萬卡訓練叢集初始化的 Broadcast 效率成為關注點;拓撲感知的層次化 Broadcast 更重要
通訊拓撲進化NVSwitch → 多節點 IB 叢集 → 定製互聯Broadcast 演算法需要適配更復雜的異構拓撲

技術路線對比

Broadcast 實現架構/庫對比

維度MPI (OpenMPI)NCCLGlooHorovod
定位通用 HPC 通訊NVIDIA GPU 專用集體通訊PyTorch CPU/GPU 通訊上層架構(封裝 NCCL/MPI/Gloo)
Broadcast 演算法多種可選(binomial, chain, pipeline 等)拓撲自適應(tree, ring, pipeline)Binomial tree 為主轉發到底層庫
GPU 親和性需額外 GPU-aware 支援原生 GPU-direct支援 GPU,但非首選自動選擇最優後端
拓撲感知有限(需手動配置)(自動探測 NVLink/PCIe/IB 拓撲)依賴底層
多節點支援成熟成熟(NCCL 2.x 起)基本支援透明支援
典型用法HPC、傳統科學計算深度學習訓練主流PyTorch 預設 CPU 後端簡化分散式訓練 API

Broadcast vs 其他集體操作的開銷量級對比(概念性)

操作每 GPU 通訊量(buffer 大小 D, P 個 GPU)說明
Broadcast~D(每個非 root 接收 D)一對多,總量 (P-1)×D
AllReduce~2D(Ring-AllReduce: 2(P-1)/P × D ≈ 2D)最常用,AllReduce = Reduce + Broadcast
AllGather~(P-1)/P × D ≈ D(大 P 時)每節點收其他所有分片
ReduceScatter~(P-1)/P × D ≈ D(大 P 時)每節點輸出 D/P
All-to-All~(P-1)/P × D(均勻分佈時)MoE 中的 expert dispatch

上下游

上游(Broadcast 依賴什麼)

層級元件說明
硬體互聯NVLink / NVSwitch節點內 GPU 間高頻寬互聯(H100 級別 NVLink 4.0 雙向 ~900 GB/s [NVIDIA 官方引數])
節點間網路InfiniBand NDR / RoCE單埠 400 Gbps [Mellanox/IBTA 規格],多埠可聚合
GPU 記憶體HBM(HBM3/HBM3e)資料來源/目的地儲存介質,頻寬達 TB/s 級別
驅動 & 執行時CUDA, GPU-Direct RDMA支援 GPU 記憶體直接跨節點傳輸,繞過 CPU
通訊庫NCCL, MPI提供 Broadcast 實現的上層 API

下游(Broadcast 被誰使用)

元件/場景使用方式
PyTorch DDPdist.broadcast() 在模型初始化時同步引數
DeepSpeedZeRO Stage 引數重建;超引數分發
Megatron-LM跨 DP 組的權重初始同步
FSDP (Fully Sharded DP)初始化時廣播 meta 資訊與分片策略
推論服務多例項載入同一模型權重時的分發

關鍵指標

指標含義典型量級(定性)
延遲(Latency)Broadcast 完成時間(小訊息)節點內微秒級,跨節點毫秒級 [估算,取決於 P 和網路]
頻寬利用率實際吞吐 / 鏈路峰值頻寬NCCL 在 NVLink 拓撲下可接近峰值 [業界共識]
通訊量每個節點傳輸的資料總量最優演算法:每非 root 節點恰好接收 D 位元組
可擴充套件性增加節點數時延遲的增長樹形: O(log P); Ring: O(P) 輪次但每輪更小
與計算 overlap 能力能否隱藏在計算中Broadcast 通常在訓練迴圈外,overlap 需求低於 AllReduce

供需與市場資料

注:Broadcast 本身不構成獨立市場,其需求嵌入在分散式訓練基礎設施的整體需求中。以下為定性分析。

需求側驅動

  • 大型模型訓練規模增長:引數量從百億→萬億級別,單次 Broadcast 的 buffer 大小持續增長。
  • 叢集規模擴大:從百卡→萬卡,Broadcast 的參與方數量增長,對演算法可擴充套件性提出更高要求。
  • MoE 架構興起:雖然 MoE 的核心通訊是 All-to-All,但初始化和超引數同步仍需 Broadcast。

供給側演進

  • NVLink / NVSwitch 代際升級:每代頻寬翻倍級提升,節點內 Broadcast 速度持續改善。
  • InfiniBand NDR/XDR:節點間頻寬從 200→400→800 Gbps 演進。
  • NCCL 持續最佳化:NVIDIA 對 NCCL 的集體通訊演算法持續投入,Broadcast 效能隨版本迭代改善。

市場對映

產業鏈環節代表公司關聯度
GPU 晶片 & 互聯NVIDIA(NVLink/NVSwitch)
網路裝置NVIDIA(InfiniBand), Broadcom(RoCE 交換器)
通訊庫NVIDIA(NCCL), Intel(oneCCL)
訓練架構Meta(PyTorch/FSDP), Microsoft(DeepSpeed)
集群系統整合超微、Dell、浪潮、新華三

代表公司與資本對映

公司/組織角色與 Broadcast 的關聯
NVIDIANCCL 開發者 + NVLink/NVSwitch/IB 硬體供應商核心:NCCL 是 Broadcast 的主要實現載體;硬體互聯決定 Broadcast 效能上限
MetaPyTorch + Gloo 開發者PyTorch 的 torch.distributed.broadcast 是最常用的上層 API
MicrosoftDeepSpeed 開發者DeepSpeed 的通訊最佳化中大量使用 Broadcast 及其變體
InteloneCCL(oneAPI Collective Communications Library)Intel GPU 叢集上的 Broadcast 實現
Broadcom / Marvell高速乙太網路交換晶片RoCE 網路承載跨節點 Broadcast 的底層鏈路

投資邏輯

核心觀點:Broadcast 不是獨立的投資標的,但它是理解 AI 算力基礎設施”通訊層”投資價值的基石概念。

  1. 通訊庫是”隱性護城河”:NCCL 對 Broadcast 等集體操作的最佳化深度,是 NVIDIA 生態粘性的關鍵組成部分。競爭對手(AMD ROCm/RCCL、Intel oneCCL)在此領域的追趕難度大。
  2. 高速互聯硬體需求確定性高:無論訓練範式如何變化,分散式通訊的”一對多”需求永遠存在。NVLink、IB 等互聯硬體的 ASP 和出貨量持續受益。
  3. 關注 NCCL 效能基準:NCCL 版本更新中 Broadcast/AllReduce 的 benchmark 資料是衡量 NVIDIA 通訊棧競爭力的直接指標。
  4. 通訊瓶頸 = 新投資機會:當模型規模增長超過互聯頻寬增長時,會催生對計算-通訊 overlap 排程器(如 DeepSpeed、Alpa 等)和拓撲最佳化方案的需求。

常見誤讀糾偏

❌ 誤讀 1:“Broadcast 就是 AllReduce 的一部分,所以不需要單獨關注”

糾偏:雖然 AllReduce 的某些實現(如 Ring-AllReduce 的後半段)確實包含廣播語義,但 Broadcast 作為獨立原語在以下場景不可替代

  • 訓練啟動時的權重初始化同步(此時還沒有梯度,不存在 Reduce 的語義)
  • 超引數、學習率排程資訊的分發
  • Checkpoint 載入後的引數同步

將 AllReduce 和 Broadcast 混為一談,會導致對通訊量和通訊模式的錯誤估算。

❌ 誤讀 2:“NCCL Broadcast 是簡單的樹形廣播,沒什麼好最佳化的”

糾偏:NCCL 的集體通訊實現(包括 Broadcast)遠比樸素樹形廣播複雜:

  • 它是拓撲感知的:自動檢測 NVLink、PCIe、IB 拓撲,建置最優通訊計劃
  • 它採用分段流水線:將大數據塊切分為多個小段,在拓撲上流水線傳輸,最大化頻寬利用率
  • NCCL 2.x 以後支援多種通訊演算法(tree, ring, 以及它們的組合),並根據訊息大小和拓撲自動選擇
  • 具體實現細節 NCCL 並未完全公開,屬於 NVIDIA 的工程資產

❌ 誤讀 3:“Broadcast 的通訊量是 P × D,所以萬卡訓練中 Broadcast 會成為瓶頸”

糾偏

  • 單個非 root 節點只需接收 $D$ 位元組,通訊量是 $D$ 而非 P \times D
  • 總通訊量 (P-1) \times D 是分佈在所有節點上的,並非由一個節點承擔。
  • 實際瓶頸取決於root 節點的出度網路頻寬,而非簡單的總通訊量乘法。
  • 在層次化實現中(節點間 + 節點內兩層),Broadcast 的延遲增長遠慢於線性。

學習路徑

Level 0: 理解概念
│  └─ 知道 Broadcast 是"一對多"資料分發

Level 1: 理解 MPI_Bcast
│  └─ 跑通 MPI hello world,用 MPI_Bcast 在 4 個程序間廣播一個數組
│     推薦: mpitutorial.com / Boost.MPI 教程

Level 2: 理解 NCCL 中的 Broadcast
│  └─ 閱讀 NCCL 文件中的集體通訊部分
│     實操: torch.distributed.broadcast() 在多 GPU 上的用法
│     關鍵: 理解 root rank、in-place vs out-of-place

Level 3: 理解演算法與拓撲
│  └─ 學習 binomial tree、ring broadcast、pipeline broadcast 病理
│     推薦: "Parallel Computing" (Grama et al.) 集體通訊章節
│     關注: NCCL 的拓撲檢測機制(NCCL_DEBUG=INFO 可觀察)

Level 4: 理解在大型模型訓練中的系統級影響
│  └─ 閱讀 Megatron-LM、DeepSpeed 原始碼中 Broadcast 的呼叫點
│     分析: Broadcast 延遲在訓練 startup time 中的佔比
│     關注: 計算-通訊 overlap 的設計模式

Level 5: 前沿研究
   └─ 異構拓撲下的自適應 Broadcast 演算法
      跨資料中心的廣域 Broadcast
      通訊壓縮(compressed broadcast)在聯邦學習中的應用

一句話總結

Broadcast(廣播)是分散式 AI 訓練的”起跑槍”——它將一致的模型權重和超引數從一個源頭分發到所有計算節點,是 AllReduce 等複雜通訊原語的基石,也是理解 NVIDIA 通訊生態(NCCL)和高速互聯硬體(NVLink/IB)投資價值的最小可理解單元。


延伸閱讀與來源

來源內容級別
NVIDIA NCCL 文件ncclBroadcast API 說明、拓撲檢測機制官方一手資料
MPI Forum 標準文件MPI_Bcast 規範與演算法討論學術/標準
PyTorch 官方文件torch.distributed.broadcast架構文件
Grama et al., Introduction to Parallel Computing集體通訊演算法的系統性講解教科書
NVIDIA GTC 演講NCCL 集體通訊最佳化的技術分享行業會議
本頁硬規格標註說明NVLink/IB 頻寬數值來自廠商公開引數,具體實測值因環境而異,文中已標註 [NVIDIA 官方引數] / [IBTA 規格] / [估算]

本文件硬規格依據:NVLink/IB 引數來自 NVIDIA 及 IBTA 公開資料標註;無公開資料處以定性表述處理,未憑記憶編造具體數字。

source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型