mcpField
L
launch

launch

github.com/fcakyon云与 DevOps45964 次安装2 周前更新
代码仓库

关于 launch

面向 Claude Code 的 ML 训练检查技能,在启动、重启或取消训练前引导研究者核对配置、路径、监控、耗时和代码状态,并为中断运行提供清理步骤。

主要功能

  1. 01六项启动前检查
  2. 02与参考运行配置对比
  3. 03验证数据集和检查点路径
  4. 04检查跟踪器与预计耗时
  5. 05确认代码已提交并推送
  6. 06重启或取消时清理

适用场景

  1. 01提交前检查训练命令
  2. 02准备长时间训练任务
  3. 03清理后重启失败任务
  4. 04取消运行并清除遗留文件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/fcakyon/labrat --skill launch

安装后在 Claude Code 中输入/launch确认已加载。

详细介绍

Launch:长时间 ML 训练任务的启动前检查清单

长时间训练任务一旦失败,代价很高。一次运行 12 小时的任务,可能因为数据集路径缺失,或在 NFS 挂载上使用默认值 workers=8,在第 3 个 epoch 时崩溃,白白损失一整天。这项技能会在你占用 GPU 前,引导你快速完成六项检查。

当助手试图启动任务却未执行检查清单时,此插件中的 Agent 式 Stop 钩子会从 reason 路由到此处。

何时运行

用户刚刚要求:

  • 启动 / 开始 / 开跑一次训练任务
  • 重启已中断的任务
  • 终止当前任务(也会执行检查清单中的清理部分)
  • 提交前检查启动命令

或者用户准备运行以下任一命令:python train.py、accelerate launch、torchrun、deepspeed、sbatch train.sh、tmux new-session ... python ... train、wandb sweep。

检查清单

1. 与参考运行配置进行差异比较

启动时使用了错误的参数,是代价最高的失败。在启动前:

find configs/ recipes/ experiments/ -maxdepth 3 \( -name '*.yaml' -o -name '*.yml' -o -name '*.json' -o -name '*.toml' \) -mtime -30 2> /dev/null | head

选择最近修改且与预期运行相似的配置(模型系列和任务相同)。将其与预期配置进行比较:

diff -u configs/baseline_v1.yaml configs/intended.yaml

逐行检查所有差异。每一处都要问:这个差异是有意为之且有明确理由,还是我忘了设置而遗留的默认值? 常见的隐性退化因素:

  • num_workers / 数据加载器工作进程数(许多代码库的默认值为 8:在 NFS 上不合适)
  • batch_size(在 DDP 下,每设备批量大小与全局批量大小不一致)
  • learning_rate(随批量大小线性缩放;如果批量大小改变,学习率也应相应调整)
  • optimizer 的 beta 参数 / 权重衰减(论文默认值与框架默认值不同)
  • mixed_precision(对于某些模型,fp16 和 bf16 的差异很重要)
  • gradient_accumulation_steps
  • seed(如果你在意可复现性,就要设置)

如果此项目中没有参考配置,请让用户指出一个。不要只使用框架默认值启动任务。

2. 规范命名运行

在整个运行周期中,运行名称都会出现在 wandb / neptune / 检查点目录 / 状态报告中。名称必须用通俗易懂的英文描述实验,不能使用内部代码:

  • 不佳:run-1、exp-b、final-v2、phase2-internal
  • 合适:imagenet-resnet50-bs256-lr0.1-cosine、coco-baseline-bs256-lr3e-4、swin-t-imagenet-distill-from-vit-l

命名模式:<dataset/task>-<model>-<key-config>-<distinctive-recipe-piece>。如果无法根据名称用一句话描述实验,说明名称不合适。

3. 验证路径

启动前,必须确认运行所依赖的每个路径都存在:

# Dataset path
ls -la /path/to/dataset | head

# Pretrained checkpoint (if loading)
ls -la /path/to/checkpoint.pt

# Output directory parent (must exist; the run dir will be created)
ls -la /path/to/runs/

# Config file
cat configs/intended.yaml | head

绝不要相信凭记忆想起的路径。数据集路径不存在时,任务会在运行 30 分钟后才崩溃,而不是立即失败。

4. 设置监控

自动检测实验跟踪工具:

  • 已设置 WANDB_API_KEY,或启动器中导入了 wandb → wandb
  • 已设置 NEPTUNE_API_TOKEN → neptune
  • 已设置 MLFLOW_TRACKING_URI,或启动器中包含 mlflow → mlflow
  • 存在 runs/ 或 lightning_logs/ → tensorboard
  • 以上均不符合 → 询问用户;对于持续数小时的运行,“不监控”通常不是正确选择

确认运行会显示在正确的项目 / 实体 / 实验名称下。确认已设置用于批次对比的标签 / 分组。

5. 使用本地时区估算预计完成时间

估算实际运行时长:epochs × seconds-per-epoch / 3600 = hours。使用本地时区(系统时区)说明预计完成时间。如果运行会跨越会议 / 睡眠 / 离岗时段,请决定推迟还是拆分运行。

6. 代码与已推送的提交一致

在运行任务的机器上,进入任务所用的代码库:

git status --porcelain            # must print nothing
git fetch -q && git rev-parse HEAD @{u}   # both hashes must match

未提交或未推送的更改,意味着之后无人能确认究竟是哪份代码产出了此次运行结果。如果任一检查未通过,请在本地编辑、提交并推送,然后在主机上运行 git pull 再启动。记录此次运行对应的提交哈希。

重启和终止清理

如果这是对之前失败运行的重启,或是在启动替代运行之前终止运行,请按以下确切顺序清除过时产物:

  1. 启动机器上的本地检查点目录:rm -rf /local/runs/<run-name>(先验证路径)。
  2. 集群 / NFS / 对象存储上的远程产物目录:rm -rf /remote/runs/<run-name>(或等效命令)。
  3. 实验跟踪器运行记录:通过跟踪器的 API 删除(wandb api.run(...).delete()、neptune run.stop() + delete via UI 等)。过时的跟踪器运行记录会破坏后续比较。
  4. 调度器预留:取消 SLURM 作业(scancel <jobid>)、lambda labs 预留、cron 条目等。“已终止但 GPU 仍被分配”的运行会反复造成资源浪费。

跳过其中任何一项都会产生幽灵状态,干扰下一次启动或比较。

输出

用户调用此技能时,请逐项检查六项内容(如果是终止运行,则检查三项内容加清理),并报告哪些通过、哪些失败。除非用户明确豁免该检查,否则任何检查失败都应阻止启动。

启动条件全部满足时,请在结尾的代码围栏中提供启动命令,方便直接复制。

评论

支持 Markdown