Index
2026-09-04 — Experiment

FurnitureSim 정책 최종 비교: pi0.5 단독 30k / 4가구 통합 b128 / LingBot-VA

FurnitureBench | job 109002, replan 10, max 1000 step, low randomness

TL;DR

0.36
one_leg 최종 (b128 통합, 18/50)
0.24
one_leg 단독 30k (12/50)
0.157
LingBot-VA one_leg (8/51)
4×
유효 batch (4 GPU) 효과

1 배경 / 목적

pi0.5(pi05_base)를 FurnitureSim one_leg low scripted 데모 344 ep로 30k step 파인튜닝한 학습(job 108562)이 완료됐다(최종 ckpt 29999). 중간 평가는 20 ep뿐이라 2/20·1/20 같은 수치의 차이가 노이즈인지 판단할 수 없었고, replan 10(액션 청크 전부 실행)이 replan 5보다 낫다는 것만 확인된 상태였다. 최종 ckpt를 50 ep로 평가해 학습 곡선의 끝점과 실패 모드를 확정한다.

2 설정

sbmr 3 "bash scripts/eval_pi05_furniture.sh pi05_furniture_one_leg_low <ckpt 29999> one_leg 50 low 10 1000" --gres=gpu:1 -c 8 --mem 200GB --qos=extra 서버: openpi serve_policy (JAX, XLA mem 0.6) / 클라이언트: FurnitureSimFull-v0 (py3.8, CPU tensors), 같은 GPU replan 10 = action horizon 10을 모두 open-loop 실행 후 재추론 · max 1000 step(데이터 수집 timeout과 동일) · low randomness phase proxy: 베이스 3 cm 이동(1) / 다리 3 cm 들림(2) / 다리–베이스 중심거리 <12 cm(3) / all_assembled(4)

3 결과

ckptreplann성공률mean phasephase 분포 1/2/3/4
10k5200.002.451/9/10/0
10k10200.102.005/10/5/0
20k10200.052.652/4/13/1
30k (29999)10500.242.886/6/26/12
30k ckpt 성공 에피소드(ep 3, 왼쪽 wrist / 오른쪽 front). 베이스 밀기 → 다리 집기 → 삽입 → 나사 조이기.
학습이 아직 포화되지 않았다. 10k→30k에서 성공률 0.10→0.24, mean phase 2.0→2.88. lr cosine decay는 30k에서 끝났으므로, 같은 데이터로 학습을 연장하거나 lr 스케줄을 늘리면 추가 향상 여지가 있다.
삽입 정밀도가 병목이라는 진단은 10k/20k와 일관. 데모 344개 중 삽입/나사 구간은 충분히 포함돼 있으므로(57% 프레임), 데이터 다양성(1000 ep) 또는 삽입 구간의 replan 간격 조정이 다음 레버.

4 Takeaway

scripted 데모 → LeRobot → pi0.5 파인튜닝 → 서버/클라이언트 closed-loop 평가 파이프라인이 end-to-end로 동작하고, 학습이 진행될수록 성공률이 오르는 것이 n=50에서 확인됐다. 논문 sim one_leg low 참고치(1000 demo, IQL≈0.4–0.5)에는 못 미치지만 데모 1/3·2뷰·튜닝 없이 0.24는 파이프라인 검증으로 충분하다.

5 Next

6 업데이트 — LingBot-VA 학습 곡선: step 400 → 5000 (phase 1.70 → 2.86, 최종 성공률 0.157 n=51)

같은 one_leg low 데이터로 학습 중인 LingBot-VA(video-action world model, job 108915)의 step 400 체크포인트(≈8k 샘플)를 새 평가 파이프라인(scripts/lingbot/eval_lingbot_furniture.sh, job 108991)으로 10 ep 평가.

