技術指南

集體溝通和 NCCL

集體通訊是一組 GPU 交換和組合資料的方式,而 NCCL 是 NVIDIA 的函式庫,可以使這些交換變得異常快速。

閱讀時間約2分鐘最後更新

概述

Operations like all-reduce are the heartbeat of distributed training, synchronizing gradients across every GPU each step.

深入探討

訓練大型模型意味著每個 GPU 在自己的資料切片上計算梯度,然後所有 GPU 必須在下一步之前就組合結果達成一致。這種協調是透過集體操作完成的:對 GPU 上的值進行 all-reduce 求和,並為每個人提供結果; all-gather 將每個 GPU 的片段收集到所有 GPU 的完整副本中;廣播將一個 GPU 的資料發送給其餘 GPU;減少分散組合然後分裂。 NCCL(NVIDIA Collective Communications Library)使用拓樸感知演算法(例如環和樹全歸約)跨伺服器中的 GPU 以及跨伺服器高效地實現這些功能。它利用節點內部的 NVLink 以及節點之間的 InfiniBand 或 RoCE,是 PyTorch DDP、FSDP、DeepSpeed 和 Megatron 下的通訊主幹。

技術洞察

Ring all-reduce 是經典演算法:GPU 形成一個邏輯環,資料被分成循環的區塊,因此每個步驟都重疊通信,從而使總傳輸頻寬最優並且大致獨立於 GPU 數量。對於許多節點,基於樹的演算法透過分層組合結果來減少延遲。 NCCL 自動偵測拓撲,選擇最佳演算法,並可使用 NVIDIA SHARP 將簡化數學卸載到網路中,從而將必須遍歷鏈路的資料減半。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

集體溝通和 NCCL 的未來

隨著叢集擴展到數十萬個 GPU,通訊越來越主導訓練時間,因此集體庫是一個熱門領域。期望更深入的網路內運算(交換器進行減少),更好的計算和通訊重疊以隱藏延遲,以及縮小移動位元組的低精度集合。隨著跨供應商的努力和基於乙太網路的 RDMA 推動替代方案,競爭也在加劇,而 NCCL 不斷加強與 NVLink、NVSwitch 和新興光學結構的整合。

現實世界的實施

使用 PyTorch DistributedDataParallel 中的 all-reduce 同步所有 GPU 上的每個訓練步驟的梯度

透過 FSDP 或 DeepSpeed ZeRO 中的全收集和減少分散功能對分片優化器狀態進行按需收集參數

在訓練運行開始時將初始模型權重從一個 GPU 廣播到所有其他 GPU

在 NVLink 和 InfiniBand 上使用環 all-reduce 來保持多節點 GPU 叢集的高頻寬

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Collective Communication and NCCL quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

線上和線下功能服務偏差

常見問題

What is Collective Communication and NCCL?

集體通訊是一組 GPU 交換和組合資料的方式,而 NCCL 是 NVIDIA 的函式庫,可以使這些交換變得異常快速。像 all-reduce 這樣的操作是分散式訓練的核心,每一步都在每個 GPU 上同步梯度。

all-reduce 操作在分散式訓練中能完成什麼?

All-reduce 對每個 GPU 上的值求和(或以其他方式組合),並將相同的結果分配回所有 GPU,這就是梯度同步的方式。

縮寫 NCCL 代表什麼?

NCCL是NVIDIA集體通訊庫,它實現了快速的多GPU和多節點集體操作。

為什麼環全歸約被認為是頻寬最優的?

透過對資料進行分塊並在邏輯環上傳遞資料區塊,每個連結都會同時使用,並且總傳輸量大致獨立於 GPU 的數量。

哪個集體操作將每個 GPU 的資料收集到所有 GPU 持有的完整副本?

All-gather 收集每個 GPU 中的不同部分,並在所有 GPU 上組裝完整的集合,在 FSDP 等分片訓練中大量使用。

NVIDIA SHARP 對集體運算有何影響?

SHARP 執行網路內計算,在交換器內部進行部分減少,從而減少必須經過鏈路的數據,從而加快集合速度。