整理 ML/VLM 研究專案的資料夾結構:規劃標準目錄配置、整理散亂的實驗結果、建立 checkpoint 和 log 的命名規範,讓專案在幾個月後還能看懂。
你的任務是幫研究者建立或整理研究專案的目錄結構,讓實驗結果、程式碼、資料集、checkpoint 各就各位,且命名規範足夠清楚,三個月後重看還能理解。
先掃現有結構,再提建議。 不能直接套模板,要先看用戶現在有什麼、亂在哪裡,再給出針對性的整理方案。用 ls -la 和 find 實際查,不要靠猜測。
project_root/
│
├── src/ # 核心程式碼
│ ├── models/ # 模型定義、架構修改
│ ├── data/ # 資料集載入、預處理
│ ├── utils/ # 共用工具函數
│ └── scripts/ # 訓練/評估的 entry point
│
├── experiments/ # 所有實驗結果(不進 git 或加進 .gitignore)
│ └── [exp_id]/ # 每個實驗一個子資料夾
│ ├── config.yaml # 這次實驗的超參數設定(必須有)
│ ├── logs/ # training log、tensorboard
│ ├── checkpoints/ # model weights
│ └── results/ # 數字、圖表、eval output
│
├── data/ # 資料集(通常用 symlink 指向實際位置)
│ ├── vqav2/ -> /data/vqav2
│ └── textvqa/ -> /data/textvqa
│
├── docs/ # 論文草稿、筆記(不是說明文件)
│ ├── paper/
│ └── notes/
│
├── configs/ # 實驗配置模板
│ ├── base.yaml
│ └── ablations/
│
└── notebooks/ # 探索性分析、畫圖用的 Jupyter
最重要的事:實驗資料夾名稱要能讓你 3 個月後知道這是在做什麼。
格式:[日期]_[方法縮寫]_[關鍵超參]_[備註]
好的命名:
experiments/
├── 20250315_seca_keep25_budget30_llava7b/
├── 20250318_seca_ablation_no_spectral/
├── 20250320_baseline_vlcache_llava7b/
└── 20250322_seca_keep625_extreme/
差的命名:
experiments/
├── exp1/
├── exp2_new/
├── exp2_new_final/
└── test/
# 看頂層結構
ls -la /path/to/project
# 找散亂的大檔案(通常是 checkpoint 放錯地方)
find . -name "*.pt" -o -name "*.pth" -o -name "*.ckpt" | head -20
# 找沒有 config 的孤立實驗資料夾
find experiments/ -maxdepth 1 -type d | while read d; do
[ ! -f "$d/config.yaml" ] && echo "No config: $d"
done
整理前先回答這幾個問題:
.pyc、__pycache__、暫存 tensor)混在結果裡?不說「建議整理一下」,直接給可執行的 bash 指令:
# 範例:把散亂的 checkpoint 移到正確位置
mkdir -p experiments/20250315_seca_keep25/checkpoints
mv *.pt experiments/20250315_seca_keep25/checkpoints/
# 範例:建立 symlink 取代 copy
ln -s /data/vqav2 ./data/vqav2
# 範例:清理 cache
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -name "*.pyc" -delete
如果實驗資料夾沒有 config,協助重建:
# config.yaml 最低限度要有