成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化 精華

發布于 2024-6-19 11:05
瀏覽
1收藏

一、背景

我們之前詳細介紹過在千卡和萬卡 GPU 集群中預訓練 LLM 的挑戰,其簡單來說可以總結為幾點:1. 優化分布式策略,提升 MFU;2. 異步 Checkpointing,增加 Checkpointing 頻率,減少無效計算;3. 完善的故障診斷及任務恢復機制;4. 監控和 Profiling 方案。

然而,在整個 LLM 的開發周期中,除了預訓練外還有很多其他階段,比如數據準備,微調以及模型評估等,如下圖 Figure 1 所示。這里我們介紹一篇上海 AI Lab 等團隊的工作,其從整個 LLM 集群的角度來揭示大規模 LLM GPU 集群與傳統 DL 集群的差異,以及相應的優化工作。

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

對應的論文為:[2403.07648] Characterization of Large Language Model Development in the Datacenter。

二、摘要

大型語言模型 (LLM) 的表現令人印象深刻,然而,高效利用大規模集群資源開發 LLM 并非易事。因為 LLM 往往面臨許多挑戰,例如頻繁的硬件故障、復雜的并行化策略和資源利用率不平衡。本文中,作者追蹤了內部 Acme GPU 集群為期 6 個月的工作負載,并進行了深入的分析。具體來說,作者首先將 LLM 與之前傳統 LLM 的工作負載進行對比,并揭示了針對 LLM 系統的潛在機會。此外,作者還介紹了相關的系統:(1)容錯預訓練,涉及 LLM 的故障診斷和自動恢復來增強容錯能力。(2)評估中的調度解耦,通過分解和調度優化實現及時的性能反饋。

三、引言

3.1 集群配置

作者的 Acme 中包含 2 個 GPU 集群,都是單節點包含 8 個 NVIDIA A100 SXM 80GB GPU 以及 2 個 Intel Xeon Platinum 8358P CPU,并且都通過 NVLink + NVSwitch 實現全互聯。

  • Seren 集群建設比較早,單節點只用 1 個 200Gbps 高速 IB 網卡,Seren 集群總共包含 286 個節點,總共 2288 個 A100 GPU;(PS:機器之間沒有高速網絡互聯,感覺不太適合大規模分布式訓練,常見解決方案為 4*200Gbps 或 8*200Gbps)
  • Kalos 集群比較新,單節點使用 5 個 200Gbps 高速 IB 網卡,其中 4 個用于后向的 GPU 傳輸,1 個專用于高性能的存儲。總共 302 個節點,2416 個 A100 GPU。?

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

Seren 和 Kalos 兩個集群都是用于訓練場景的,不涉及任何的 Serving 任務。

3.2 Acme Tracing

作者追蹤了兩個集群從 2023.03 到 2023.08 之間共 6 個月的任務,Seren 總共包含 368K 個 CPU 任務,664K 個 GPU 任務;Kalos 包含了 42K 個 CPU 任務和 20K 個 GPU 任務。收集的數據源主要包含 4 個部分:

  • 任務信息:主要包括任務調度相關信息,比如提交時間、啟動時間、結束時間,以及最終的狀態信息,比如完成、失敗、取消,以及相關的資源信息等,比如 CPU、GPU、Memory 等。
  • 硬件監控數據:比較 CPU、GPU 利用率,內存、顯存占用,網絡占用,以及電源相關信息。
  • 運行時日志:主要是任務運行中 stdout,stderr 信息,以及 debug 信息等。
  • 剖析數據:主要是使用 DCGM 等工具剖析的細粒度數據。

3.3 GPU 利用率

對于大規模 LLM 預訓練任務而言,其往往需要大量 GPU,任何的 GPU 計算和 NCCL 通信都會占用 GPU,導致 GPU Utilization 很高,往往能達到平均 95% 以上。因此,其往往導致整個 GPU 集群的 GPU Utilization 很高,需要更細力度的監控指標來顯示 GPU 的利用情況。

