Empire AI Beta — Job Submission and QoS Overview

Created by Izabel Cavassim, Modified on Wed, 19 Aug at 12:56 PM by Izabel Cavassim

Beta GPU ENVIRONMENT

Empire AI Beta — Job Submission and QoS Overview

This guide explains how to submit jobs on Beta, how Beta QoS tiers affect cost and scheduling behavior, and which submission pattern to use for interactive work, quick validation, production training, and longer-running jobs.

No institutional partition in beta: Differently than Alpha, Beta does not use institutional partitions.


Environment overview

Beta serves as the primary GPU environment for B200-class workflows, including model training, large language model development, and other AI applications. The present GPU pool consists of 4 racks, each rack housing 72 nodes equipped with 4 GPUs per node, amounting to a total of 288 GPUs.



Find User Accounts & QoS tiers

Each user is associated with one or more accounts, which are established based on the projects they are part of. QoS tiers are assigned based on the user’s account and institutional affiliation. When submitting jobs, users must specify the account to be charged for the job. Run the following command on the login node to view your available accounts, partitions, and QoS tiers. 

sacctmgr show assoc user=$USER format=Account%25,Partition%20,QOS%60

Throughout this document, "YOUR_ACCOUNT" refers to the specific account associated with your user.

QoS pattern

The current submission pattern on Beta is to use "beta" partition followed by account (Project's code, check above) and select the QoS tier that matches the job type. 

WorkflowPattern
Batch jobsbatch --qos=<tier> ... job.sh
Interactive shell with direct launchsrun --partition=beta --account=YOUR_ACCOUNT --qos=interactive --gres=gpu:1 --time=01:00:00 --pty bash
Interactive allocation firstsalloc --partition=beta --qos=interactive --gres=gpu:1 --time=01:00:00
Example syntax note: In command examples, ... stands in for additional optional Slurm flags such as --time, --nodes, --cpus-per-task, --mem, or --requeue. Remove ... and replace it with the extra options you need, or omit it entirely if you do not need any additional flags.

QoS tiers

Every Beta job will run under a QoS tier. The tier controls scheduling priority, wall-time limit, GPU count limit, and SU billing behavior. Note that differently than Alpha, the base rate for Beta is 2 SU per GPU-hour (see link for more details).

QoSBest forWall timeGPU limitSU factor
testQuick validation and script checks2 hours4 GPUs, 1 node1.0x
interactiveLive GPU shell for debugging and setup2 hours4 GPUs, 1 session2.0x
standardDefault production jobs48 hours36 GPUs2.0x
longLonger cost-sensitive runs7 days36 GPUs1.0x
priorityDeadline-driven urgent work24 hours72 GPUs4.0x
burstSystem-assigned overflow mode after allocation exhaustion7 days32 GPUsFree / system-assigned
Every tier has a wall-time limit. No QoS tier gives unlimited runtime. If your training run may exceed the tier wall-time limit, use checkpointing and consider --requeue with a warning signal so you can resume cleanly on a later run.

Interactive methods

On Beta, interactive work can start with either srun or salloc. Both are valid, but they are useful in slightly different situations.

CommandWhat it doesBest for
srun --pty bashRequests resources and immediately launches an interactive shell on the compute nodeQuick GPU debugging sessions and short interactive checks
sallocRequests an allocation first, then lets you run one or more commands inside that allocationWorkflows where you want more control after the allocation starts, such as launching multiple commands or mixing shell work with explicit srun steps
srun and salloc examples

Direct interactive shell with srun

srun --partition=beta --qos=interactive --gres=gpu:1 --time=00:10:00 --pty bash

Check the interactive shell

nvidia-smi && echo interactive works && exit

Allocate first with salloc

salloc --partition=beta --qos=interactive --gres=gpu:1 --time=00:10:00

Then launch work inside the allocation

srun --pty bash
nvidia-smi
python smoke_test.py

GPU request patterns

Given that Beta has only one node type, use --gres=gpu:N when requesting for GPUs

GPU typeVRAMRequest pattern
B20080 GB--gres=gpu:N

Example jobs

The examples below illustrate Beta submission workflows and can be adapted to match your partition, job size, and runtime needs.

Interactive examples

Interactive GPU shell with srun

srun --partition=beta --account=YOUR_ACCOUNT --qos=interactive --gres=gpu:1 --time=00:10:00 --pty bash
nvidia-smi; hostname; exit

Interactive GPU shell with salloc + srun

salloc --partition=beta --account=YOUR_ACOUNT --qos=interactive --gres=gpu:1 --time=00:10:00
srun --pty bash

Interactive smoke test

nvidia-smi && echo interactive works && exit
Production training examples

Single-node training job

sbatch --partition=beta --account=YOUR_ACCOUNT --qos=standard --requeue --signal=B:SIGTERM@900 --gres=gpu:8 --time=24:00:00 train.sh

Multi-node training job

sbatch --partition=beta --qos=standard --requeue --signal=B:SIGTERM@900 --nodes=4 --gres=gpu:8 --time=2-00:00:00 train.sh

Long-running cost-sensitive job

sbatch --partition=beta --qos=long --requeue --signal=B:SIGTERM@900 --gres=gpu:8 --time=5-00:00:00 train.sh

Priority urgent run

sbatch --partition=beta --qos=priority --requeue --signal=B:SIGTERM@900 --gres=gpu:16 --time=12:00:00 train.sh
troubleshooting examples

B200 test job

sbatch --partition=beta --qos=test --gres=gpu:1 --time=00:30:00 --wrap="nvidia-smi; python smoke_test.py"

Array job

sbatch --partition=beta --qos=standard --array=1-100 --gres=gpu:1 --time=04:00:00 sweep.sh

Check your associations

sacctmgr show assoc user=$USER format=Partition%15,Account%20,QOS%60

Check completed and running jobs

sacct -u $USER -S today
squeue -u $USER

Check scheduling and fairshare

sprio -j <jobid>
sshare -u $USER -l

Requeue and checkpointing

If a run may exceed the wall-time limit, the recommended pattern is to combine checkpointing in your application with Slurm requeue eligibility and a warning signal before time-limit expiry. This is especially useful for standard, long, priority, and burst workflows.

FlagWhat it does
--requeueMakes the batch job eligible to be requeued
--signal=B:SIGTERM@900Sends a warning signal to the batch shell 900 seconds before wall time
--signal=SIGTERM@900Sends the warning signal directly to job steps when that pattern is needed

A useful mental model is that Slurm can restart the batch script, but it does not save model state for you. Your application still needs to save and reload checkpoints.

How to choose

If you need...Use...Why
A quick script validationtestLow cost, short wall time, intended for checking that a job works
A live shell on a GPU nodeinteractive with srun --pty bash or salloc followed by srunBest for debugging and quick interactive work
A normal training or inference jobstandardThe default production tier for most work
A cheaper but slower-to-start long runlongLower SU cost with lower scheduling priority
An urgent deadline-driven runpriorityHighest scheduling priority at higher SU cost

SU billing

SU = GPUs × Hours × SU For example, 4 GPUs for 10 hours on standard costs 80 SU, while the same job on priority costs 160 SU and on long costs 40 SU.

ScenarioCalculationCost
4 GPUs × 10h on standard4 × 10 × 2.080 SU
8 GPUs × 2h on test8 × 2 × 1.016 SU
8 GPUs × 24h on long8 × 24 × 1.0192 SU
8 GPUs × 12h on priority8 × 12 × 4.0384 SU

Monitoring

  • squeue -u $USER shows your currently queued and running jobs.
  • sacct -u $USER --format=JobID%10,JobName%20,QOS%12,AllocTRES%35,Elapsed,State -S today shows your recent job history from today, including job name, QoS, allocated resources, elapsed time, and state.
  • sacctmgr show assoc where user=$USER format=Account%20,QOS%60 lists the Slurm accounts and QoS tiers associated with your user.
  • sshare -u $USER -Ul shows your fairshare usage and priority information.
  • scancel JOBID cancels a job; replace JOBID with the numeric job ID you want to stop.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons

Feedback sent

We appreciate your effort and will try to fix the article