技術指南

模型和管道並行性

當模型太大而無法容納在一個 GPU 上時,模型和管道並行性會將模型本身分割到不同的裝置上。

概述

當模型太大而無法容納在一個 GPU 上時,模型和管道並行性會將模型本身分割到不同的裝置上。這使得訓練具有數千億參數的巨型語言模型在物理上成為可能。

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

深入探討

模型並行性將單一模型劃分到多個 GPU 上,因此沒有一個裝置需要保存所有權重。主要有兩種口味。張量(層內)平行性將層內的數學拆分,例如在 GPU 之間切分大型矩陣乘法,每個 GPU 計算部分輸出。管道(層間)並行性將不同的連續層分配給不同的 GPU,因此層塊 1 位於 GPU 0 上,塊 2 位於 GPU 1 上,依此類推,激活像裝配線一樣向前傳遞。簡單管線的挑戰是「泡沫」:當 GPU 0 在第一批中工作時,下游 GPU 閒置。管線將每個批次分成微批次,因此所有階段都保持忙碌,從而顯著提高利用率。

技術洞察

張量並行性(如在 NVIDIA Megatron-LM 中)按列或行拆分權重矩陣,並使用 all-reduce 重新組合部分結果,從而在快速 NVLink 節點內保持通訊。管道並行性(GPipe、PipeDream)將批次劃分為微批處理,這些微批處理以交錯的時間表流經各個階段,從而縮短了空閒「泡沫」時間。兩者通常分層在一起,在節點內使用張量並行性,在節點之間使用管道並行性。

掌握模型和管道並行性

当模型太大而无法容纳在一个 GPU 上时,模型和管道并行性会将模型本身分割到不同的设备上。这使得训练具有数千亿参数的巨型语言模型在物理上成为可能。模型和管道并行性是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。為了建立深入的理解,請將模型和管道並行性視為一種操作模型,而不是單一功能:定義所需的結果,澄清假設,並將系統可以可靠地執行的操作與仍需要專家判斷的操作分開。

在实践中,强大的团队使用模型和管道并行性根据可靠性和成本优化架构、数据和基础设施选择。他們記錄明確的成功標準,根據實際數據和工作流程進行測試,並根據觀察到的失敗模式而不是一次性基準測試勝利進行迭代。這就是理論理解轉變為跨產品、政策和營運的持久能力的地方。

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

戰略影響

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

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

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

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

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

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

模型和管道並行性的未來

框架越来越自动化地解决决定如何跨设备划分模型的难题,使用分析和搜索来平衡计算和通信。預計張量、管道和數據並行性(3D 並行性)會更緊密地集成,更智能的微批量調度將幾乎消除管道泡沫,以及具有更快互連的硬件,因此跨芯片分割單層對於更大的模型來說變得更便宜和更常規。

現實世界的實施

使用 NVIDIA Megatron-LM 訓練 GPT 風格的模型,它透過張量平行性在 GPU 上分割每個 Transformer 層的注意力和前饋矩陣。

使用 GPipe 將巨型視覺或語言模型的不同層放置在單獨的加速器上,而微批處理則讓它們忙碌起來。

DeepSpeed 的管道引擎將數千億參數模型劃分為跨多個節點的階段。

將單一 8-GPU 伺服器內的張量並行性與跨多個伺服器的管道並行性相結合,以訓練對於一台機器來說太大的模型。

實施模式

實踐中的模型和管道並行性

使用 NVIDIA Megatron-LM 訓練 GPT 風格的模型,它透過張量平行性在 GPU 上分割每個 Transformer 層的注意力和前饋矩陣。

使用 NVIDIA Megatron-LM 訓練 GPT 式模型,該模型透過張量平行性在 GPU 上分割每個 Transformer 層的注意力和前饋矩陣。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

實踐中的模型和管道並行性

使用 GPipe 將巨型視覺或語言模型的不同層放置在單獨的加速器上,而微批處理則讓它們忙碌起來。

使用 GPipe 將巨型視覺或語言模型的不同層放置在單獨的加速器上,而微批處理讓他們很忙。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會得到更好的結果。

實踐中的模型和管道並行性

DeepSpeed 的管道引擎將數千億參數模型劃分為跨多個節點的階段。

DeepSpeed 的管道引擎將數千億參數模型劃分為跨多個節點的階段。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並追蹤一段時間內的生產力提升和錯誤成本時,通常會獲得更好的結果。

實踐中的模型和管道並行性

將單一 8-GPU 伺服器內的張量並行性與跨多個伺服器的管道並行性相結合,以訓練對於一台機器來說太大的模型。

將單一 8-GPU 伺服器內的張量並行性與跨多個伺服器的管道並行性相結合,以訓練對於一台機器來說太大的模型。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並追蹤一段時間內的生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

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

!

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

!

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

實施路線圖

1

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

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

2

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

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

3

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

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

4

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

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

不斷探索