Index
2026-06-08 — Progress / Recovery

frappe/GR00T-Dreams 데이터 손실 사고 — 코드 100% 복구 + mid 6 트랙 재학습

DreamData (FRAPPE on pi0.5) | 260606 사고 · 복구 · 재학습 제출

TL;DR

10
손실 ckpt 트랙
7
복구 핵심 파일
6
재학습 제출 트랙
1
정상 완료 (base)
1
CANCELLED (vit)

1 배경/목적 — 무슨 일이 일어났나

260606 21:17, 사용자가 디스크 공간 확보를 위해 정리 작업 중 frappe/ 디렉토리와 GR00T-Dreams/outputs/, GR00T-Dreams/scripts/를 통째 삭제하였다. 이 시점까지 완료된 학습 체크포인트(ckpt) 10개 트랙 전부와 eval 스크립트 일체가 손실되었다.

손실 목록 (ckpt ~200GB+):
pi05_frappe_{base, midA, midB, mid_dinov2, mid_clip, mid_vit, moe_v1, moe_v2, moe_v3, moe_full} — 10 트랙 전부.
GR00T-Dreams/scripts/eval_pi05_frappe_poc.py, run_frappe_eval_24tasks.sh 등 eval 스크립트도 삭제됨.

이전 실험 결과 요약 (손실 전 확정된 수치, claude/260529/analysis-moe_post_degradation.md):

트랙24-task SR (480 ep)비고
midA (theia VLM tap)67.1%최고 — sweet spot
moe-v1 (midA init, 3× align)66.7%midA −0.4%p
moe-v2 (midA + RDT 4수정)66.2%midA −0.9%p
midB (expert tap)65.8%
base (full-FT 20K)63.5%기준선
moe-v3 (frappe_base init)62.7%base보다 낮음

핵심 결론은 보존되어 있다: midA가 sweet spot이며 MoE post-train은 어떤 변형도 midA를 초과하지 못했다. alt teacher (DINOv2/CLIP) 실험 (jobs 12051~12053) 결과 (CloseDoubleDoor 20ep: DINOv2=75%, CLIP=75%) 역시 기록 보존됨. full 24-task eval은 아직 미완이었다.

2 작업 내용 — 복구 및 재학습 제출

코드 복구 방법

Claude Code는 .claude/projects/<hash>/*.jsonl 파일에 모든 Write/Edit 도구 호출 이력을 보관한다. 이 jsonl을 순서대로 replay함으로써 삭제된 소스 코드 파일을 그대로 재생성했다. ckpt은 바이너리이므로 이 방법으로 복구 불가능하다.

복구 완료 파일 (100%):
frappe/models/pi05_frappe/{configuration, policy, model, model_moe, model_moe_full, frappe_align, __init__}.py — 7 핵심 파일 (dtype fix 포함)
frappe/scripts/finetune_pi05_frappe{,_smoke,_moe,_moe_smoke,_moe_smoke_eval,_moe_full}.sh — 6 학습 스크립트
robot-data-gen/resfit/lerobot/scripts/train_bc_frappe.py — frappe 가드 14곳 포함
frappe/claude/{context.md, 260521~260529/*.md} — 전체 작업 로그
재생성 필요 (코드):
GR00T-Dreams/scripts/eval_pi05_frappe_poc.py — jsonl Edit 패치 + 직접 작성으로 재생성 가능
GR00T-Dreams/scripts/run_frappe_eval_24tasks.sh — 재생성 필요
frappe/scripts/finetune_pi05_frappe_moe_v2.sh, _v3.sh — sed 변종, 간단

재학습 제출

mid 6 트랙을 own QOS / 4GPU로 재제출. 각 ~3.7h (20K steps) 예상. 동시 2개 실행(own cap 8GPU) → 3 batch → 총 ~12h elapsed 예상.

conda activate pi05 source ~/slurm_commands.sh # 6 트랙 순차 제출 (own QOS — 동시 2개 실행) sbm "bash /abs/frappe/scripts/finetune_pi05_frappe.sh base" --qos=own --gres=gpu:4 -c 32 --mem 800GB # job 12966 sbm "bash /abs/frappe/scripts/finetune_pi05_frappe.sh midA" --qos=own --gres=gpu:4 -c 32 --mem 800GB # job 12967 sbm "bash /abs/frappe/scripts/finetune_pi05_frappe.sh midB" --qos=own --gres=gpu:4 -c 32 --mem 800GB # job 12968 sbm "bash /abs/frappe/scripts/finetune_pi05_frappe.sh mid_dinov2" --qos=own --gres=gpu:4 -c 32 --mem 800GB # job 12969 sbm "bash /abs/frappe/scripts/finetune_pi05_frappe.sh mid_clip" --qos=own --gres=gpu:4 -c 32 --mem 800GB # job 12970 sbm "bash /abs/frappe/scripts/finetune_pi05_frappe.sh mid_vit" --qos=own --gres=gpu:4 -c 32 --mem 800GB # job 12971 # 출력 경로: GR00T-Dreams/outputs/pi05_frappe_{track}/checkpoints/020000/pretrained_model/

3 결과 — 재학습 SLURM 상태

Job ID트랙상태Elapsed비고
12966baseCOMPLETED7h 38m정상 — 예상 범위 내
12967midACOMPLETED0h 04m이상 — 기존 ckpt 감지? 실패 가능성
12968midBCOMPLETED0h 04m이상 — 확인 필요
12969mid_dinov2COMPLETED0h 04m이상 — 확인 필요
12970mid_clipCOMPLETED0h 02m이상 — 확인 필요
12971mid_vitCANCELLED0h 02m취소됨 — 재제출 필요
주의: midA/midB/dinov2/clip 단시간 완료 이상
base(12966)는 예상대로 7h38min 소요됐지만, 나머지 4개는 3~4분 만에 COMPLETED 상태가 됐다. GR00T-Dreams/outputs/ 전체가 삭제된 상황에서 기존 ckpt 감지 후 조기 종료는 불가능하므로, 학습 초기에 에러 발생 후 exit 0로 종료했을 가능성이 크다. 각 트랙의 실제 ckpt 존재 여부를 수동 확인해야 한다.

코드 복구 결과: 7 핵심 Python 파일 모두 내용 일치 확인. train_bc_frappe.py frappe 가드 14곳 복구 완료. dtype fix(mat1 fp32 + mat2 bf16 → fused.dtype 맞춰 캐스팅)도 포함.

4 Takeaway

Claude Code jsonl이 재난 복구 안전망 역할

모든 Write/Edit 도구 호출이 .claude/projects/ jsonl에 기록되어 있어, 삭제된 코드를 순서대로 replay하면 완전 복구가 가능하다. 코드는 항상 복구 가능하나, ckpt(바이너리)는 불가능하다는 점이 다시 확인됐다. 중요 ckpt는 별도 NAS 경로에 복사해두는 습관이 필요하다.

5 Next Steps

즉시 (재학습 확인)

재학습 완료 후

한계: midA/midB/dinov2/clip 4개 트랙의 재학습 실제 성공 여부가 불확실하다. 비정상 단시간 완료(3~4분)의 원인이 명확하지 않으며, ckpt 경로 수동 확인이 필수다. mid_vit는 CANCELLED이므로 재제출이 확실히 필요하다.