CLI Reference
srtctl is the main command-line interface for submitting benchmark jobs to SLURM.
Table of Contents
Quick Start
Interactive Mode
Running srtctl with no arguments launches an interactive TUI (Text User Interface) powered by Rich and Questionary:
Interactive mode is ideal for:
Exploring available recipes without memorizing paths
Previewing and tweaking configurations before submission
Understanding what a sweep will expand to
Quick experimentation and validation
Recipe Browser
On launch, interactive mode scans the recipes/ directory and presents recipes organized by subdirectory:
Features:
Recipes grouped by parent directory for easy navigation
Arrow keys to navigate, Enter to select
"Browse for file..." option for configs outside
recipes/If no recipes found, prompts for manual path entry
Configuration Summary
After selecting a recipe, you'll see a tree-style summary:
Interactive Actions Menu
After viewing the config summary, you'll see an action menu:
sbatch Preview
The "Preview sbatch script" option shows the exact SLURM script that will be submitted:
The script is syntax-highlighted with line numbers for easy reading.
Parameter Modification
The "Modify parameters" option lets you interactively change key settings:
Modifiable fields:
name- Job nameresources.prefill_workers- Number of prefill workersresources.decode_workers- Number of decode workersbenchmark.isl- Input sequence lengthbenchmark.osl- Output sequence length
Modified configs are saved to a temporary file and used for submission.
Sweep Preview
For configs with a sweep: section, interactive mode shows an expansion table:
Submission Confirmation
Before submitting, you'll be asked to confirm:
For sweeps, the confirmation shows:
Full configuration summary
Sweep expansion table
Total job count
Workflow Examples
Exploring a new recipe:
Quick experiment with modifications:
Sweep validation:
Commands
srtctl apply
srtctl applySubmit a job or sweep to SLURM.
Options:
-f, --file
Path to YAML config file, directory, or file:selector for overrides (required)
--sweep
Force sweep mode (usually auto-detected)
--setup-script
Custom setup script from configs/
--tags
Comma-separated tags for the run
-y, --yes
Skip confirmation prompts
Examples:
srtctl dry-run
srtctl dry-runPreview what would be submitted without actually submitting.
Options:
-f, --file
Path to YAML config file, directory, or file:selector for overrides (required)
--sweep
Force sweep mode
Examples:
Dry-run output includes:
Syntax-highlighted sbatch script
Container mounts table (labeled by source: built-in, srtslurm.yaml, recipe)
Environment variables table (grouped by scope: global, prefill, decode, aggregated)
srun options (if configured)
For sweeps: table of all jobs with parameters
Generated configs saved to
dry-runs/folder
srtctl resolve-override
srtctl resolve-overrideExpand an override config and write the specialised YAML file(s) without submitting.
Options:
-f, --file
Override YAML file, or file:selector to resolve a specific variant (required)
--stdout
Print resolved YAML to stdout instead of writing files
Examples:
The resolved YAML preserves the field order and comments from the source file. Base fields appear first in their original order; override-only fields are appended at the end. Output files follow the same {stem}_{suffix}.yaml naming convention used by apply.
See Config Overrides — Resolving Without Submitting for details.
Output
When you submit a job, srtctl creates an output directory:
Sweep Support
Configs with a sweep: section are automatically detected and expanded:
This creates 4 jobs (2 × 2 Cartesian product). See Parameter Sweeps for details.
Config Override Support
Configs with a base top-level key are automatically detected as override configs. Each override_<suffix> section is deep-merged with base and submitted as a separate job.
The :selector syntax works with apply, dry-run, and resolve-override. If the selector is used on a non-override config, a warning is logged and the config is processed normally.
Override configs also work with directory submission — override files in the directory are auto-detected and expanded.
To inspect the resolved YAML before submitting (preserving field order and comments), use resolve-override:
See Config Overrides for full YAML syntax, merge semantics, and field-order / comment-preservation behaviour.
Debugging Running Jobs
The full srun command (with all container mounts, environment variables, and flags) is logged at INFO level in the sweep log:
Tips
Use
srtctl(no args) for exploring recipes interactivelyUse
srtctl apply -ffor scripting and CI pipelinesAlways
dry-runfirst for sweeps to check job countCheck
outputs/<job_id>/for submitted configs and metadata
Last updated