sf submit 打一个文件子集的包,上传后由服务端再注入 Job Capsule。
sf init my-lab --yes 之后
starforge.yaml 需要一个 name,字符限制 [A-Za-z0-9._-]。这就是控制台项目名。提交时不要传 --project。
sf new、submit、ls、validate)从当前目录往上找这个文件。CI 可以设 SF_REPO_ROOT,不必 cd。sf login / logout / status 是全局的,不依赖项目。
一个实验目录
custom/custom 还会有 train.sh(唯一入口)。旁边可以再放 train.py。sf plugin install … --exp 之后会多 plugins.lock.json。
不要在实验目录里放一个 framework 文件指望平台去读。方法以锁文件为准。
什么会被上传
CLI 打包实验、common/、configs/。排除列表和服务器共用(starforge.contract.env 里的 PACKAGE_EXCLUDES):
JobSpec 写在包内
.starforge/jobspec.json。注意是 .starforge/,不是 .forge/。.forge 会被排除,写进去集群侧读不到。
仓库里不会有的东西
- 集群 kubeconfig、Slurm JWT、对象存储密钥
- Job Capsule(
runner.pex)。准入后由服务端注入。 - 硬件并行度。来自
--profile和注册表。
Git
提交会记录NRL_GIT_COMMIT 和 NRL_GIT_DIRTY。工作区不干净默认拒绝,除非 --allow-dirty。未跟踪文件两种情况下都会当警告列出来。sf init 默认就初始化 git,第一次提交不要拖到交作业那一刻。