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. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ฆฌ๊ธฐ ์ „์— ํ•  ์ผ

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 /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/ ์— ๋˜๋Œ๋ฆฐ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„

cd /home/work/seoik
claude --continue          # ๊ฐ€์žฅ ์ตœ๊ทผ ๋Œ€ํ™”๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์–ด๊ฐ
claude --resume            # ๋ชฉ๋ก์—์„œ ๊ณจ๋ผ ์ด์–ด๊ฐ

์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค โ€” ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ๋จผ์ € ๋Œ๋ ค์•ผ --resume ๋ชฉ๋ก์— ๊ณผ๊ฑฐ ์„ธ์…˜์ด ๋ณด์ธ๋‹ค. (--resume ์€ claude ๊ฐ€ ๋œจ๋Š” ์‹œ์ ์— ๊ธฐ๋ก์„ ์ฝ์œผ๋ฏ€๋กœ, ์‹คํ–‰ ํ›„์— ๋ณต์›ํ•ด๋„ ๊ทธ ํšŒ์ฐจ์—๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค.)

๊ธฐ๋ก ์ €์žฅ์€ ์„ธ ๊ฒน์ด๋‹ค: ๋ถ€ํŒ… ์‹œ --restore, 5๋ถ„ ์ฃผ๊ธฐ ๋ฐ๋ชฌ --save, ์ •์ƒ ์ข…๋ฃŒ ์‹œ SessionEnd ํ›…. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ˆ๊ณ  ์—†์ด ์ฃฝ์–ด๋„ ์ตœ๋Œ€ 5๋ถ„ ๋ถ„๋Ÿ‰๋งŒ ์žƒ๋Š”๋‹ค. ์ƒํƒœ ํ™•์ธ:

bash scripts/claude_state_sync.sh --status

ํ™•์ธ:

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์žฅ ๋ณ‘๋ ฌ

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. ํ•™์Šต์ด ๋๋‚˜๋ฉด

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 ์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ.