前置
- slurmrestd 开启并配置 JWT 鉴权;
- 计算节点装容器运行时:Enroot + Pyxis(推荐)或 Apptainer;
- 共享文件系统(作业暂存目录与产物);
- 一等框架的执行工件以 SQSH / SIF 形式发布到 runtime registry(custom + slurm 不允许 OCI 镜像隐式物化)。
配置
语义要点
批脚本渲染
批脚本渲染
需要 Slurm 26.05 和 API
v0.0.45。LaunchRequest 渲染为批脚本,每次尝试保留独立、不可改写的环境文件和调度日志。提交响应丢失时保留这些文件,并在找到原分配前拒绝重复提交。生命周期操作使用原生 SLUID;数字 JobID 仅用于查询首次提交回执。平台负责重试,因此关闭 Slurm 自动重新排队。异构多池 = hetjob
异构多池 = hetjob
多池作业渲染为 Slurm 异构作业:每池一个组件,
--constraint 按卡型 series 的 slurm_constraint 钉节点。series 未声明 constraint 时装配层直接拒绝(fail-closed,组件不会落到任意 GPU 节点)。状态与日志
状态与日志
状态经 REST 轮询映射到平台状态机;日志从共享目录读取回传(异步化处理,大日志不阻塞事件循环)。
已知边界
- Playground 不支持:训练节点通常无入向网络;
- E2E 闭环暂未覆盖 slurm(需容器化 slurmrestd + Apptainer,规划中)——批脚本渲染、REST 客户端、hetjob 与状态映射有完整单测。见 E2E 闭环测试。
纯 CPU 自定义作业
使用custom/custom,声明一个资源池:nodes: 1、gpus_per_node: 0,以及正数
cpus 和 memory_gb。选择能运行 CPU 作业的 Slurm 分区。批脚本使用
--cpus-per-task 和 --mem,不申请 GPU,也不启动 Ray。
在 TUNEPLANE_RUNTIME_REGISTRY_FILE 中,以明确的 custom-... 运行时 ID 注册
SIF/SQSH 文件;将 spec.framework.runtime_id 设置为该 ID,不填写
spec.framework.image。提交前和计算节点启动前都会校验文件摘要。仍需共享存储及
容器运行时。暂不支持临时磁盘预留和跨机器 CPU 作业。