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 集成,支持集群超分配、多租户和资源共享。

相关

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