> ## Documentation Index
> Fetch the complete documentation index at: https://starforge.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# slurm 后端

> HPC 形态：slurmrestd、运行时 profile、异构 hetjob

面向已有 Slurm 的机房。控制面只走 **slurmrestd**（REST + JWT），没有 sbatch / SSH 旁路。训练在 Enroot/Pyxis 或 Apptainer 容器里跑。

## 前置

1. slurmrestd 开启并配置 JWT 鉴权；
2. 计算节点装容器运行时：Enroot + Pyxis（推荐）或 Apptainer；
3. 共享文件系统（作业暂存目录与产物）；
4. 一等框架的执行工件以 **SQSH / SIF** 形式发布到 runtime registry（custom + slurm 不允许 OCI 镜像隐式物化）。

## 配置

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
FORGE_DEFAULT_FLEET_KIND=slurm
FORGE_SLURM_REST_URL=https://slurmrestd.internal:6820
FORGE_SLURM_REST_API_VERSION=v0.0.43
FORGE_SLURM_REST_USER=starforge
FORGE_SLURM_JWT_FILE=/run/secrets/slurm-jwt
FORGE_SLURM_PARTITION=gpu
FORGE_SLURM_RUNTIME_PROFILE=enroot-pyxis   # 或 apptainer
FORGE_STORAGE_ROOT=/lustre/starforge        # 唯一存储根，落在并行文件系统上
# FORGE_SLURM_STORAGE_ROOT=                 # 仅当集群把它挂在别的路径时
FORGE_SLURM_TLS_VERIFY=1
```

## 语义要点

<AccordionGroup>
  <Accordion title="批脚本渲染" icon="file-code">
    LaunchRequest 渲成批脚本（镜像、挂载、`srun` 拓扑、ingest 凭据）。终态日志归档后删掉 shared staging 和 scheduler 日志。提交中断的残留会在重试前清掉。
  </Accordion>

  <Accordion title="异构多池 = hetjob" icon="git-fork">
    多池作业渲染为 Slurm **异构作业**：每池一个组件，`--constraint` 按卡型 series 的 `slurm_constraint` 钉节点。series 未声明 constraint 时装配层直接拒绝（fail-closed，组件不会落到任意 GPU 节点）。
  </Accordion>

  <Accordion title="状态与日志" icon="activity">
    状态经 REST 轮询映射到平台状态机；日志从共享目录读取回传（异步化处理，大日志不阻塞事件循环）。
  </Accordion>
</AccordionGroup>

## 已知边界

* **Playground 不支持**：训练节点通常无入向网络；
* E2E 闭环暂未覆盖 slurm（需容器化 slurmrestd + Apptainer，规划中）——批脚本渲染、REST 客户端、hetjob 与状态映射有完整单测。见 [E2E 闭环测试](/zh-Hans/ops/e2e-testing)。
