kubernetes-sigs/jobset

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

解决的问题

JobSet 提供了一个 Kubernetes 原生 API,用于将多个 Kubernetes Job 作为一个整体进行管理。它简化了分布式 AI/ML 训练工作负载(如 PyTorch、Jax 和 TensorFlow)以及 HPC 应用程序(如 MPI)的部署,这些工作负载通常需要多个 Pod 之间的协调、稳定的网络端点以及特定的故障恢复模式。

工作原理

JobSet 将分布式工作负载建模为一组 Kubernetes Job。它通过自动管理无头服务,为工作节点之间的通信提供稳定的 Pod 主机名。同时,用户可以为不同角色(例如领导者和工作节点)定义多个 Pod 模板,并根据可配置的成功和失败策略管理整个组的生命周期。

适用人群

在 Kubernetes 集群上部署大规模分布式 AI/ML 训练或 HPC 工作负载的开发人员和平台工程师。

主要亮点

  • 多模板支持:为不同组的 Pod 定义不同的 Pod 模板,例如领导者和参数服务器。
  • 稳定网络:自动配置无头服务和 IndexedJobs,确保分布式训练中 Pod 主机名的稳定性。
  • 可配置策略:自定义失败策略以从检查点自动重启,以及成功策略以高效释放资源。
  • 独占部署:确保子作业与拓扑域(如机架或区域)之间的一对一映射,实现独占资源访问。
  • 启动顺序控制:支持 Pod 的有序启动,支持领导者-工作节点等模式。
  • Kueue 集成:与 Kueue 集成,支持集群超分配、多租户和资源共享。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目