JobSet 的 Alauda Build

JobSet

JobSet 的 Alauda Build 基于 JobSet Kubernetes SIG 项目。
JobSet 是一个面向 Kubernetes 的原生 API,用于将一组 Kubernetes Jobs 作为单个单元进行管理。它为在 Kubernetes 上部署 HPC(例如 MPI)和 AI/ML 训练工作负载(PyTorch、JAX、TensorFlow 等)提供统一的 API。

主要组件和能力包括:

  • JobSet CRD:核心 API 资源(jobset.x-k8s.io/v1alpha2kind: JobSet),用于定义一组 ReplicatedJobs。每个 ReplicatedJob 都是一个 Job 模板,控制器会将其实例化为一个或多个 Kubernetes Jobs,从而允许不同的 Pod 模板(leader、workers、parameter servers 等)在同一个工作负载中共存。
  • 多模板 Jobs:可以在单个资源中建模不同的 Pod 组,因此像 leader/worker、driver/worker 或 parameter-server/worker 这类工作负载不再需要通过手动协调多个顶层 Jobs 来实现。
  • 自动 Headless Service 和稳定主机名:JobSet 会自动配置 headless Service,并使用 IndexedJobs 为每个 Pod 提供稳定的 DNS 主机名,为分布式训练框架(PyTorch DDP、Horovod、JAX、TensorFlow、MPI 等)提供可预测的网络标识。
  • 可配置的失败与成功策略:失败策略控制 JobSet 重启的次数以及不同失败类型的处理方式;当目标子集的 ReplicatedJobs 成功时,成功策略会将 JobSet 声明为完成,从而在有意义的工作完成后即可释放资源。
  • 启动顺序:可以配置启动策略,使 worker Jobs 在 leader(driver)Job 就绪后再启动,支持 leader/worker 模式,其中主进程必须先初始化,worker 才能连接。
  • 独占拓扑放置:通过注解,JobSet 可以强制子 Job 与拓扑域(例如机架或可用区)之间建立 1:1 映射,使子 Job 在该域内独占计算资源,以实现性能隔离。
  • 快速故障恢复:发生故障时,JobSet 可以快速重建子 Job。如果工作负载支持 checkpointing,则可在重启后从上次保存的 checkpoint 继续执行。reconciler 经过优化,即使在大规模场景下也能尽量减少对调度吞吐量的影响。
  • 与 Kueue 集成:JobSet 可与 Kueue 集成,用于批处理 AI/ML 工作负载的排队、多租户和资源共享。

在平台上安装,请参见 安装 JobSet

文档

JobSet 上游文档和相关资源: