Index
2026-05-11 — Experiment

DA3 vitl Stitch Layer 탐색 — layer 6 최적 결정

VGGRPO | DA3 backbone Phase B 진입점 결정 (job 1287, 13분 완료)

TL;DR

6
Best Layer
0.0249
MSE (layer 6)
0.0253
MSE (layer 5)
0.1364
MSE (layer 1)
13min
Job Elapsed

1 배경 / 목적

DA3 backbone으로 전환(260430~260501)한 후, LGM connector가 DA3 transformer의 어느 레이어 출력에 붙어야 GT depth 예측이 가장 잘 되는지 결정이 필요했다. 레이어 선택이 Phase B 학습 품질에 직접 영향을 주기 때문에 학습 시작 전 반드시 결정해야 한다.

DA3 vitl은 24개의 transformer block을 가지며, block 8부터 alt_start=8 (alternate-attention) 구조가 시작된다. 스티칭 후보는 alt_start보다 앞에 있는 레이어(1~8)를 탐색 대상으로 잡았다.

설계 근거: alt_start 이전 레이어들은 standard full-attention으로 global scene 정보를 처리. alt_start 이후는 교차 attention 패턴이 달라져 feature 분포가 바뀌므로, 스티칭은 alt 구조 진입 전에 놓는 것이 합리적.

2 작업 내용

스크립트: scripts/find_stitch_layer_da3.shscripts/find_stitch_layer_da3.py 실행. SLURM job 1287 (--qos=extra, --gres=gpu:1), 13분 37초 완료.

탐색 방법 (closed-form ridge regression)

각 레이어 ∈ {1, …, 8}에 대해:

  1. DA3 vitl에서 레이어 출력 feature 추출 (shape: [B, T, H_grid, W_grid, C])
  2. Conv3d(kernel=5×5×5, stride=1×2×2, pad=2×2×2)로 spatial 압축
  3. GT depth와 closed-form ridge regression으로 최적 projection 계산
  4. held-out clip에서 MSE 측정
backbone: DA3 vitl (depth-anything/DA3-LARGE-1.1) alt_start: 8 rope_start: 8 dataset: RoboCasa v0.1 216×384 depth sealed tasks: 24 (kitchen_coffee 3 + kitchen_doors 4 + kitchen_drawer 2 + kitchen_microwave 2 + kitchen_pnp 8 + kitchen_sink 3 + kitchen_stove 2) clips/task: 3 frames/clip: 32 n_views: 3 (frontview, robot0_eye_in_hand, agentview) ridge: 1e-4 patch_grid: [21, 37] n_rows_total: 5,370,624

3 결과

Layer MSE vs layer 6 비고
1 0.13636 +447% early feature, 매우 low-level
2 0.05477 +120%
3 0.03568 +43%
4 0.03111 +25%
5 0.02528 +1.3% 2위 — layer 6과 근접
6 0.02493 ✅ 최솟값 채택 (alt_start=8 직전 2번째)
7 0.02804 +12.5% alt_start 이전 1번째 (약간 반등)
8 0.03376 +35.4% alt_start 진입 레이어
Layer 5→6→7 구간에서 U자 최솟값: layer 6이 MSE 0.0249로 최소. layer 5(0.0253) 대비 1.6% 낮음. layer 7(0.0280) 대비 11.1% 낮음. alt_start=8 직전 2번째 레이어가 depth 정보 밀도가 가장 높음.
Layer 7→8 반등: alt_start=8에서 attention 패턴이 바뀌면서 MSE가 0.028→0.034로 증가. alt 구조가 feature 분포를 변환시켜 단순 Conv3d projection에 불리해지는 것으로 해석.

출력 파일:

experiments/stitch_search_da3/ best_layer.json # {"best_layer": 6, "mse_per_layer": {...}} conv3d_init_layer1.pt # 각 레이어 ridge solution → Conv3d 초기화 가중치 conv3d_init_layer2.pt ... conv3d_init_layer6.pt # ← Phase B 학습에 사용 conv3d_init_layer8.pt mse_curve.png

4 Takeaway

아키텍처 해석

DA3 vitl의 standard transformer block들(layer 1~7)은 레이어가 깊어질수록 depth 정보를 선형적으로 축적하다가, alt_start 직전(layer 6~7)에서 geometry-rich feature가 최대화된다. Layer 6이 최적인 이유는 충분히 깊은 semantic feature + alt 구조에 의한 분포 변환 전 마지막 "순수" representation이기 때문으로 추정.

이 선택은 Phase B 학습의 시작점을 결정한다. Conv3d init weight를 ridge solution으로 초기화하면 학습 초반 수렴 속도가 빨라진다.

프로젝트 의미: Phase B 학습에 layer 6 채택 확정. conv3d_init_layer6.pt로 LGM connector 초기화 → train_lgm_robocasa_da3_v0.sh 즉시 시작 가능.

5 Next Steps