정책학습량n성공률mean phasephase 1/2/3/4추론 비용
LingBot-VA step 400≈8k 샘플100.001.705/3/2/00.55 s/step (546 s/ep)
LingBot-VA step 1200 (preempt, 5 ep)≈24k 샘플50.002.601/0/4/0〃
LingBot-VA step 1400≈28k 샘플100.002.401/4/5/0〃
LingBot-VA step 2000≈40k 샘플100.002.800/2/8/0〃
LingBot-VA step 3000≈60k 샘플100.202.901/1/6/2〃
LingBot-VA step 5000 (최종, 3 run 합산)≈100k 샘플510.1572.864/7/32/8〃
pi0.5 10k (replan 10)≈320k 샘플200.102.005/10/5/0≈0.06 s/step
pi0.5 30k (replan 10)≈960k 샘플500.242.886/6/26/12≈0.06 s/step
LingBot-VA step 400, ep 0 (phase 3/4): 베이스 밀기와 다리 집기까지는 수행, 삽입 실패.
LingBot-VA step 3000 첫 성공(ep 1, 519 step): world-model이 생성한 latent에서 뽑은 action만으로 삽입·나사까지 완료.
step 3000에서 첫 성공 2/10. 학습 샘플 ≈6만 개(pi0.5 30k의 1/16)로 pi0.5 30k(0.24, n=50)와 같은 수준의 성공률과 phase(2.90 vs 2.88)에 도달 → 샘플 효율은 LingBot이 크게 앞선다. 다만 n=10이라 신뢰구간 ±0.25, 추론은 0.7 s/step으로 pi0.5보다 ~10배 느리다. 5000 step에서 20–30 ep로 재확인.
LingBot-VA step 5000 성공 에피소드(ep 20, 501 step).
최종 비교 (one_leg low, 같은 344 ep 데이터): LingBot-VA 5000 step(≈100k 샘플) 성공률 0.157 (8/51, phase 2.86) vs pi0.5 30k(≈960k 샘플) 0.24 (12/50, phase 2.88). 샘플 1/10로 같은 phase에 도달했지만 성공률은 pi0.5가 높고, 추론은 pi0.5가 ≈10배 빠르다. 두 정책 모두 실패의 70% 이상이 삽입 직전(phase 3)이라 병목은 모델보다 데이터 다양성 쪽 → 데모 1000 ep 증량이 공통 레버.
step 400에서 베이스 밀기(평균 0.20 m)와 다리 접근(2 ep에서 phase 3, 최소 거리 3.5 cm)이 이미 나오는 건 샘플 효율 면에서 나쁘지 않다. 다만 world-model 추론은 chunk당 20 video + 50 action denoise step(CFG 5)이라 pi0.5보다 ~9배 느리다. 학습이 5000 step(≈100k 샘플)까지 가는 동안 step 1000/2000/3000/5000에서 같은 10 ep 평가를 반복해 곡선을 비교한다(후속 job 109054는 45분 지연 시작으로 step 1000을 잡도록 제출).

7 업데이트 — all_low(4 가구 통합) 20k 중간 ckpt 가구별 평가: 4 가구 모두 0/20

all_low(1,304 ep) pi0.5 40k 학습(108868)의 20k 중간 체크포인트를 가구별 20 ep(replan 10, max 1000)로 평가(job 109220–109223).

가구조립 쌍 수성공률mean phasephase 0/1/2/3/4부품 조립 ≥1
one_leg10.002.400/4/4/12/00/20
lamp20.002.300/1/12/7/00/20
round_table20.001.952/7/1/10/00/20
cabinet30.001.900/8/6/6/00/20
task당 학습량이 1/4. 통합 20k = batch 32 × 20k = 640k 샘플을 4 task가 나눠 가져 task당 ≈160k = one_leg 단독 5k step 수준(단독 5k도 성공 0). 최종 40k라도 task당 ≈ 단독 10k(0.10) 수준에 그친다. multi-task가 해롭다는 근거는 없고(모든 가구에서 베이스 밀기·부품 들기·접근은 학습됨), 유효 batch를 키워 task당 샘플을 맞춰야 비교가 성립한다.
다음 run all_low_v2: 4 GPU, batch 128(32/GPU), 40k step(5.1M 샘플, task당 ≈ 단독 40k 수준), peak lr 5e-5 유지. openpi는 GPU 수만큼 batch를 자동 분산하므로 config의 batch_size와 --gres=gpu:4만 바꾸면 된다. v1(108868)은 완주시켜 40k 가구별 baseline으로 쓴다.

