Overview of JobSet features
mainJobSet is a Kubernetes-native API designed to manage a group of Kubernetes Jobs as a single unit. It is primarily used for deploying HPC (e.g., MPI) and AI/ML training workloads (PyTorch, Jax, TensorFlow, etc.).
Key capabilities include:
- Multi-template jobs: Specify different pod templates for different groups of pods (e.g., separate templates for a leader, workers, and parameter servers) within a single JobSet.
- Automatic networking: Automatically configures and manages headless services using IndexedJobs to provide stable pod hostnames for distributed training.
- Configurable failure policies: Define how the JobSet should react to job failures. You can specify a maximum number of restarts or use the extended failure policy API (v0.6.0+) to handle different error types differently.
- Configurable success policies: Define when a JobSet is considered complete by targeting specific
ReplicatedJobsusingAnyorAlloperators. - Exclusive Placement: Use annotations to request a 1:1 mapping between a child job and a topology domain (like a rack or zone), ensuring all pods in that job are colocated and exclusive to that domain.
- Startup Sequencing: (v0.6.0+) Define a startup order for
ReplicatedJobsto support patterns like the "leader-worker" paradigm, ensuring the leader is running before workers attempt to connect. - Kueue Integration: (v0.2.3+ for JobSet, v0.6.0+ for Kueue) Supports oversubscription and multi-tenancy via Kueue.