核心概念
FreeRide是一個系統,旨在利用管道並行訓練中的閒置時間(即"泡沫")來執行附加的GPU工作負載(稱為側任務),從而提高GPU資源利用率並降低訓練成本,同時又不會對主要的管道訓練工作造成顯著影響。
摘要
本文提出了FreeRide系統,用於利用大規模語言模型(LLM)訓練中管道並行訓練過程中出現的閒置時間(即"泡沫")來執行附加的GPU工作負載(稱為側任務)。
首先,作者分析了管道並行訓練中出現的三種類型的泡沫:
- Type-A泡沫出現在每個epoch的開始和結束,由於操作之間的依賴關係造成。
- Type-B泡沫出現在每個epoch的中間,由於前向傳播(FP)和反向傳播(BP)操作的交錯造成。
- Type-C泡沫也出現在每個epoch的中間,由於BP操作通常比FP操作耗時更長造成。
作者觀察到,這些泡沫的持續時間從0.22秒到1.04秒不等,可用的GPU內存從3GB到20GB不等,具有不同的特徵。
為了利用這些泡沫來執行附加的GPU工作負載(側任務),FreeRide提供了兩種編程接口:
- 迭代接口:適用於可以自然地分解為小步驟的GPU工作負載,如模型訓練中的epoch。FreeRide提供了一個狀態機抽象,程序員只需實現狀態轉換函數即可。
- 命令式接口:適用於無法輕易分解為小步驟的GPU工作負載。FreeRide提供了透明的暫停和恢復機制。
FreeRide還包括以下組件:
- 自動側任務分析器:離線分析側任務的GPU內存消耗和每步耗時。
- 側任務管理器:根據側任務的特徵,將其分配到合適的GPU worker上,並在出現泡沫時啟動/暫停側任務。
- GPU資源限制機制:利用CUDA MPS限制側任務的GPU內存使用,並通過程序控制和框架強制機制限制GPU執行時間,以減少對主訓練工作的影響。
通過上述設計,FreeRide在執行模型訓練、圖分析和圖像處理等側任務的同時,平均可實現7.8%的成本節省,同時對主訓練工作的開銷僅為1.1%。
統計資料
管道並行訓練中的泡沫可佔總訓練時間的42.4%。
不同階段的泡沫持續時間從0.22秒到1.04秒不等。
不同階段的可用GPU內存從3GB到20GB不等。
引述
"泡沫可以佔LLM訓練時間的42.4%,是GPU資源利用不足的主要原因之一。"
"即使優化了訓練中的操作交錯,也無法消除訓練開始和結束時的泡沫。"
"利用泡沫執行附加工作可以提高資源利用率,但需要解決編程複雜度和資源競爭的挑戰。"