技術指南

用於 AI 訓練集群的 Slurm

Slurm 是一款開源工作負載管理器,可在高效能運算叢集上調度並運行作業,它已成為大型 AI 訓練的預設選擇。

概述

Slurm 是一款開源工作負載管理器,可在高效能運算叢集上調度並運行作業,它已成為大型 AI 訓練的預設選擇。這很重要,因為它可以在數千個 GPU 上可靠地分配大量訓練運行。

AI 訓練集群的 Slurm 是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。

深入探討

Slurm(用於資源管理的簡單 Linux 實用程式)起源於超級運算,現在為世界上許多最大的人工智慧訓練叢集提供支援。使用者使用 sbatch 提交批次腳本,使用 --gres=gpu:8 等指令請求節點和 GPU 等資源,以及 Slurm 佇列、優先權並啟動工作。它的 srun 啟動器在節點之間產生協調的進程,這與 PyTorch DDP 和 NCCL 等分散式框架自然配對。 Slurm 追蹤資源核算,實施公平共享和分區限制,並處理回填調度以將小作業放入間隙中。對於前緣模型訓練,團隊依靠 Slurm 來管理數千個 GPU,在節點故障後從檢查點重新啟動,並為長時間的多週運行保留專用容量。

技術洞察

Slurm 控制器守護程式 (slurmctld) 會做出排程決策,而每個節點上的 slurmd 代理程式啟動任務並報告狀態。通用資源 (GRES) 外掛程式追蹤 GPU,以便作業明確要求它們。 srun 設定分散式訓練庫讀取的環境變數(排名、世界大小、主位址)以引導 NCCL 通訊。回填調度可以讓較短的作業儘早運行,只要它們不延遲較高優先順序的預留即可,從而保持較高的利用率。

掌握 AI 訓練集群的 Slurm

Slurm 是一款開源工作負載管理器,可在高效能運算叢集上調度並運行作業,它已成為大型 AI 訓練的預設選擇。這很重要,因為它可以在數千個 GPU 上可靠地分配大量訓練運行。 AI 訓練集群的 Slurm 是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。為了建立深入的理解,請將 Slurm for AI Training Clusters 視為一種操作模型,而不是單一功能:定義期望的結果,澄清假設,並將系統可以可靠地完成的任務與仍需要專家判斷的任務分開。

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

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

戰略影響

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

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

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

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

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

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

AI 訓練集群 Slurm 的未來

Slurm 繼續添加雲端爆發、透過 Pyxis 和 Enroot 的容器支援以及更嚴格的 GPU 感知功能。隨著 AI 叢集擴展到超過 100,000 個 GPU,預計會有更強的容錯能力、自動檢查點重啟整合以及在故障後調整大小的彈性作業。許多組織現在在 Kubernetes 旁邊或之下運行 Slurm,混合調度程序旨在將 HPC 式的效率與雲端原生的靈活性相結合,以實現更大規模的訓練運行。

現實世界的實施

前沿實驗室使用請求數百個節點的單一 sbatch 腳本在數千個 GPU 上啟動了為期數週的訓練。

一名研究人員提交「srun --gres=gpu:8」以在一個節點上取得 8 個 GPU 來進行 PyTorch DDP 實驗。

回填調度將一個簡短的評估作業插入空閒 GPU,同時大量保留的訓練運行等待開始。

節點在運作中失敗後,Slurm 會重新排隊作業,並從最新的檢查點恢復,而不是重新開始。

實施模式

Slurm 的 AI 訓練集群實踐

前沿實驗室使用請求數百個節點的單一 sbatch 腳本在數千個 GPU 上啟動了為期數週的訓練。

前沿實驗室使用單一批次腳本在數千個 GPU 上啟動了為期數週的訓練,請求數百個節點。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

Slurm 的 AI 訓練集群實踐

一名研究人員提交「srun --gres=gpu:8」以在一個節點上取得 8 個 GPU 來進行 PyTorch DDP 實驗。

研究人員提交「srun --gres=gpu:8」以在一個節點上取得 8 個 GPU 來進行 PyTorch DDP 實驗。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

Slurm 的 AI 訓練集群實踐

回填調度將一個簡短的評估作業插入空閒 GPU,同時大量保留的訓練運行等待開始。

回填調度將一個簡短的評估作業插入空閒 GPU,同時大量預留的訓練運行等待開始。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並追蹤一段時間內的生產力增益和錯誤成本時,通常會獲得更好的結果。

Slurm 的 AI 訓練集群實踐

節點在運作中失敗後,Slurm 會重新排隊作業,並從最新的檢查點恢復,而不是重新開始。

節點在運作中發生故障後,Slurm 會重新排隊作業,並從最新的檢查點恢復,而不是重新開始。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

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

!

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

!

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

實施路線圖

1

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

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

2

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

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

3

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

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

4

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

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

不斷探索