← ClaudeAtlas

multi-seedlisted

同じ実験を複数のseedで回して平均±標準偏差を出したいとき、または「seedを振って」「マルチシードで回して」「seed 42-46で実験して」と言われたときに必ず使う。長時間ジョブはバックグラウンドで走り、セッションを閉じても継続する。
takayoshitoyoda05/claude-ml-template · ★ 1 · Data & Documents · score 74
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