Skip to content

Run a job

A job is one container run on one or more GPUs of one cluster, under one plan, with a time limit. This page covers what the container needs, how storage is mounted, and how each plan behaves.

The image

Any OCI image that runs on Linux x86_64 with CUDA 12.4 or later. We pull from public registries and from private registries you have added credentials for in the console. The image is pulled once per node and cached for 7 days. Images larger than 40 GB slow down your start time noticeably.

The container runs as the user in the image. It gets the NVIDIA runtime, the GPUs you asked for, and nothing else from the host.

Resources

You choose a GPU count from 1 to 8. Each GPU comes with 12 CPU cores, 240 GB of system memory and a proportional share of local NVMe. Asking for 8 GPUs gives you the full rack: 96 cores, 2 TB memory, 30 TB local NVMe, and the entire NVLink fabric.

Multi GPU jobs on C1 always land on the same node. There is no cross node placement in V1 because there is one node.

Storage

Three mounts are present in every job.

/scratch is local NVMe, wiped when the job ends. Fast. Use it for checkpoints during a run and copy out what you want to keep.

/shared is the shared filesystem for your team. It persists for the length of your reservation plus 7 days, or 30 days after your last on demand job. Quota is 5 TB by default, more on request.

/secrets holds files you registered in the console, mounted read only.

Plans

On demand starts when a GPU is free, usually within 2 minutes on C1. Billed per minute from container start to container exit, 1 minute minimum. Never preempted.

Reserved runs on GPUs your team holds. Starts immediately. The reservation is billed for its term whether or not you use it. See reserved capacity.

Batch runs on GPUs that are reserved by someone else but idle, or on demand GPUs nobody is using. It is preempted with 60 seconds of notice, delivered as SIGTERM, when the owner needs the capacity. Checkpoint to /shared often. Billed per minute at the batch rate.

Limits

max_minutes is required and capped at 10,080 minutes, which is 7 days. When the limit is reached the job gets SIGTERM, then SIGKILL 60 seconds later. Reserved jobs can set max_minutes up to the end of the reservation.

Exit codes and retries

A job ends succeeded when the container exits 0 and failed otherwise. Preempted batch jobs end preempted and are not retried unless you set retry_on_preempt: true, in which case they requeue at the front of the batch line.

Example

bash
curl -s https://api.racksystems.cloud/v1/jobs \
  -H "Authorization: Bearer $RACK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "cluster": "c1",
    "image": "ghcr.io/yourlab/eval:2026.09",
    "command": ["python", "eval.py", "--out", "/shared/eval/run-14"],
    "gpus": 1,
    "plan": "batch",
    "max_minutes": 720,
    "retry_on_preempt": true
  }'

RACK SYSTEMS, us-west. Console and API access is by invitation during preview.