用於 AI 訓練集群的 Slurm
Slurm 是一款開源工作負載管理器,可在高效能運算叢集上調度並運行作業,它已成為大型 AI 訓練的預設選擇。
概述
It matters because it reliably distributes massive training runs across thousands of GPUs.
深入探討
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 繼續添加雲端爆發、透過 Pyxis 和 Enroot 的容器支援以及更嚴格的 GPU 感知功能。隨著 AI 叢集擴展到超過 100,000 個 GPU,預計會有更強的容錯能力、自動檢查點重啟整合以及在故障後調整大小的彈性作業。許多組織現在在 Kubernetes 旁邊或之下運行 Slurm,混合調度程序旨在將 HPC 式的效率與雲端原生的靈活性相結合,以實現更大規模的訓練運行。
現實世界的實施
前沿實驗室使用請求數百個節點的單一 sbatch 腳本在數千個 GPU 上啟動了為期數週的訓練。
一名研究人員提交「srun --gres=gpu:8」以在一個節點上取得 8 個 GPU 來進行 PyTorch DDP 實驗。
回填調度將一個簡短的評估作業插入空閒 GPU,同時大量保留的訓練運行等待開始。
節點在運作中失敗後,Slurm 會重新排隊作業,並從最新的檢查點恢復,而不是重新開始。
風險與防護欄
優化一項基準測試可以隱藏更廣泛的系統弱點。
基礎設施和維護成本常常被低估。
隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。
實施路線圖
在實施之前定義延遲、品質和成本目標。
在實際負載和資料條件下進行基準測試。
儀器監控錯誤、漂移和使用者影響。
在擴展之前準備回滾和事件回應路徑。
不斷探索
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Slurm for AI Training Clusters quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
常見問題
What is Slurm for AI Training Clusters?
Slurm 是一款開源工作負載管理器,可在高效能運算叢集上調度並運行作業,它已成為大型 AI 訓練的預設選擇。這很重要,因為它可以在數千個 GPU 上可靠地分配大量訓練運行。
使用者通常使用什麼指令向 Slurm 提交批次作業?
sbatch 將描述作業的資源和指令的批次腳本提交到 Slurm 佇列。
Slurm 作業如何請求 GPU?
通用資源 (GRES) 系統允許作業明確要求 GPU,例如 --gres=gpu:8。
哪個 Slurm 元件做出中央調度決策?
slurmctld 是調度作業的控制器守護進程,而 slurmd 在每個節點上運行以啟動任務。
為什麼 srun 能夠與 PyTorch DDP 等分散式訓練框架完美搭配?
srun 跨節點啟動同步任務,並提供分散式庫用於引導的排名和主位址資訊。
Slurm中回填調度的目的為何?
回填透過將較小的作業放入調度間隙中來提高利用率,只要它們不推回保留的作業即可。