kubernetes-sigs/jobset

JobSet: a k8s native API for distributed ML training and HPC workloads

解決的問題

JobSet 提供了一種 Kubernetes 原生的方式,將一組 Job 作為單一單位進行管理。它解決了在 Kubernetes 上部署分散式 AI/ML 訓練工作負載(如 PyTorch、Jax 和 TensorFlow)以及 HPC 應用程式(如 MPI)的困難,這些工作通常需要穩定的網路端點、針對不同角色的特定 Pod 模板,以及協調的故障復原機制。

工作原理

JobSet 作為一個更高階的 API,負責協調多個 Kubernetes Job。它管理這些 Job 的生命週期,透過 IndexedJobs 確保 Pod 擁有穩定的主機名,並自動配置無頭服務以實現 Pod 之間的通訊。使用者可為不同角色(例如領導者與工作節點)定義不同的 Pod 模板,並控制整個群組的啟動順序以及成功/失敗策略。

適用對象

專為在 Kubernetes 集群上部署大規模分散式訓練或高效能運算工作負載的開發人員與平台工程師設計。

主要亮點

  • 多模板支援:為不同組的 Pod 定義不同的 Pod 模板,例如領導者、工作節點和參數伺服器。
  • 穩定網路:自動配置無頭服務,為 ML 和 HPC 框架所需的穩定 Pod 主機名提供支援。
  • 可自訂策略:設定特定的成功與失敗策略,以決定工作負載何時完成,或何時應從檢查點重新啟動整個集合。
  • 獨佔部署:確保子 Job 與拓撲域(如機架或區域)之間的一對一對映,使 Job 能獨佔存取本地資源。
  • 啟動順序控制:可設定 ReplicatedJobs 的啟動順序,支援領導者-工作節點模式。
  • 與 Kueue 集成:與 Kueue 集成,支援叢集超分配、多租戶和資源共用。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案