Skip to content

Add Studio: a Streamlit web GUI for browsing and running models - #41

Draft
ashwinma wants to merge 4 commits into
mainfrom
studio-web-gui
Draft

Add Studio: a Streamlit web GUI for browsing and running models#41
ashwinma wants to merge 4 commits into
mainfrom
studio-web-gui

Conversation

@ashwinma

Copy link
Copy Markdown
Collaborator

Lowers the bar for non-agent users. Runs on a cluster login node (localhost + ssh -L), reads the same models.yaml / model.yaml metadata and .cluster-config.yaml the agent commands use, and submits the repo's own sbatch scripts unmodified (partition/account/scaling as sbatch CLI flags; model params as exported env vars; never edits tracked files).

Pages: Catalog (filters), Model detail, Cluster setup (GUI /init-cluster with auto-discovery probes), Run (env-var form + dry-run + submit, Apptainer only), Jobs (squeue poll + log tail), Add model (scaffold from _template).

Also:

  • Refresh ORBIT-2 & HydraGNN model cards with public multi-node validation notes.
  • JSON schemas for model.yaml and .cluster-config.yaml; reader tolerates the slurm:/sbatch_script: field alias and container_image string-or-list.
  • Launcher studio.sh self-bootstraps a venv (streamlit + pyyaml only; no ML deps) and sets NO_PROXY so the forwarded port is reachable behind a cluster proxy.
  • /studio slash command; gitignore studio/.venv and per-user job state.

Lowers the bar for non-agent users. Runs on a cluster login node (localhost +
ssh -L), reads the same models.yaml / model.yaml metadata and .cluster-config.yaml
the agent commands use, and submits the repo's own sbatch scripts unmodified
(partition/account/scaling as sbatch CLI flags; model params as exported env
vars; never edits tracked files).

Pages: Catalog (filters), Model detail, Cluster setup (GUI /init-cluster with
auto-discovery probes), Run (env-var form + dry-run + submit, Apptainer only),
Jobs (squeue poll + log tail), Add model (scaffold from _template).

Also:
- Refresh ORBIT-2 & HydraGNN model cards with public multi-node validation notes.
- JSON schemas for model.yaml and .cluster-config.yaml; reader tolerates the
  slurm:/sbatch_script: field alias and container_image string-or-list.
- Launcher studio.sh self-bootstraps a venv (streamlit + pyyaml only; no ML deps)
  and sets NO_PROXY so the forwarded port is reachable behind a cluster proxy.
- /studio slash command; gitignore studio/.venv and per-user job state.

Co-Authored-By: Claude <noreply@anthropic.com>
Comment thread studio/pages/4_run.py Fixed
ashwinma and others added 2 commits July 16, 2026 21:56
Add a "Web GUI" section to the root README, document the SSH port-forward
access model (Option 1) plus an ~/.ssh/config alias in studio/README.md, and
point the ai4science-studio and ai4science-run-models skills at ./studio.sh so
a fresh agent session knows the point-and-click path exists and stays in sync
with the sbatch scripts.

Co-Authored-By: Claude <noreply@anthropic.com>
…equired box)

Required path vars (ORBIT2_ROOT, AI4S_SHARED_DIR, HG_CHECKPOINT, overlays, SIFs)
rendered as empty text boxes. Add core/suggestions.py, which offers concrete
choices from the cluster config's assets: cache and path conventions
(<root>/models/<Model>/{code,overlays,weights}, <root>/images/*.sif), existing
paths first (marked ✓). Config vars (ORBIT2_CONFIG*, HG_CONFIG) list the
model's examples/*.yaml. The Run form renders these as a dropdown with a
"custom path" escape hatch, so a required field is never blank; AI4S_SHARED_DIR
falls back to paths.projects when paths.scratch is empty.

Co-Authored-By: Claude <noreply@anthropic.com>


def path_exists(p: str) -> bool:
return bool(p) and Path(p).expanduser().exists()
When a job left the queue the Jobs page showed "GONE", which says nothing about
success. Now poll_states() resolves a finished job via sacct to its true state
(COMPLETED / FAILED / TIMEOUT / OUT_OF_MEMORY ...) and exit code. The Jobs page
renders a plain-language status line, and extract_metrics() parses PSNR / SSIM /
final loss / throughput from the log into a "Results" panel, with the raw log
tucked into a collapsible section. Synthetic ORBIT-2 runs get a note that the
metrics validate the pipeline, not accuracy.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants