Troubleshooting and Best Practices¶
Below are some tips to help you get the most out of the HPC Scheduler.
Best Practices¶
Below a few tips to help you get the most out of the HPC Scheduler.
Submit Meaningful Job Names¶
Use names that identify the experiment.
Good:
ppo_seed_1
resnet_lr_1e3_seed_2
dataset_ablation_seed_0
Poor:
test
job
run
new
Use Realistic Runtime Limits¶
Example:
"max_runtime_hours": 4.0
Jobs exceeding their runtime limit are automatically terminated.
Runtime Limits Affect Opportunistic Scheduling
The requested runtime also affects how jobs can use spare cluster capacity.
Jobs requesting 24 hours or less can run opportunistically without being automatically preempted.
Jobs requesting more than 24 hours must be submitted as resumable if they are to run outside your Normal and Overflow allocation.
See Job Priorities and Scheduling Tiers for the full scheduling rules.
Save Outputs and Checkpoints Frequently¶
Long-running jobs should periodically save:
- checkpoints
- models
- metrics
- training progress
- other important state
to:
/workspace/output
For workloads that can recover from checkpoints, submit the job with:
"resumable": true
Resumable jobs can recover after unexpected worker or machine interruptions and can also safely participate in resumable Opportunistic scheduling.
When a resumable job starts again, previously saved files may already exist under:
/workspace/output
Your code must detect and reload its own checkpoint.
A good pattern is:
from pathlib import Path
checkpoint = Path("/workspace/output/checkpoints/latest.pt")
if checkpoint.exists():
# Restore model, optimiser, training step, etc.
...
else:
# Start from scratch.
...
Save checkpoints frequently enough that an interruption or preemption does not cause a large amount of computation to be repeated.
Recommended for Long Jobs
If a job may require more than 24 hours, making it resumable is strongly recommended.
Long non-resumable jobs outside your Normal and Overflow allocation are Held rather than being allowed to use Opportunistic capacity.
Organise Outputs¶
Use:
checkpoints/
figures/
models/
results/
rather than placing everything in a single directory.
Keep Images Small¶
Smaller images start faster.
Avoid installing unnecessary packages.
Test Locally First¶
Always verify:
docker run --rm image_name
before submitting a large job.
Use Command Overrides for Sweeps¶
Build one Docker image and vary jobs run using override commands:
"command": "python train.py --seed 1"
This avoids rebuilding the image for every experiment.
Avoid Submitting Thousands of Jobs at Once¶
Submit large sweeps in batches.
This keeps the queue manageable and avoids hitting your active job limit.
Maximum Job Limit
Each user can have a maximum of 50 jobs in the queue to prevent spam.
If you submit more than 50 jobs, they will be rejected until some of your existing jobs complete or are cancelled.
Troubleshooting¶
Job Never Starts
Workers may be busy.
Check:
hpc-client jobs
Dataset Not Found
Verify the dataset exists on the CARES NAS.
Image Cannot Be Pulled
Verify the image name and tag.
Outputs Missing
Ensure outputs are written to:
/workspace/output
Job Timed Out
Increase:
"max_runtime_hours"
if the job genuinely requires more runtime.