Cerberus / docs /MIGRATION-3GPU.md
backseollgi's picture
Upload docs/MIGRATION-3GPU.md with huggingface_hub
3b841a9 verified
|
Raw History Blame Contribute Delete
8.26 kB
# ์ปจํ…Œ์ด๋„ˆ ์ด์ „ โ€” GPU 3์žฅ ํ™˜๊ฒฝ์—์„œ ์ด์–ด๊ฐ€๊ธฐ
์ด ๋ฌธ์„œ ํ•˜๋‚˜๋กœ ์žฌ๊ฐœ ๊ฐ€๋Šฅํ•˜๋„๋ก ์“ด๋‹ค. ์ˆœ์„œ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€๋ฉด ๋œ๋‹ค.
---
## 0. ๋จผ์ € ์•Œ์•„์•ผ ํ•  ๊ฒƒ
**`/home/work/seoik` ๋งŒ ์˜๊ตฌ๋‹ค.** `$HOME`(=`/home/work`) ์˜ ๋‚˜๋จธ์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚ด๋ฆฌ๋ฉด
์‚ฌ๋ผ์ง„๋‹ค โ€” `~/.claude` ํฌํ•จ.
์˜๊ตฌ ๋ณผ๋ฅจ์— ์ด๋ฏธ ๋‹ค ์žˆ๋‹ค.
| ์ž์‚ฐ | ํฌ๊ธฐ | ์ƒํƒœ |
|---|---|---|
| `seoik/hawk` (์ฝ”๋“œยท๋…ผ๋ฌธ) | 13G | git ๋™๊ธฐํ™” ์™„๋ฃŒ |
| `seoik/runs` (์ฒดํฌํฌ์ธํŠธ) | 369G | v1ยทv2 ์ „๋ถ€ ๋ณด์กด |
| `seoik/miniconda3` (conda ํ™˜๊ฒฝ) | 11G | **์žฌ์„ค์น˜ ๋ถˆํ•„์š”** |
| `seoik/hawk_anomaly` (Stage-2 ๋ฐ์ดํ„ฐ) | 121G | ๊ทธ๋Œ€๋กœ |
| `seoik/session_archive` | 22M | ๋Œ€ํ™” ๊ธฐ๋ก |
---
## 1. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ฆฌ๊ธฐ **์ „**์— ํ•  ์ผ
```bash
cd $CERBERUS_ROOT/hawk
# (a) ๋ฏธ์ปค๋ฐ‹ ํ™•์ธ โ€” 0 ์ด์–ด์•ผ ํ•œ๋‹ค
git status --porcelain | wc -l
# (b) ์›๊ฒฉ๊ณผ ๋™๊ธฐํ™” ํ™•์ธ โ€” 0 ์ด์–ด์•ผ ํ•œ๋‹ค
git fetch -q "https://$(cat ../.github_token)@github.com/jungseoik/hawk.git" main
git rev-list --count HEAD ^FETCH_HEAD
# (c) ์„ธ์…˜ ๊ธฐ๋ก ์•„์นด์ด๋ธŒ (์ปจํ…Œ์ด๋„ˆ์™€ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง„๋‹ค)
D=$CERBERUS_ROOT/session_archive/$(date +%Y%m%d)
mkdir -p "$D"
cp -r ~/.claude/projects/-home-work-seoik "$D"/ 2>/dev/null
cp ~/.claude/history.jsonl "$D"/ 2>/dev/null
# (d) ํ•™์Šต ์ •์ง€ โ€” ์ฒดํฌํฌ์ธํŠธ๋Š” epoch ๋งˆ๋‹ค ์ €์žฅ๋˜๋ฏ€๋กœ ์ง„ํ–‰๋ถ„์„ ์žƒ์ง€ ์•Š๋Š”๋‹ค
pkill -f "run_ablation_v[2]"; pkill -f "train[.]py --cfg-path"
```
์ฒดํฌํฌ์ธํŠธ๊ฐ€ epoch ๋‹จ์œ„๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ **์•„๋ฌด ๋•Œ๋‚˜ ๋Š์–ด๋„ ๋œ๋‹ค.** ์ง„ํ–‰ ์ค‘์ด๋˜ epoch ๋งŒ
๋‹ค์‹œ ๋ˆ๋‹ค.
---
## 2. ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ณต๊ตฌ
```bash
bash /home/work/seoik/bootstrap_cerberus.sh # ๋ฉฑ๋“ฑ โ€” ์—ฌ๋Ÿฌ ๋ฒˆ ๋Œ๋ ค๋„ ์•ˆ์ „
source ~/.bashrc
```
์ด๊ฒƒ์ด ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ: `~/.claude` ์‹ฌ๋งํฌ(์—์ด์ „ํŠธยท์Šคํ‚ฌ), ์…ธ ํ™˜๊ฒฝ
(`CERBERUS_PY`ยท`TORCH_HOME`ยท`HF_HOME`ยท`HF_TOKEN`ยท`GEMINI_API_KEY`), git ์‚ฌ์šฉ์ž ์„ค์ •.
๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐยท๋ชจ๋ธยท์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์‚ด์•„์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
**์ด๊ฑธ ๊ฑด๋„ˆ๋›ฐ๋ฉด `$CERBERUS_PY` ๊ฐ€ ๋น„์–ด ๋ชจ๋“  ํ•™์Šตยทํ‰๊ฐ€ ๋ช…๋ น์ด ์กฐ์šฉํžˆ ์‹คํŒจํ•œ๋‹ค.**
### ์ง€๋‚œ ๋Œ€ํ™” ์ด์–ด๊ฐ€๊ธฐ
๋ถ€ํŠธ์ŠคํŠธ๋žฉ 1.5 ๋‹จ๊ณ„๊ฐ€ `claude_state_sync.sh --restore` ๋กœ `seoik/claude_state` ์˜ ๋Œ€ํ™” ๊ธฐ๋ก์„
`~/.claude/projects/-home-work-seoik/` ์— ๋˜๋Œ๋ฆฐ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„
```bash
cd /home/work/seoik
claude --continue # ๊ฐ€์žฅ ์ตœ๊ทผ ๋Œ€ํ™”๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์–ด๊ฐ
claude --resume # ๋ชฉ๋ก์—์„œ ๊ณจ๋ผ ์ด์–ด๊ฐ
```
**์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค โ€” ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ๋จผ์ € ๋Œ๋ ค์•ผ `--resume` ๋ชฉ๋ก์— ๊ณผ๊ฑฐ ์„ธ์…˜์ด ๋ณด์ธ๋‹ค.**
(`--resume` ์€ claude ๊ฐ€ ๋œจ๋Š” ์‹œ์ ์— ๊ธฐ๋ก์„ ์ฝ์œผ๋ฏ€๋กœ, ์‹คํ–‰ ํ›„์— ๋ณต์›ํ•ด๋„ ๊ทธ ํšŒ์ฐจ์—๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค.)
๊ธฐ๋ก ์ €์žฅ์€ ์„ธ ๊ฒน์ด๋‹ค: ๋ถ€ํŒ… ์‹œ `--restore`, 5๋ถ„ ์ฃผ๊ธฐ ๋ฐ๋ชฌ `--save`, ์ •์ƒ ์ข…๋ฃŒ ์‹œ `SessionEnd` ํ›….
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ˆ๊ณ  ์—†์ด ์ฃฝ์–ด๋„ ์ตœ๋Œ€ 5๋ถ„ ๋ถ„๋Ÿ‰๋งŒ ์žƒ๋Š”๋‹ค. ์ƒํƒœ ํ™•์ธ:
```bash
bash scripts/claude_state_sync.sh --status
```
ํ™•์ธ:
```bash
echo $CERBERUS_PY # ๋น„์–ด ์žˆ์œผ๋ฉด ์•ˆ ๋œ๋‹ค
nvidia-smi --query-gpu=index,memory.total --format=csv,noheader # 3์žฅ ํ™•์ธ
cat /sys/fs/cgroup/memory.max # ์ปจํ…Œ์ด๋„ˆ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ โ€” ๋ณ‘๋ชฉ์ด๋‹ค
bash $CERBERUS_ROOT/hawk/scripts/run_arms_parallel.sh --check # arm ์ง„ํ–‰๋ฅ 
```
**2026-08-18 ์‹ค์ธก (์ด์ „ ์™„๋ฃŒ):** GPU H100 80GB **3์žฅ**, `memory.max` **739GB**(์ด์ „ 240GB์˜ 3๋ฐฐ),
CPU 84์ฝ”์–ด, torch 2.11.0+cu128. arm ์ง„ํ–‰๋ฅ ์€ ์ด์ „ ์ „๊ณผ ๋™์ผํ•˜๋‹ค โ€”
`zero 40/40 ยท random_mask 21/40 ยท flow 15/40 ยท duplicate 0 ยท flow_reinit 0`.
---
## 3. ์ด์–ด์„œ ํ•™์Šต โ€” GPU 3์žฅ ๋ณ‘๋ ฌ
```bash
cd $CERBERUS_ROOT/hawk
bash scripts/run_arms_parallel.sh
```
๋‚จ์€ arm ์„ ์ž๋™์œผ๋กœ ๊ณจ๋ผ **GPU 1์žฅ์”ฉ ๋ณ‘๋ ฌ**๋กœ ๋Œ๋ฆฐ๋‹ค. ์™„๋ฃŒ๋œ arm ์€ ๊ฑด๋„ˆ๋›ด๋‹ค.
์›จ์ด๋ธŒ๊ฐ€ ๋๋‚˜๊ณ  ๋‚จ์€ arm ์ด ์žˆ์œผ๋ฉด ๊ฐ™์€ ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.
### ์™œ GPU ๋ฅผ ํ•œ ์ž‘์—…์— ๋ชฐ์ง€ ์•Š๋Š”๊ฐ€
`iters_per_epoch` ์ด 2500 ์œผ๋กœ **๊ณ ์ •**์ด๋ผ, GPU ๋ฅผ ๋” ๋ถ™์ด๋ฉด epoch ๋‹น ์ƒ˜ํ”Œ ์ˆ˜๋งŒ ๋Š˜๊ณ 
epoch ์‹œ๊ฐ„์€ ๊ทธ๋Œ€๋กœ๋‹ค. arm ์„ ๋‚˜๋ˆ  ๋ณ‘๋ ฌ๋กœ ๋Œ๋ ค์•ผ ๋ฒฝ์‹œ๊ณ„ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค.
```
2 GPU ร— batch 2 = effective 4, 2500 iter ร— 4 = 10,000 ์ƒ˜ํ”Œ/epoch
1 GPU ร— batch 4 = effective 4, 2500 iter ร— 4 = 10,000 ์ƒ˜ํ”Œ/epoch โ† ๋™์ผ
```
์กฐ๊ฑด์ด ๊ฐ™์œผ๋ฏ€๋กœ **์ด๋ฏธ ์™„์ฃผํ•œ arm(`zero`)์„ ๋‹ค์‹œ ๋Œ๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค.**
| ๋ฐฉ์‹ | ์†Œ์š” |
|---|---|
| 2 GPU ์ˆœ์ฐจ ์œ ์ง€ | 6.7์ผ |
| 3 GPU ํ•œ ์ž‘์—… (arm ๋ถˆ์ผ์น˜๋กœ ์ „๋ถ€ ์žฌ์‹คํ–‰) | 10.8์ผ |
| **arm 3๊ฐœ ๋ณ‘๋ ฌ (`run_arms_parallel.sh`)** | **3.1์ผ** |
### ์ฃผ์˜ โ€” ๋ณ‘๋ชฉ์€ GPU ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ๋‹ค
```
/sys/fs/cgroup/memory.max 240 GB (๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ) โ†’ 739 GB (2026-08-18 ์ƒˆ ์ปจํ…Œ์ด๋„ˆ)
/sys/fs/cgroup/memory.events oom_kill 6 (๊ธฐ์กด) โ†’ 0 (์ƒˆ ์ปจํ…Œ์ด๋„ˆ, ํ•™์Šต ์‹œ์ž‘ ์ „)
```
์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋Š” ์—ฌ์œ ๊ฐ€ 3๋ฐฐ๋‹ค. ๊ทธ๋ž˜๋„ `num_workers` ๋Š” **4 ๊ทธ๋Œ€๋กœ ๋‘”๋‹ค** โ€” ํ•™์Šต์ด compute-bound ๋ผ
(`data:` ์ง€์—ฐ ์‹ค์ธก 0.0000) ์˜ฌ๋ ค์„œ ์–ป์„ ๊ฒƒ์ด ์—†๊ณ , ์žฌ์‹œ๋„ ์ƒํ•œ 12 ์™€ ํ•จ๊ป˜ ๋‘๋ฉด ์•ˆ์ „ ๋งˆ์ง„๋งŒ ์ปค์ง„๋‹ค.
`free` ๋Š” ํ˜ธ์ŠคํŠธ ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๋ฏ€๋กœ ์†์ง€ ๋ง ๊ฒƒ. DataLoader worker ๊ฐ€ OOM kill ๋˜๋ฉด rank ๊ฐ€
์ฃฝ๊ณ  NCCL watchdog ๊ฐ€ SIGABRT ๋ฅผ ๋˜์ง„๋‹ค. **์žฌ๊ฐœ๋Š” ์ •์ƒ ๋™์ž‘ํ•˜๋ฏ€๋กœ ์ง„ํ–‰๋ถ„์„ ์žƒ์ง€ ์•Š์œผ๋ฉฐ**,
๋Ÿฌ๋„ˆ๊ฐ€ ์žฌ์‹œ๋„๋กœ ๊ฐ์‹ธ ๋‘์—ˆ๋‹ค(์ƒํ•œ 12).
`*_1gpu.yaml` ์€ `num_workers` ๋ฅผ 4 ๋กœ ๋‚ฎ์ถฐ ๋‘์—ˆ๋‹ค โ€” arm 3 ๊ฐœ๋ฉด ์›Œ์ปค๊ฐ€ 3 ๋ฐฐ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
(2026-08-18 ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ์ด ๊ฐ’ ๊ทธ๋Œ€๋กœ ๊ฐ„๋‹ค. ์œ„ ํ‘œ ์ฐธ์กฐ.)
โš  `stage2_zero_1gpu.yaml` ์€ ์—†๋‹ค โ€” `zero` ๊ฐ€ ์ด๋ฏธ 40/40 ์™„์ฃผ๋ผ ๋Ÿฌ๋„ˆ๊ฐ€ ๊ณ ๋ฅด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
`zero` ๋ฅผ ๋‹ค์‹œ ๋Œ๋ ค์•ผ ํ•  ์ผ์ด ์ƒ๊ธฐ๋ฉด ๋‹ค๋ฅธ arm ํŒŒ์ผ์—์„œ ๋ณต์‚ฌํ•ด ๋งŒ๋“ค ๊ฒƒ(๊ทธ๋ƒฅ ์‹คํ–‰ํ•˜๋ฉด "config ์—†์Œ" ์œผ๋กœ ๋ฉˆ์ถ˜๋‹ค).
---
## 4. ํ•™์Šต์ด ๋๋‚˜๋ฉด
```bash
cd $CERBERUS_ROOT/hawk
# arm ๋ณ„ ํ‰๊ฐ€ โ€” ์ˆœ์ฐจ๋กœ ๋Œ๋ฆฐ๋‹ค. ๋™์‹œ์— ๋Œ๋ฆฌ๋ฉด ๋””์ฝ”๋”ฉ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•จ๊ป˜ ์žก๋Š”๋‹ค.
for a in flow zero random_mask duplicate flow_reinit; do
CUBLAS_WORKSPACE_CONFIG=:4096:8 $CERBERUS_PY scripts/evaluate.py \
--ckpt $CERBERUS_ROOT/runs/abl2_$a/main/checkpoint_39.pth \
--anno $CERBERUS_ROOT/hawk_anomaly/Annotation/All_Mix/all_videos_heldout.local.json \
--out experiments/out/eval_abl2_$a.json
done
# ํ†ต๊ณ„ ๋น„๊ต โ€” ํด๋ฆฝ ๋‹จ์œ„ ์Œ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ + Holm + ๋„๋ฉ”์ธ๋ณ„
$CERBERUS_PY scripts/compare_arms.py \
$(for a in flow zero random_mask duplicate flow_reinit; do echo --eval experiments/out/eval_abl2_$a.json; done) \
--out experiments/out/arm_comparison.json
```
โš  **ํ‰๊ฐ€๋Š” ๋ฐ˜๋“œ์‹œ `CUBLAS_WORKSPACE_CONFIG=:4096:8` ๊ณผ ํ•จ๊ป˜ ์‹คํ–‰ํ•œ๋‹ค.** ์—†์œผ๋ฉด ์ƒ์„ฑ์ด
๋น„๊ฒฐ์ •๋ก ์ ์ด์–ด์„œ ๊ฐ™์€ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์‹คํ–‰๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฌธ์žฅ์„ ๋‚ธ๋‹ค(์‹ค์ธก 3/3 ๋ถˆ์ผ์น˜, ํ•˜๋‚˜๋Š”
`4 4 4 4 โ€ฆ` ๋กœ ํ‡ดํ™”).
---
## 5. ๊ฒฐ๊ณผ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฝ๋Š”๊ฐ€
`docs/experiment-roadmap.md` ยง0 ์˜ S1/S2/S3 ์‚ฌ๋‹ค๋ฆฌ์™€ ยง6 ์˜ ๊ฒฐ๊ณผ๋ณ„ ๋Œ€์‘.
์ฃผ ์ข…์ ์€ **๋„๋ฉ”์ธ๋ณ„** ๊ฐ’์ด๋‹ค(ํ’€๋ง์€ DoTA 62.8% ํŽธ์ค‘).
---
## 6. ์ด์–ด์„œ ์ฝ์„ ๋ฌธ์„œ
| ๋ฌธ์„œ | ๋‚ด์šฉ |
|---|---|
| `docs/STATE.md` | ์ง€๊ธˆ ๋ฌด์—‡์ด ๋Œ๊ณ  ์žˆ๊ณ  ๋‹ค์Œ์ด ๋ฌด์—‡์ธ๊ฐ€ โ€” **๊ฐ€์žฅ ๋จผ์ €** |
| `docs/experiment-roadmap.md` | ์‹คํ—˜ ๊ณ„ํšยท๊ฒฐ๊ณผ๋ณ„ ๋Œ€์‘ยท๊ธฐ๊ฐ๋œ ์‹คํ—˜๊ณผ ๊ทธ ์ด์œ  |
| `docs/training-log.md` | ํ•™์Šต ์ด๋ ฅยท์‹คํŒจ์™€ ์›์ธยท์„ค์ • ๋ณ€๊ฒฝ ๊ทผ๊ฑฐ |
| `docs/evidence-index.md` | ๊ฐ ์ฃผ์žฅ์˜ ๊ทผ๊ฑฐ์™€ ์žฌํ˜„ ๋ช…๋ น |
| `docs/review-log.md` | ์‹ฌ์‚ฌ ์ง€์  โ†’ ์กฐ์น˜ โ†’ ์ปค๋ฐ‹, ๊ทธ๋ฆฌ๊ณ  **ํ•˜์ง€ ์•Š์€ ๊ฒƒ๊ณผ ๊ทธ ์ด์œ ** |
| ๋ฃจํŠธ `CLAUDE.md` | ์„ธ์…˜ ์šด์˜ยท์„œ๋ฒ„ ํ•จ์ •. **ยง5 ์™„ํ™” ํ•ญ๋ชฉ**(์›๋ณธ๊ณผ์˜ ์˜ˆ์‚ฐ ์ผ์น˜๋Š” ํ•„์ˆ˜๊ฐ€ ์•„๋‹˜)์„ ๋ฐ˜๋“œ์‹œ ๋ณผ ๊ฒƒ |
## 7. ๋ฐฑ์—… ์ƒํƒœ
- **GitHub** `jungseoik/hawk` โ€” ์ฝ”๋“œยท๋…ผ๋ฌธยท๋ฌธ์„œ ์ „๋ถ€. ๋ฏธ์ปค๋ฐ‹ 0
- **HF** `backseollgi/Cerberus` โ€” `ablation_v2/`(์™„์ฃผ arm ์ฒดํฌํฌ์ธํŠธยท๋กœ๊ทธยท์„ค์ •),
`docs/`, `results/`, `benchmark/`
์ฒดํฌํฌ์ธํŠธ๋Š” arm ๋‹น 77GB ๋ผ **์™„์ฃผํ•œ arm ์˜ ์ตœ์ข…๋ณธ๋งŒ** ์˜ฌ๋ฆฐ๋‹ค. ์ค‘๊ฐ„ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ํ•„์š”ํ•˜๋ฉด
`seoik/runs` ์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ.