近年來, 大多數出現在頂級人工智能會議上的模型都是在多個 GPU 上訓練的, 特別是隨著基于 Transformer 的語言模型的提出。當研究人員和工程師開發人工智能模型時, 分布式訓練無疑是一種常見的做法。傳統的單 機單卡模式已經無法滿足超大模型進行訓練的要求,這一趨勢背后有幾個原因。
如今, 我們接觸到的模型可能太大, 以致于無法裝入一個 GPU,而數據集也可能大到足以在一個 GPU 上訓 練上百天。這時, 只有用不同的并行化技術在多個 GPU 上訓練我們的模型, 我們才能完成并加快模型訓練, 以 追求在合理的時間內獲得想要的結果。因此,我們需要進行單機多卡、甚至是多機多卡進行大模型的訓練。
而利用 AI 集群, 使深度學習算法更好地從大量數據中訓練出性能優良的大模型是分布式機器學習的首要目 標。為了實現該目標, 一般需要根據硬件資源與數據/模型規模的匹配情況, 考慮對計算任務、訓練數據和模型 進行劃分,進行分布式存儲和分布式訓練。
分布式系統由多個軟件組件組成, 在多臺機器上運行。例如, 傳統的數據庫運行在一臺機器上。隨著數據量 的爆發式增長, 單臺機器已經不能為企業提供理想的性能。特別是在雙十一這樣的網絡狂歡節, 網絡流量會出 乎意料的大。為了應對這種壓力, 現代高性能數據庫被設計成在多臺機器上運行, 它們共同為用戶提供高吞吐 量和低延遲。
分布式系統示例
分布式系統的一個重要評價指標是可擴展性。例如, 當我們在 4 臺機器上運行一個應用程序時, 我們自然希望該應用程序的運行速度能提高 4 倍。然而, 由于通信開銷和硬件性能的差異, 很難實現線性提速。因此, 當我 們實現應用程序時, 必須考慮如何使其更快。良好的設計和系統優化的算法可以幫助我們提供良好的性能。有 時,甚至有可能實現線性和超線性提速。總訓練速度可以用如下公式簡略估計:
總訓練速度 ∝ 單設備計算速度 × 計算設備總量 × 多設備加速比
其中, 單設備計算速度主要由單塊計算加速芯片的運算速度和數據 I/O 能力來決定, 對單設備訓練效率進行優 化, 主要的技術手段有混合精度訓練、算子融合、梯度累加等; 分布式訓練系統中計算設備數量越多, 其理論峰 值計算速度就會越高, 但是受到通訊效率的影響, 計算設備數量增大則會造成加速比急速降低; 多設備加速比 則是由計算和通訊效率決定, 需要結合算法和網絡拓撲結構進行優化, 分布式訓練并行策略主要目標就是提升 分布式訓練系統中的多設備加速比。
分布式訓練需要多臺機器/GPU。在訓練期間, 這些設備之間會有通信。為了更好地理解分布式訓練, 有幾個重要的術語需要我們了解清楚。
讓我們假設我們有 2 臺機器(也稱為節點),每臺機器有 4 個 GPU,參考上圖。當我們在這兩臺機器上初始 化分布式環境時,我們基本上啟動了 8 個進程(每臺機器上有 4 個進程),每個進程被綁定到一個 GPU 上。在初始化分布式環境之前, 我們需要指定主機(主地址) 和端口(主端口)。在這個例子中, 我們可以讓主 機為節點 0,端口為一個數字, 如 29500。所有的 8 個進程將尋找地址和端口并相互連接, 默認的進程組將被創 建。默認進程組的 world size 為 8,細節如下表。
進程組示例
我們還可以創建一個新的進程組。這個新的進程組可以包含任何進程的子集。例如, 我們可以創建一個只 包含偶數進程的組,如下表所示:
在進程組中,各進程可以通過兩種方式進行通信,下圖中展示了部分進程組中進程通信示例。
進程組中進程通信示例
目前的大語言模型都采用了分布式訓練架構完成訓練。GPT-3 的訓練全部使用 NVIDIA V100 GPU 。OPT 使 用了 992 塊 NVIDIA A100 80G GPU,采用全分片數據并行 (Fully Shared Data Parallel) 以及 Megatron-LM 張量并 行 (Tensor Parallelism),整體訓練時間將近 2 個月。BLOOM 模型的研究人員則公開了更多在硬件和所采用的系 統架構方面的細節。該模型的訓練一共花費 3.5 個月, 使用 48 個計算節點, 每個節點包含 8 塊 NVIDIA A100 80G GPU (總計 384 個 GPU),并且使用 4*NVLink 用于節點內部 GPU 之間通信, 節點之間采用四個 Omni-Path 100 Gbps 網卡構建的增強 8 維超立方體全局拓撲網絡進行通信。LLaMA 模型訓練給出了不同參數規模的總 GPU 小 時數。LLaMA 模型訓練采用 A100-80GB GPU,LLaMA-7B 模型訓練需要 82432 GPU 小時, LLaMA- 13B 模型訓 練需要 135168 GPU 小時, LLaMA-33B 模型訓練花費了 530432 GPU 小時, 而 LLaMA-65B 模型訓練花費則高達 1022362 GPU 小時。由于 LLaMA 所使用的訓練數據量遠超 OPT 和 BLOOM 模型, 因此, 雖然模型參數量遠小 于上述兩個模型,但是其所需計算量仍然非常驚人。
通過使用分布式訓練系統, 大語言模型訓練周期可以從單計算設備花費幾十年, 縮短到使用數千個計算設 備花費幾十天就可以完成。然而, 分布式訓練系統仍然需要克服計算墻、顯存墻、通信墻等多種挑戰, 以確保集 群內的所有資源得到充分利用,從而加速訓練過程并縮短訓練周期。
計算墻和顯存墻源于單計算設備的計算和存儲能力有限, 與模型對龐大計算和存儲需求之間存在矛盾。這個問 題可以通過采用分布式訓練方法來解決, 但分布式訓練又會面臨通信墻的挑戰。在多機多卡的訓練中, 這些問 題逐漸顯現。隨著大模型參數的增大, 對應的集群規模也隨之增加, 這些問題變得更加突出。同時, 在大型集群 進行長時間訓練時,設備故障可能會影響或中斷訓練過程,對分布式系統的問題性也提出了很高要求。
本文鏈接:http://www.tebozhan.com/showinfo-26-15340-0.html大模型分布式并行技術--分布式系統
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: Flex 布局項目實戰,好像沒那么難!
下一篇: 12個程序員必知必備的Git命令