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 name

  • resources.prefill_workers - Number of prefill workers

  • resources.decode_workers - Number of decode workers

  • benchmark.isl - Input sequence length

  • benchmark.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

Submit a job or sweep to SLURM.

Options:

Flag
Description

-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

Preview what would be submitted without actually submitting.

Options:

Flag
Description

-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

Expand an override config and write the specialised YAML file(s) without submitting.

Options:

Flag
Description

-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 Submittingarrow-up-right 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 Overridesarrow-up-right 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 interactively

  • Use srtctl apply -f for scripting and CI pipelines

  • Always dry-run first for sweeps to check job count

  • Check outputs/<job_id>/ for submitted configs and metadata

Last updated