Manage Jobs
This section describes how to configure jobs in NeMo Platform. The Jobs service is responsible for scheduling batch jobs, collecting telemetry and managing job results.
Execution Profiles
You can configure jobs to run on different hardware by specifying an execution profile. This allows you to define different compute resources and job execution backends for different job types and use cases.
An execution profile is defined by the following attributes:
- A profile name (
profile) - A compute provider (e.g.
cpuorgpu) - An execution backend (e.g.
docker,kubernetes_job,volcano_job)
By default, the NeMo Platform defines a default CPU and default GPU provider to launch CPU and GPU bound jobs.
You can configure multiple execution profiles to suit the shape of your compute environment. For example, if you have a compute environment with heterogeneous infrastructure (e.g., two types of GPU hardware such as A100 and H200), you can define a list of execution profiles as follows:
For full configuration details, see the platform configuration reference.
Default Execution Profiles
The NeMo Platform defines a default execution profile for each execution backend depending on the platform’s control plane. The default execution profile is used when no specific execution profile is specified for a job.
- Default CPU Execution Profile (
cpu): The default execution profile for CPU based jobs. - Default GPU Execution Profile (
gpu): The default execution profile for GPU based jobs.
You may configure the default execution profiles by updating the executor_defaults section of the jobs section of the platform configuration. The structure of the executor_defaults matches the configuration of the execution backend configuration.
Execution Backends
Execution backends are the containerized job execution systems that NeMo Platform jobs are scheduled to run on. Each execution backend is responsible for launching and managing the job containers, and the Jobs service communicates with the execution backend to schedule and manage jobs.
NeMo Platform currently supports the following execution backends:
- Docker (
docker) - Kubernetes Jobs (
kubernetes_job) - Volcano Jobs (
volcano_job)
Docker
The NeMo Platform supports Docker as an execution backend for CPU and GPU based jobs. When the shared GPU pool is configured (see below), Docker will use only the configured GPU devices and will not over-schedule jobs if there are not currently enough GPUs available.
Note: The NeMo Platform supports Docker-based job execution by default when running the NeMo Platform in quickstart mode, which requires no configuration.
If you are running GPU jobs with Docker, see GPU Configuration for information on configuring the shared GPU pool. This configuration is shared between the jobs and models services to prevent GPU resource conflicts.
Kubernetes Jobs
The NeMo Platform supports Kubernetes Jobs as an execution backend for CPU and GPU based jobs.
KAI Scheduler
KAI Scheduler is a Kubernetes scheduler for AI/ML workloads. You can direct Kubernetes Jobs to use KAI Scheduler by setting scheduler_name in the execution profile config, and by adding the required queue labels to the job and pod metadata.
See the KAI Scheduler documentation for more information on how to configure jobs with KAI Scheduler.
Volcano Jobs
The NeMo Platform supports Volcano Jobs as an execution backend for launching distributed GPU jobs.
Volcano Jobs are configured using the same configuration as Kubernetes Jobs, but with the following additional configuration:
queue: The Volcano queue to submit the job to.scheduler_name: The Volcano scheduler to use for the job.plugins: The Volcano plugins to use for the job.max_retry: The maximum number of retries for the job.enable_multi_node_networking: Enable multi-node networking injection. Sets annotations to trigger Kyverno policy mutations. This is only available if the platform is configured to use multi-node networking (see Multi-Node Networking).