概述
集體通訊是一組 GPU 交換和組合資料的方式,而 NCCL 是 NVIDIA 的函式庫,可以使這些交換變得異常快速。像 all-reduce 這樣的操作是分散式訓練的核心,每一步都在每個 GPU 上同步梯度。
集體通訊和 NCCL 是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。
深入探討
訓練大型模型意味著每個 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 交換和組合資料的方式,而 NCCL 是 NVIDIA 的函式庫,可以使這些交換變得異常快速。像 all-reduce 這樣的操作是分散式訓練的核心,每一步都在每個 GPU 上同步梯度。集體通訊和 NCCL 是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。為了建立深入的理解,請將集體通訊和 NCCL 視為一種操作模型,而不是單一功能:定義期望的結果,澄清假設,並將系統可以可靠地執行的操作與仍需要專家判斷的操作分開。
在實踐中,強大的團隊使用集體通訊和 NCCL 來根據可靠性和成本優化架構、資料和基礎設施選擇。他們記錄明確的成功標準,根據實際數據和工作流程進行測試,並根據觀察到的失敗模式而不是一次性基準測試勝利進行迭代。這就是理論理解轉變為跨產品、政策和營運的持久能力的地方。
多年來,架構決策決定著效能和營運成本。同時,優化一個基準測試可以隱藏更廣泛的系統弱點。最具彈性的方法是將實驗速度與治理規則結合:運行試點、捕獲證據、發布決策日誌,並隨著模型行為、使用者期望和監管要求的發展不斷更新保障措施。
戰略影響
多年來,架構決策決定著效能和營運成本。
多年來,架構決策決定著效能和營運成本。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。
技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。
技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。
更好的工程選擇可以減少生產中的可靠性事故。
更好的工程選擇可以減少生產中的可靠性事故。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。
現實世界的實施
使用 PyTorch DistributedDataParallel 中的 all-reduce 同步所有 GPU 上的每個訓練步驟的梯度
透過 FSDP 或 DeepSpeed ZeRO 中的全收集和減少分散功能對分片優化器狀態進行按需收集參數
在訓練運行開始時將初始模型權重從一個 GPU 廣播到所有其他 GPU
在 NVLink 和 InfiniBand 上使用環 all-reduce 來保持多節點 GPU 叢集的高頻寬
實施模式
集體溝通和 NCCL 實踐
使用 PyTorch DistributedDataParallel 中的 all-reduce 同步所有 GPU 上的每個訓練步驟的梯度。
使用 PyTorch DistributedDataParallel 中的 all-reduce 同步所有 GPU 上的每個訓練步驟的梯度 當團隊預先定義質量閾值、為邊緣情況保留人工升級路徑並隨著時間的推移跟踪生產力增益和錯誤成本時,通常會獲得更好的結果。
集體溝通和 NCCL 實踐
透過 FSDP 或 DeepSpeed ZeRO 中的全收集和減少分散功能,對分片優化器狀態進行按需收集參數。
在 FSDP 或 DeepSpeed ZeRO 中透過全收集和減少分散功能對優化器狀態進行分片並按需收集參數。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。
集體溝通和 NCCL 實踐
在訓練運行開始時,將初始模型權重從一個 GPU 廣播到所有其他 GPU。
在訓練運行開始時將初始模型權重從一個 GPU 廣播到所有其他 GPU 當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並追蹤一段時間內的生產力提升和錯誤成本時,通常會獲得更好的結果。
集體溝通和 NCCL 實踐
在 NVLink 和 InfiniBand 上使用環 all-reduce 來保持多節點 GPU 叢集的高頻寬。
使用 NVLink 和 InfiniBand 上的環 all-reduce 來保持多節點 GPU 叢集的高頻寬 當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。
風險與防護欄
優化一項基準測試可以隱藏更廣泛的系統弱點。
基礎設施和維護成本常常被低估。
隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。
實施路線圖
在實施之前定義延遲、品質和成本目標。
在實施之前定義延遲、品質和成本目標。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。
在實際負載和資料條件下進行基準測試。
在實際負載和資料條件下進行基準測試。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。
儀器監控錯誤、漂移和使用者影響。
儀器監控錯誤、漂移和使用者影響。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。
在擴展之前準備回滾和事件回應路徑。
在擴展之前準備回滾和事件回應路徑。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。