Prerequisites
- slurmrestd enabled with JWT authentication configured;
- Container runtime installed on compute nodes: Enroot + Pyxis (recommended) or Apptainer;
- A shared filesystem (for job staging directories and artifacts);
- First-class framework execution artifacts published to the runtime registry as SQSH / SIF (custom + slurm does not allow implicit OCI image materialization).
Configuration
Key semantics
Batch script rendering
Batch script rendering
LaunchRequest is rendered to a batch script (image, mounts,
srun topology, ingest credentials). After terminal logs are archived, shared staging and scheduler logs are deleted. Interrupted submits are cleaned before retry.Heterogeneous multi-pool = hetjob
Heterogeneous multi-pool = hetjob
Multi-pool jobs are rendered as Slurm heterogeneous jobs: one component per pool, with
--constraint pinning nodes via the GPU series’ slurm_constraint. If a series declares no constraint, the assembly layer rejects outright (fail-closed — components never land on arbitrary GPU nodes).Status and logs
Status and logs
Status is polled via REST and mapped onto the platform state machine; logs are read back from the shared directory (handled asynchronously, so large logs never block the event loop).
Known boundaries
- Playground is not supported: training nodes usually have no inbound network;
- The E2E closed loop does not yet cover slurm (requires containerized slurmrestd + Apptainer, planned) — batch script rendering, the REST client, hetjob, and status mapping have full unit-test coverage. See E2E Closed-Loop Testing.