3.3.1 GPU Utilization

對應 DCGM 的 DCGM_FI_PROF_GR_ENGINE_ACTIVE,表示在一個時間間隔內 Graphics 或 Compute 引擎處于 Active 的時間占比。Active 時間比例越高,意味著 GPU 在該周期內越繁忙。該值比較低表示一定沒有充分利用 GPU,比較高也不意味著已經充分利用 GPU。如下圖所示,表示幾個 GPU 的 Utilization 到了 80%-90% 左右:

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

3.3.2 GPU SM Active

對應 DCGM 的 DCGM_FI_PROF_SM_ACTIVE,表示一個時間間隔內,至少一個 Warp 在一個 SM 上處于 Active 的時間占比,該值表示所有 SM 的平均值,對每個 Block 的線程數不敏感。該值比較低表示一定未充分利用 GPU。如下為幾種 Case(假設 GPU 包含 N 個 SM):

  • Kernel 在整個時間間隔內使用 N 個 Block 運行在所有的 SM 上,對應 100%。
  • Kernel 在一個時間間隔內運行了 N/5 個 Block,該值為 20%。
  • Kernel 有 N 個 Block,在一個時間間隔內只運行了 1/4 時間,該值為 25%。

如下圖所示為幾個 GPU 的 SM Active,可見只有 60% 左右,還有一定提升空間:

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

3.3.3 GPU SM Occupancy

對應 DCGM 的 DCGM_FI_PROF_SM_OCCUPANCY,表示一個時間間隔內,駐留在 SM 上的 Warp 與該 SM 最大可駐留 Warp 的比例。該值表示一個時間間隔內的所有 SM 的平均值,該值越高也不一定代表 GPU 使用率越高。

如下圖所示為幾個 GPU 的 SM Occupancy,只有 20% 多:

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

3.3.4 實驗

如下圖所示,我們在 T4 GPU(包含 40 個 SM) 上通過一個小的實驗來說明幾個指標的關系:

  • 當只有1 個 Block,1 個 Thread時,GPU Util 也是 100%,因為 GPU 一直在占用,此時 40 個 SM 中只有 1 個一直 Active,所以 SM Active 為 2.5%。
  • 當有 40 個 Block,每個 Block 1 個 Thread時,GPU Util 為 100%,SM Active 也為 100%,因為每個 Block 都會占用一個 SM。
  • 當有 40 個 Block,每個 Block 128 個 Thread時,GPU Util 為 100%,SM Active 也為 100%,因為每個 Block 都會占用一個 SM。此時 SM Occupancy 到了 12.5%。?

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

四、數據中心刻畫

4.1 LLM 與傳統 DL 任務工作負載對比

如下圖 Table 2 所示為 3 個傳統 DL 任務(Philly、Helios、PAI)與 LLM 任務(Acme)的集群和任務信息:

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

更短的任務時間:如下圖 Figure 2(a) 所示為相關任務的 GPU 時間累積分布(Duration CDF)。可以看出,Seren 和 Kalos 中的 Duration 中位數為 2 分鐘,比其它集群短 1.7-7.2 倍。出現這個現象可能有幾方面的原因:

  • 硬件升級:比如 GPU,網絡升級,任務執行更快。
  • 資源濫用:用戶通常會申請過多的資源。
  • 額外關聯的工作負載:比如 LLM 開發 Pipeline 中通常會有很多小的評估任務。
  • 失敗率高:大約 40% 的任務失敗,完成的任務值只消耗了 20%-30% 的 GPU 資源。

兩極化的 GPU 利用率:如下圖 Figure 2(b) 所示為相關任務的 GPU 利用率累積分布(Utilization CDF),可以看出,Seren 和 Kalos 的 GPU 利用率中位數為 97% 和 99%,而 Philly 和 PAI 分布為 48% 和 4%。這可能是因為作者的 Seren 和 Kalos 集群中都是相似的 Transformer 類型的 LLM 任務,而 Philly 和 PAI 中有各種各樣的任務。此時再用 GPU Utilization 作為利用率指標意義已經不大。可以考慮更加細粒度的 SM Active。

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

