TL;DR
- 학습 완료: frappe_moe 20K step 학습 완료 (job 10491, 4 GPU ×9h58m)
- 구조: midA frozen base에 teacher별 LoRA 3개(dinov2/clip/vit-B) + gate router 추가. 추론 시 gate-weighted 합산으로 denoising
- 학습 대상: LoRA 파라미터 + learnable token(256개) + projector + gate만 업데이트 (base Pi0.5 backbone은 freeze)
- 24-task eval 진행 중: job 10541 RUNNING (GR00T-Dreams 기준 ~48분 경과). CloseDoubleDoor in-train 수렴 확인(16/20=80%)
1 배경 / 목적
FRAPPE 3-way 비교(base 63.5% / midA 67.1% / midB 65.8%)에서 midA가 최고 성능임을 확인했다. 이제 MoE(Mixture of Experts) 확장으로 alignment를 더 발전시킨다. 기존 midA는 단일 visual teacher를 사용하지만, MoE는 3개의 서로 다른 visual teacher(DINOv2, CLIP, ViT)를 병렬 LoRA 브랜치로 처리하고 gate network가 task/scene에 따라 가중치를 동적으로 조합한다.
가설: 서로 다른 visual teacher의 특성(DINOv2=구조적 특징, CLIP=언어 연결성, ViT=global attention)을 gate가 complementary하게 조합하면 단일 teacher 대비 더 robust한 표현 학습이 가능할 것.
midA frozen base를 출발점으로 사용함으로써 이미 학습된 alignment 표현 위에 MoE 구조를 추가하는 구성. Base Pi0.5 backbone은 완전 freeze, 학습 대상은 LoRA/gate/projector만.
2 작업 내용
MoE 아키텍처
Branch 1
DINOv2 LoRA
구조적 시각 특징
Branch 2
CLIP LoRA
언어-시각 연결
Branch 3
ViT LoRA
Global attention
각 branch는 독립적인 LoRA (r=16, α=32, dropout=0.0)를 가지며, gate router가 3개 branch의 출력을 가중합산해 최종 denoising에 사용한다. policy.type=pi05_frappe_moe.
학습 설정
script : frappe/scripts/finetune_pi05_frappe_moe.sh
base : GR00T-Dreams/outputs/pi05_frappe_midA/checkpoints/020000/pretrained_model (frozen)
dataset : DAVIAN-Robotics/robocasa-MG_3000 (local cache)
output : GR00T-Dreams/outputs/pi05_frappe_moe/
# 주요 HP
policy.tap_layer=13 # 어느 transformer layer에서 tap
policy.num_learnable=256 # learnable visual token 수
policy.proj_coeff=0.05 # projector loss 가중치
policy.delta_lookahead=16 # temporal lookahead
policy.lora_r=16 lora_alpha=32 lora_dropout=0.0
policy.optimizer_lr=1e-4 weight_decay=0.01 grad_clip=1.0
policy.scheduler: warmup=1K → decay=20K → floor=2.5e-6
batch_size=8 grad_accum=2 (effective=16) workers=16
steps=20000 save_freq=1000 eval_freq=1000 (CloseDoubleDoor, 20ep)
tune_targets=[visual,llm,action_expert]
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True (MoE 활성화 ~3배)
SLURM: job 10491 | 4 GPU B200 | 9h58m | COMPLETED
(이전 시도 10485: 7분만에 실패, 10490: 30초 실패 후 세 번째 시도에서 성공)
OOM 주의: MoE는 branch별 full forward 3회 실행 → 활성화 메모리 ~3배. expandable_segments=True로 단편화 완화 처리. 초기 2회 시도(10485, 10490)는 빠르게 종료되었고, 세 번째 시도(10491)가 ~10h 정상 완료.
3 결과
학습 완료 현황
| 항목 | 내용 |
| 학습 완료 step | 20,000 |
| 저장된 마지막 체크포인트 | 020000 (checkpoints/last 심볼릭) |
| 삭제된 중간 체크포인트 | 016K, 017K, 018K, 019K (keep_last=5) |
| in-train eval (CloseDoubleDoor) | step 20K: 16/20 = 80% ✓ |
| 24-task eval | job 10541 RUNNING (~48분 경과, 약 7h 소요 예상) |
학습 정상 완료: 20K steps 체크포인트 생성 확인. in-train eval CloseDoubleDoor 80%(16/20)는 midA(85%, 17/20)와 유사한 수준으로, 학습이 제대로 수렴했음을 나타낸다.
전체 eval 결과 (예정)
| Variant | SR (전체) | 상태 |
| frappe_midA 현재 최고 | 67.1% (322/480) | 완료 |
| frappe_midB | 65.8% (316/480) | 완료 |
| frappe_base | 63.5% (305/480) | 완료 |
| frappe_moe eval 중 | — | job 10541 RUNNING |
수치 미확정: frappe_moe 24-task eval 결과는 약 7시간 후 확인 가능. MoE가 midA(67.1%)를 넘으면 +gain 확인, 그렇지 않으면 MoE 복잡도가 이 task 범위에서는 과한 것.
4 Takeaway
FRAPPE MoE: 복잡도 vs. 성능 gain의 trade-off 검증 단계
MoE 구조는 학습 시 메모리와 시간을 ~3배 더 사용한다(4 GPU × ~10h, midA/midB는 각 4h). 이 추가 비용이 eval 성능 향상으로 돌아오는지가 핵심 질문이다.
in-train eval(CloseDoubleDoor 80%)은 midA와 비슷한 수렴 궤도를 보여, 학습 자체는 문제 없음. MoE gate가 3개 teacher를 실제로 유효하게 조합하는지는 전체 24-task eval로만 판단 가능하다.
만약 MoE > midA(67.1%)라면: teacher diversity가 robocasa 24-task 범위에서 complementary하게 작동하는 증거. 다음으로 MoE를 synthetic 데이터(DreamGen AR 비디오) 기반 mix 학습에 적용하는 것이 타당해진다.
5 Next Steps
즉시: frappe_moe eval 결과 확인 (job 10541)
약 7시간 후 완료. 결과가 나오면 base/midA/midB/moe 4-way 최종 비교 테이블 작성. MoE > midA이면 MoE를 canonical 방향으로 확정, 그렇지 않으면 midA가 FRAPPE 트랙의 실용적 best.
MoE gate 분석
gate router가 task/scene에 따라 어떤 teacher를 선호하는지 분석 필요. 예: PnP task에서 DINOv2 weight가 높은지, door/drawer task에서 CLIP이 높은지. Gate weight 히스토그램으로 각 teacher의 역할을 해석할 수 있다.
DreamGen synthetic + MoE 결합
현재 FRAPPE 트랙은 real MG-3000만 사용. DreamGen AR 비디오(init0_v2 cosmos) 기반 synthetic action을 MoE 학습에 추가하는 실험이 DreamData 전체 파이프라인의 다음 단계. open-loop sim 11.1% SR 결과 참고해 어느 task의 synthetic 데이터가 유효한지 선별 필요.