Describe once. Run anywhere._
sbatch + srundocker runPod / JobGPU flagsdevice mappingclaims + affinityhostlists + portshost networkService + DNSshell pollinghealthcheckprobessacct + filesdocker logsrelay + lifecyclePortable YAML — tasks, deps, resources, launch methods
Change the backend/operator block; keep DAG, scripts, probes, and results.
Probes, artifacts, replicas — no platform coupling.
bash process
synthetic node/GPU map
docker run
container GPU devices
salloc + srun
scheduler allocations
pods + claims
pinning and lifecycle
backend/common/workload/benchmark/Diagnosis — sflow orchestration vs application error
| Layer | Status | Detail |
|---|---|---|
| sflow | ✓ OK | DAG executed, all tasks launched, probes passed |
| GPU alloc | ✓ OK | 8 GPUs/node, no overlap, TP=8 per server |
| Infra | ✓ OK | etcd, NATS, frontend all READY |
| Routing | ✗ FAIL | Frontend gets service names, not host:port |
| Benchmark | ✗ FAIL | 0/800 requests succeed (all HTTP 500) |
| Command | Purpose | Key Flags |
|---|---|---|
sflow run | Execute a workflow | --dry-run --tui --set |
sflow batch | Generate sbatch scripts | --submit --bulk-input |
sflow compose | Merge multiple YAMLs | --resolve --validate |
sflow visualize | Render DAG image | --format png/svg/mermaid |
sflow sample | List / copy examples | --list -o |
sflow skill | Export AI agent skills | --list -o |
One recipe can route each stage of a disaggregated pipeline to the best resource pool while preserving one workflow contract.
Start locally, validate before allocating hardware, then use the docs and repository as your source of truth.