sbatch + srundocker runPod / JobGPU 参数设备映射claims + Affinityhostlist + 端口host 网络Service + DNSshell 轮询healthcheckprobessacct + 文件docker logs日志转发 + 生命周期部署逻辑始终不变 — 变的只是基础设施适配。
同一份 sflow.yaml 可运行在 Docker、Slurm 与 Kubernetes 上。
后端交由各平台的原生生态处理,而不是重新实现一遍。
bash、python、容器入口都可以。
串行、并行、分支与汇聚,阶段数不设上限。
推理、训练、评测、数据处理均可自由编排。
bash 进程
模拟的节点 / GPU 映射
docker run
容器 GPU 设备
salloc + srun
调度器分配
pods + claims
绑定与生命周期
backend/common/workload/benchmark/诊断 — sflow 编排层 vs 应用层错误
| 层级 | 状态 | 细节 |
|---|---|---|
| sflow | ✓ OK | DAG 已执行,全部任务已拉起,探针通过 |
| GPU 分配 | ✓ OK | 每节点 8 张 GPU,无重叠,每个 server TP=8 |
| 基础设施 | ✓ OK | etcd、NATS、frontend 均已 READY |
| 路由 | ✗ FAIL | frontend 拿到的是服务名,而不是 host:port |
| 基准测试 | ✗ FAIL | 0/800 请求成功(全部 HTTP 500) |
| 命令 | 用途 | 关键参数 |
|---|---|---|
sflow run | 执行工作流 | --dry-run --tui --set -f(多文件) |
sflow batch | 生成 sbatch 脚本 | --submit --bulk-input --row |
sflow compose | 合并多个 YAML | --resolve --missable-tasks -o |
sflow visualize | 渲染 DAG 图 | --format png/svg/mermaid |
sflow sample | 列出 / 复制示例 | --list -o |
sflow skill | 安装 AI Agent 技能 | --list -o |
sflow upgrade | 原地重装(别名:sflow update) | --branch --dry-run --force |
一份 recipe 就能把分离式流水线的每个阶段路由到最合适的资源池,同时保持同一份工作流契约。
先在本地起步,在申请硬件之前完成校验,再以文档和代码仓库作为唯一事实来源。