用途
run-experiment 用于将机器学习实验提交到计算环境,支持本地机器、SLURM HPC(如 Ibex、UW 等)以及 RunAI/Kubernetes(如 EPFL)。它生成可复现的作业脚本,保存在项目的 jobs/ 目录中并与代码一起提交,然后提供确切的提交命令。该技能适合训练运行、消融实验、作业脚本编写和计算提交命令等场景。
主要能力
- 根据环境类型(SLURM、RunAI、本地)读取对应模板(slurm_job.sh、runai_job.sh、local_run.sh)并填充占位符。
- 读取 environments.yaml 环境注册表,列出可用环境供用户选择。
- 生成包含 Git 提交哈希、结构化输出目录(outputs/<job-name>/ 和 outputs/logs/<job-name>/)、时间戳日志文件和退出码传播的作业脚本。
- 支持作业数组、多 GPU DDP、交互式调试等常见模式。
- 生成前执行 shellcheck、shfmt -d 和 bash -n 等非变更性检查,报告通过、失败或跳过。
- 提供针对不同环境的提交命令及监控命令。
- 可选地将运行条目添加到 jobs/README.md 或 jobs/index.md,并在 memory/ 或 worktree 状态文件中更新已验证的运行指针。
使用方式
用户可以通过交互式向导或命令行参数调用。支持参数如 --env、--script、--name、--gpus。技能会询问环境、脚本/命令、作业名称、GPU 数量、运行时限(SLURM)、conda 环境或 venv、输出目录以及额外特殊需求。然后定位项目根目录并获取短 git 提交哈希,生成脚本到 jobs/<job-name>.sh(或 -runai.sh / -local.sh),预览脚本并执行检查,最后展示提交命令并询问是否立即运行。
适用场景
- 在 SLURM 集群(Ibex、UW 等)提交训练或消融作业。
- 在 RunAI/Kubernetes(EPFL)上提交作业。
- 在本地机器上通过 tmux/nohup 运行实验。
- 需要生成可复现、与代码提交绑定的作业脚本。
- 需要作业数组进行超参数扫描,或使用多 GPU DDP 进行分布式训练。
- 需要交互式调试会话时生成 srun 或 runai 交互命令。
限制
- 部分环境(如 uw)在 environments.yaml 中为占位符,需要用户更新实际配置。
- 服务器端提交需要预先配置 SSH 密钥认证。
- 生成脚本前需要用户提供必要的实验细节(命令、作业名、GPU 数量等)。
- 若环境不在 environments.yaml 中,需询问其调度器类型并可能生成通用包装器。
- 不得将队列状态、作业成功或最终指标值作为持久事实存储,除非在当前会话中已验证。
- 具体安装方式、收费、价格、平台等未在资料中提供。