高度差異化的工作負載分布:如下圖 Figure 3 所示,作者進一步探究了作業與 GPU 需求的關系。可以看出,LLM 的工作負載與傳統 DL 任務很不一樣,傳統 DL 集群通常依賴搶占機制,但是其對 LLM 集群可能不再合適,其相應的恢復開銷可能很大。

  • (a)對作業數量而言,所有集群類似,只有 7% 不到的作業需要超過 8 個 GPU。
  • (b)對于作業時間而言,差異很大,比如對于 Kalos 集群,大規模作業(超過 256 GPU)占據了 96% 以上的資源。?

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

4.2 工作負載類別

如下圖 Figure 4 所示,在 Seren 和 Kalos 集群中,一多半都是評估(Evaluation)任務,只有極少數的預訓練(Pretrain)任務,但是預訓練任務卻又占據了絕大部分的 GPU 時間,在 Kalos 集群尤其明顯。評估任務通常需要比較少的 GPU,不超過 4 個,預訓練通常需要超過 100 個 GPU。評估任務通常以 Batch 方式提交,對時效性要求也不高,可以利用碎片資源。

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

五、工作負載剖析

5.1 預訓練工作負載剖析

針對 LLM 預訓練,作者也開發了相應的分布式訓練框架 [2401.09149] InternEvo: Efficient Long-sequence Large Language Model Training via Hybrid Parallelism and Redundant Sharding,其包含 V1 和 V2 兩個版本,如下圖 Figure 10 所示為使用 2048 GPU 訓練 123B LLM 時的 SM Active:

  • V1:3D Parallelism,4PP,8PP,SM Active 中存在很多空隙,整體利用率不高。
  • V2:Hierarchical ZeRO 版本,每個 subgroup 包含 64 GPU,并且使用了重計算,其 SM Active 明顯提升。相比 V1 版本,任務提速 16%。?

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

如下圖 Figure 19 所示,1024 GPU 時也有類似結論:

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

如下圖 Figure 22 所示,作者也進一步評估了在 1024 GPU 上訓練 Mistral 7B MoE 時的 SM Active,可以看出,其相比 Dense 模型低了很多,主要是因為 MoE 中多了很多 all-to-all 操作,而作者使用的單個 IB NIC 導致其出現瓶頸:

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

5.2 評估工作負載剖析

如下圖 Figure 13 所示,針對每個評估任務,初始化階段都要加載模型和進行數據預處理,這個階段通常不需要 GPU 參與,導致此階段 GPU 的浪費。此外,獲得模型結果后還會有一定的 CPU 計算,此時 GPU 也會空閑。

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

六、異常分析

作者統計了兩個集群中的監控數據以及運行日志,以便分析異常。在 Kalos 集群中,作者收集 了 32,500 個任務,其中 31,293(96.3%)個推理任務(比如評估),647(2.0%)個預訓練任務和調試任務(1.7%)。在 Seren 任務中,作者僅收集了 675 個訓練任務。

6.1 異常類別

如下圖 Table 3 所示為具體的錯誤類型,總共可以分為 3 類:

  • Infrastructure:主要是計算平臺和遠程存儲的問題。主要發生在作業執行中,其會影響訓練進度。

此種異常失敗的作業通常使用了大量 GPU,并且恢復的代價往往比較高。雖然失敗數量上只占了 11%,但GPU 資源(GPU 時間)上占了 82%。并且大部分是預訓練任務,可能會多次遇到硬件故障,例如GPU 問題(CUDAError、ECCError),NVLink 問題(NVLinkError)和網絡問題(NCCLRemoteError、S3StoreError)。而其中的 NodeFailure 表示未知硬件問題導致的故障。解決這些問題需要細致的診斷工作,以查明根因。通常需要維護或更換有缺陷的硬件,然后重啟作業。

