工作空间隔离
每个项目一个目录
AutoResearch 的每个研究项目都有独立的工作空间:
~/Claude/Research/
├── fine-grained-recognition/ # 项目 A
│ ├── CLAUDE.md # 项目级配置 + Pipeline Status
│ ├── .omc/research/ # 研究状态
│ ├── findings.md # 过程发现
│ ├── Experiment.md # 实验记录
│ ├── IDEA.md # 候选 idea
│ ├── docs/ # 文档(论文笔记等)
│ ├── papers/ # 论文 PDF
│ ├── tools/ # watchdog 等工具
│ └── src/ # 项目代码
├── video-understanding/ # 项目 B
│ ├── CLAUDE.md
│ ├── .omc/research/
│ └── ...
└── CLAUDE.md # 全局科研配置隔离的好处
- 状态不冲突 — 每个项目有自己的 Pipeline Status,互不影响
- 可独立操作 — 一个项目在训练,另一个可以在做 idea 探索
- 可整体迁移 — 需要协作时,整个目录可以 git push
- 可安全清理 — 项目结束后,删除目录即可
infrastructure.yaml
跨项目的基础设施配置放在全局位置:
yaml
# ~/Claude/Research/.omc/infrastructure.yaml
servers:
ic2:
ssh: ic2
ip: 146.179.45.207
gpus:
- { id: 0, type: "RTX 6000 Ada", vram: 48 }
- { id: 1, type: "RTX 6000 Ada", vram: 48 }
- { id: 2, type: "RTX 6000 Ada", vram: 48 }
workdir: /data/Jingxuan/
conda: /home/jingxuan/miniconda3
ic:
ssh: ic
ip: 172.22.231.169
gpus:
- { id: 0, type: "A5000", vram: 24 }
- { id: 1, type: "A5000", vram: 24 }
- { id: 2, type: "A5000", vram: 24 }
- { id: 3, type: "A5000", vram: 24 }
- { id: 4, type: "A5000", vram: 24 }
- { id: 5, type: "A5000", vram: 24 }
workdir: /bigdata/Jingxuan/data/
conda: /home/jingxuan/miniconda3
defaults:
preferred_server: ic2 # 大显存优先
fallback_server: ic
rsync_exclude:
- .git/
- wandb/
- output/
- outputs/
- models/
- sessions/
- "*.pyc"
- __pycache__/
wandb:
mode: online # 绝不离线
entity: jingxuan
gpu_budget:
max_gpus: 8
max_vram_per_gpu: 24 # GB(以最小显存为准)
max_wall_time: 24h # 主实验
explore_wall_time: 8h # 探索实验服务器选择是 late-binding 的
不在项目创建时绑定服务器。而是在即将训练时,根据当前 GPU 可用情况选择。infrastructure.yaml 定义了有哪些服务器可选,不是指定必须用哪个。
跨项目共享资源
有些资源是跨项目共享的:
工具脚本
~/Claude/Research/
├── tools/ # 共享工具
│ ├── watchdog.py # 训练监控
│ └── wandb-guard.sh # WandB 模式检查新项目创建时,会复制一份 watchdog.py 到项目目录:
bash
cp ~/.claude/bin/watchdog.py ~/Claude/Research/<project>/tools/为什么复制而不是软链接?因为项目可能需要定制化 watchdog 配置,独立副本避免影响其他项目。
conda 环境
bash
# 服务器上的 conda 环境可以在项目间共享
# 新项目优先复制已有环境,而非从头安装
conda create --clone existing-env --name new-project-env数据集
数据集存放在服务器的公共目录,不在项目目录内:
# 服务器上
/data/Jingxuan/datasets/
├── CUB-200/
├── ImageNet/
└── ...
# 项目代码中用软链接或配置路径指向HuggingFace 缓存
先查本地缓存再下载。如果数据集已在本地,设 HF_HUB_OFFLINE=1 避免不必要的网络请求。
项目创建流程
bash
# 1. 创建目录
mkdir -p ~/Claude/Research/<project-name>/tools
mkdir -p ~/Claude/Research/<project-name>/docs
mkdir -p ~/Claude/Research/<project-name>/papers
# 2. 复制工具
cp ~/.claude/bin/watchdog.py ~/Claude/Research/<project-name>/tools/
# 3. 初始化 CLAUDE.md(含 Pipeline Status)
# 4. git init
cd ~/Claude/Research/<project-name>
git init && git add -A && git commit -m "init: project scaffold"每个项目从创建开始就有 git 版本控制。实验代码、配置、文档都在版本控制内。大文件(权重、数据集)通过 .gitignore 排除。
代码同步
本地开发,远程训练。代码同步通过 rsync:
bash
rsync -avz --delete --filter=':- .gitignore' \
--exclude='.git/' --exclude='wandb/' \
--exclude='output/' --exclude='outputs/' \
--exclude='models/' --exclude='sessions/' \
--exclude='findings.md' --exclude='*.pyc' \
--exclude='__pycache__/' \
~/Claude/Research/<project>/ <server>:<workdir>/<project>/只同步代码和小文件
权重和数据集在服务器直接下载,不通过 rsync 传输。rsync 只负责代码、配置和脚本。