技術指南

數據並行性

資料並行性透過在多個 GPU 上複製模型來更快地訓練一個模型,每個 GPU 處理資料批次的不同部分。

概述

資料並行性透過在多個 GPU 上複製模型來更快地訓練一個模型,每個 GPU 處理資料批次的不同部分。這是一種主力技術,可以讓團隊擴展到數十或數千個加速器。

資料並行性是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。

深入探討

在資料並行性中,每個 GPU 都會保存模型權重的相同副本,但處理不同的小批量訓練範例。每個設備獨立計算前向和後向傳遞,產生自己的一組梯度。在权重更新之前,使用全归约通信操作对所有 GPU 上的梯度进行平均,因此每个副本都保持同步,并且表现得就像在一个大型组合批次上进行训练一样。這有效地增加了吞吐量:8 個 GPU 每步可以處理大約 8 倍的資料。问题是每个 GPU 必须适应内存中的整个模型、其梯度和优化器状态,​​因此当模型对于单个设备来说太大时,普通数据并行性没有帮助。

技術洞察

關鍵操作是 all-reduce,它將跨裝置的梯度求和並重新分配結果。 NCCL 和 Horovod 等函式庫使用的 Ring all-reduce,在邏輯環周圍傳遞梯度塊,因此總通訊獨立於 GPU 數量。 PyTorch 的 DistributedDataParallel 将此通信与后向传递重叠,为早期层触发梯度同步,而后面的层仍在计算,隐藏了大部分网络延迟。

掌握數據並行性

資料並行性透過在多個 GPU 上複製模型來更快地訓練一個模型,每個 GPU 處理資料批次的不同部分。這是一種主力技術,可以讓團隊擴展到數十或數千個加速器。資料並行性是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。为了建立深入的理解,请将数据并行性视为一种操作模型,而不是单一功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。

在實踐中,使用資料並行性的強大團隊根據可靠性和成本優化架構、資料和基礎架構選擇。他們記錄明確的成功標準,根據實際數據和工作流程進行測試,並根據觀察到的失敗模式而不是一次性基準測試勝利進行迭代。這就是理論理解轉變為跨產品、政策和營運的持久能力的地方。

多年來,架構決策決定著效能和營運成本。同時,優化一個基準測試可以隱藏更廣泛的系統弱點。最具彈性的方法是將實驗速度與治理規則結合:運行試點、捕獲證據、發布決策日誌,並隨著模型行為、使用者期望和監管要求的發展不斷更新保障措施。

戰略影響

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

多年來,架構決策決定著效能和營運成本。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

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

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

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

更好的工程選擇可以減少生產中的可靠性事故。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

數據並行的未來

純資料並行性越來越多地與分片和模型並行性相結合,形成針對萬億參數模型的混合「nD 並行性」策略。期望更智能的梯度压缩、异步和重叠通信以及拓扑感知的全归约,利用节点内的快速 NVLink 和跨节点的较慢的 InfiniBand。隨著叢集的成長,降低通訊與運算的比率仍然是保持數千個 GPU 繁忙的核心工程挑戰。

現實世界的實施

使用 PyTorch DistributedDataParallel 在一台服务器的 8 个 GPU 上训练 ResNet 图像分类器,每个 GPU 处理 256 个图像批次中的 32 个。

使用 Horovod 在數百個 GPU 上擴展 BERT 預訓練,使用環 all-reduce 來同步每個步驟的梯度。

在多節點叢集上微調推薦模型,其中每個節點處理不同的使用者互動分片。

使用 TensorFlow 的 MirroredStrategy 在單一工作站上的多個 GPU 上傳播視覺模型的訓練,只需最少的程式碼變更。

實施模式

數據並行實踐

使用 PyTorch DistributedDataParallel 在一台服务器的 8 个 GPU 上训练 ResNet 图像分类器,每个 GPU 处理 256 个图像批次中的 32 个。

使用 PyTorch DistributedDataParallel 在一台服务器中的 8 个 GPU 上训练 ResNet 图像分类器,每个 GPU 处理 256 个图像批次中的 32 个。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

數據並行實踐

使用 Horovod 在數百個 GPU 上擴展 BERT 預訓練,使用環 all-reduce 來同步每個步驟的梯度。

使用Horovod在数百个GPU上扩展BERT预训练,使用ring all-reduce来同步每一步的梯度当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。

數據並行實踐

在多節點叢集上微調推薦模型,其中每個節點處理不同的使用者互動分片。

在多节点集群上微调推荐模型,其中每个节点处理不同的用户交互分片 团队在预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时通常会获得更好的结果。

數據並行實踐

使用 TensorFlow 的 MirroredStrategy 在單一工作站上的多個 GPU 上傳播視覺模型的訓練,只需最少的程式碼變更。

使用 TensorFlow 的 MirroredStrategy 在單一工作站上的多個 GPU 上傳播視覺模型的訓練,只需最少的程式碼變更。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

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

!

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

!

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

實施路線圖

1

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

在實施之前定義延遲、品質和成本目標。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

2

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

在實際負載和資料條件下進行基準測試。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

3

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

儀器監控錯誤、漂移和使用者影響。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

4

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

在擴展之前準備回滾和事件回應路徑。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

不斷探索