作者甚至提到了高溫可能導致的故障率增加,當預訓練時,機房溫度升高了 5 度,此外作者也發現大部分異常發生在 2023.07,是最熱的月份。

  • Framework:主要是幾種運行錯誤,比如 RuntimeError、ValueError、AttributeError,主要是 Tensor 操作、Shape 以及數據類型相關,或者一系列不符合預期的行為。通常發生在作業起始階段。
  • Script:通常是用戶編碼錯誤等,通過修改代碼解決。?

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

6.2 異常恢復

通常有三種場景需要重啟任務,一種是作業發生異常,另一種是訓練 loss 出現毛刺(loss 突然增加,有些會重新下降,有些不會),還有一種是作業卡住。重啟需要從最新的 Checkpoint 開始,也會導致訓練進度的回退;此外,在沒有自動重啟機制之前,都需要有人值班并手動重啟。如下圖 Figure 14 展示了早期的兩個預訓練任務,其中 104B 為原始訓練框架,123B 為優化后的訓練框架,允許在任務結束之前保持當前的狀態,相應進度回退也更少。

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

七、部署 LLM 系統

7.1 容錯預訓練

作者的容錯系統分 3 個關鍵模塊,如下圖 Figure 15 所示為其中的異常診斷和恢復過程:

  • Checkpointing:更頻繁的保存 Checkpoint,以便盡可能少的訓練回退。節點的 CPU 內存比較大,可以緩存多個 Checkpoint,作者會先將 Checkpoint 保存到內存中,然后使用一個獨立的線程進行定期的異步保存,可以極大降低 Checkpointing 開銷。通過每 30 分鐘保存一次,其 7B 到 123B 模型的保存開銷減少了 3.6-58.7 倍。
  • Diagnosis:通過一系列手段識別任務失敗的根因。通過規則匹配,向量檢索,以及使用 LLM Agent 等手段來識別錯誤的根因。可以識別 90% 的問題,大幅降低人工成本。
  • Recovery:通過一系列錯誤檢測發現異常節點,屏蔽并自動恢復任務。如果檢測是 Infrastructure 異常,則會執行一系列的異常檢測,比如使用兩輪 NCCL test 來識別 NVLinkError。?

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

7.2 針對評估的解耦調度

其主要動機就是前面介紹的,評估階段很多時間 GPU 都是空閑的,而評估任務又有很多,這導致了 GPU 資源的浪費。為此作者將相關組件解耦,以便提升 GPU 利用率:

剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化-AI.x社區

八、參考鏈接

  1. ??https://arxiv.org/abs/2403.07648??
  2. ??https://www.alibabacloud.com/help/zh/ack/ack-managed-and-ack-dedicated/user-guide/introduction-to-metrics??

本文轉載自 ??AI閑談??,作者: AI閑談

1
收藏 1
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 亚洲国产小视频 | 日韩成人免费在线视频 | 中文字幕 在线观看 | 一级黄色录像片子 | 天天搞天天搞 | 一级aaaa毛片 | 男女啪啪高潮无遮挡免费动态 | 亚洲在线久久 | 成人网av | 成av在线 | 有码在线 | 91精品国产91久久久久久最新 | 涩涩视频在线观看 | 国产成人综合网 | 久草.com | 天天天天天天操 | 日日日视频| 久久精品欧美一区二区三区不卡 | 欧美成视频在线观看 | 老司机狠狠爱 | 91在线视频播放 | 日本精品久久久久 | 亚洲一区二区精品 | 午夜影院在线观看免费 | 精品国产乱码久久久久久果冻传媒 | 国产精品91网站 | a级在线免费视频 | 成人午夜激情 | 日批免费观看 | 精品av久久久久电影 | 黄色片免费在线观看 | 亚洲狠狠爱| 精品国产乱码久久久久久丨区2区 | 精品一区二区三区中文字幕 | 亚洲a一区 | 国产精品国产a | 久久久久久久久久久久久久av | 久久av一区二区三区 | av一二三区 | 国产成人亚洲精品 | 精品久久久久香蕉网 |