8 업데이트 — all_low v1 최종(40k) 가구별 50 ep: one_leg 0.04, 나머지 0 (부분 조립 각 1–2회)

가구조립 쌍20k 성공률 / phase (n=20)40k 성공률 / phase (n=50)40k phase 0/1/2/3/4부분 조립 ≥1쌍
one_leg10.00 / 2.400.04 / 2.740/4/7/37/22/50
lamp20.00 / 2.300.00 / 2.360/4/25/20/11/50
round_table20.00 / 1.950.00 / 2.821/4/0/43/22/50
cabinet30.00 / 1.900.00 / 1.720/29/7/13/11/50
20k에서 0이던 부품 조립이 40k에서 4 가구 모두 1–2회 나왔지만 성공률은 one_leg 0.04뿐. task당 샘플이 one_leg 단독 10k(0.10) 수준이라는 예측과 일치한다. 통합 학습의 효과 판정은 유효 batch 4배인 all_low_b128 v2(109612, 4 GPU) 결과로 한다. 학습 14h14m(1 GPU) + 가구별 평가 ≈ 50 min.

9 업데이트 — all_low b128 v2(4 GPU, batch 128) 20k 중간: one_leg 0.10, cabinet 부분 조립 4/20

가구v1 20k (n=20)v1 40k (n=50)b128 20k (n=20)b128 20k phase 0/1/2/3/4부분 조립
one_leg0.00 / 2.400.04 / 2.740.10 / 3.000/0/2/16/22/20
lamp0.00 / 2.300.00 / 2.360.00 / 2.350/1/11/8/00/20
round_table0.00 / 1.950.00 / 2.820.00 / 3.050/0/0/19/11/20
cabinet0.00 / 1.900.00 / 1.720.00 / 2.250/7/2/10/14/20
유효 batch 가설 확인. b128 20k(task당 ≈640k 샘플)는 v1 40k(task당 ≈320k)보다 모든 가구에서 phase가 높고, one_leg 0.10은 단독 학습 10–20k 수준과 일치한다. 4 GPU로 step 시간은 그대로(1.1 s)이므로 같은 벽시계 시간에 4배 학습이 된 셈. 40k 최종(task당 ≈ 단독 40k)은 가구별 50 ep로 평가한다.

10 최종 — all_low b128 v2 40k 가구별 50 ep: one_leg 0.36 (단독 30k 0.24 초과), lamp 첫 완전 조립

가구조립 쌍v1 40k (n=50)b128 20k (n=20)b128 40k (n=50)b128 40k phase 0/1/2/3/4부분 조립 ≥1쌍
one_leg10.04 / 2.740.10 / 3.000.36 / 3.320/0/2/30/1818/50
lamp20.00 / 2.360.00 / 2.350.02 / 2.620/3/14/32/11/50 (2쌍 완성)
round_table20.00 / 2.820.00 / 3.050.00 / 3.180/0/0/41/99/50
cabinet30.00 / 1.720.00 / 2.250.00 / 2.660/11/10/14/1515/50
b128 40k one_leg 성공(ep 2). 4 가구 통합 모델.
b128 40k lamp 첫 완전 조립(ep 49, 939 step, 2쌍 모두).
유효 batch 4배(4 GPU, batch 128)가 이번 라운드의 결정적 변수. 같은 40k step에서 v1(b32) → v2(b128)로 전 가구 phase +0.3~0.9, 부분 조립 1–2회 → 9–18회, one_leg 0.04 → 0.36. one_leg 단독 30k(0.24)보다 높으므로 4 가구를 한 모델로 학습해도 손해가 없고, 논문의 sim one_leg 참고치(1000 demo, IQL ≈0.4–0.5)에 근접했다.
남은 병목: (1) 삽입 정밀도 — one_leg 실패 32개 중 30개가 phase 3. (2) 다부품 가구의 2번째 쌍 — round_table/cabinet은 첫 쌍이 18–30%에서 들어가지만 그 이후는 0. 데모는 가구당 320 ep, 평가 max_steps 1000은 lamp/cabinet 데모 길이와 비슷해 여유가 없다. 다음 라운드: one_leg 300→1000 ep 증량 재학습, 다부품 max_steps 1500–2000, LingBot all_low 4 GPU 비교.