multi-seedlisted
Install: claude install-skill takayoshitoyoda05/claude-ml-template
# マルチシード実験(worktree 並列)
同一コミットのコードを seed 違いで N 本実行し、MLflow に記録して
平均±標準偏差まで自動集計する。コード実装用の worktree 分離基盤を
実験の分離(生成物の上書き防止)に転用する。
## 前提条件
- 実験スクリプトが `--seed <N>`(または同等の方法)で seed を受け取れること
- mlflow が導入済みであること(無ければ mlflow-log スキルの前提に従い、
ユーザーに確認してから `uv add --dev mlflow` で導入)
- 実験スクリプトが MLflow 記録を持たない場合は、先に mlflow-log スキルの
用途1に従って記録コードの追加を提案する(最小diffで)
## 進め方
### 1. 実験条件の確定
- seed: 「seed 42-46」(範囲)や「seed 7,13,42」(リスト)を受け付ける。
未指定なら既定5本(42〜46)を提示し、開始確認を1回取る
(計算資源を使う長時間ジョブを黙って起動しない)
- 実行コマンド(例: `uv run python train.py --seed {SEED}`)と
experiment 名(CONTEXT.md の用語に合わせる)を確認する
### 2. 並列度の決定(自動キュー化)
- `nvidia-smi -L` で GPU 数を検出する。GPU 実験なら並列度 = GPU 数
(seed ごとに `CUDA_VISIBLE_DEVICES` を割り当て)
- GPU が1枚、または検出不能なら**キュー実行**(並列度1で順次)に
フォールバックする。その旨を報告してから起動する
- CPU 実験なら並列度は物理コア数を目安に保守的に決める
- ユーザーが「並列度 N で」と明示したらそれを優先する
### 3. worktree の作成(--detach)
現在の HEAD から seed ごとに作成する。ブランチは作らない:
```
git worktree add --detach .worktrees/seed-42
git worktree add --detach .worktrees/seed-43
...
```
(`.worktrees/` は gitignore 済み。作業ツリーが dirty な場合は
先にコミットを促す — 実験は再現可能なコミットに対して行う)
### 4. バックグラウンド起動(nohup、セ��ション非依存)
起動時にバッチIDを1つ決める(例: `BATCH=$(date +%Y%m%d-%H%M%S)`)。
並列度に応じてジョブ列を組み、worktree ごとに nohup で起動する。
キュー実行(並列度1)の例:
```
BATCH=$(date +%Y%m%d-%H%M%S)
nohup bash -c '
for SEED in 42 43 44 45 46; do
cd <メインリポジトリ絶対パス>/.worktrees/seed-$SEED
MLFLOW_TRACKING_URI=file:<メインリポジトリ絶対パス>/mlruns \
BATCH='"$BATCH"' \
uv run python train.py --seed $SEED \
> run.log 2>&1 || echo