--- license: apache-2.0 library_name: lerobot pipeline_tag: robotics tags: - lerobot - pi05 - vla - robocasa - robosuite - manipulation datasets: - DAVIAN-Robotics/robocasa-H50 base_model: lerobot/pi05_base --- # pi0.5 — RoboCasa H50 (fine-tuned) 강의 `sk-260713-vision-lecture` (SK 비전 강의, 시뮬레이션 VLA 실습) 의 baseline 체크포인트다. [LeRobot](https://github.com/huggingface/lerobot) 의 `pi05` 정책(π0.5, flow-matching VLA)을 `lerobot/pi05_base` 에서 출발해 RoboCasa 키친 데이터셋으로 full fine-tuning 했다. ## 데이터 - **[`DAVIAN-Robotics/robocasa-H50`](https://huggingface.co/datasets/DAVIAN-Robotics/robocasa-H50)** — 1,293 에피소드 / 242 태스크 (LeRobot v3.0 포맷, RoboCasa 키친). ## 학습 설정 | 항목 | 값 | |---|---| | base | `lerobot/pi05_base` (PaliGemma `gemma_2b` + action expert `gemma_300m`) | | learning rate | `1e-4` (cosine decay, warmup 3,000 → decay_lr 2.5e-6) | | batch size | `64` | | steps | **60,000** | | tune targets | `tune_all` (visual + llm + action_expert 전부 학습) | | chunk size | `50` | | dtype | bfloat16 | | optimizer | AdamW (betas 0.9/0.95, wd 0.01, grad clip 1.0) | ## 모델 config (`config.json`) - `chunk_size = 50`, `n_action_steps = 25`, `num_inference_steps = 10` (flow matching 적분 스텝) - 카메라 **3대** — `robot0_agentview_left_image`, `robot0_agentview_right_image`, `robot0_eye_in_hand_image`. 각 `3×128×128` 입력이며 정책 내부에서 `224×224` (`image_resolution`) 로 리사이즈된다. - state **16-d** (`max_state_dim=32` 로 패딩), action **12-d** (`max_action_dim=32` 로 패딩) - 정규화: VISUAL=IDENTITY, STATE/ACTION=QUANTILES — 통계는 `policy_preprocessor_*.safetensors` / `policy_postprocessor_*.safetensors` 에 baked 되어 있다. **반드시 함께 로드해야 한다** (아래 참조). ## 검증된 성능 `PnPCounterToCab`, **40 에피소드**, `max_steps=500`: | 조건 | Success Rate | |---|---| | 원본 랜덤 씬 (layout/style/오브젝트 전부 랜덤 — 학습 분포와 동일) | **0.550** | | 고정-apple 씬 (layout 0 / style 0 / apple — 강의 실습 기본 config) | **0.575** | π0.5 는 flow matching 이라 청크마다 노이즈를 새로 뽑는다 → 같은 env seed 에서도 SR 이 흔들린다. 40 에피소드 기준 95% Wilson CI 는 약 ±0.15 다. 이 범위 밖의 차이만 유의미하게 읽어라. ## 사용법 ```python from lerobot.policies.factory import get_policy_class, make_pre_post_processors from huggingface_hub import snapshot_download path = snapshot_download("DAVIAN-Robotics/pi05-robocasa-H50") policy = get_policy_class("pi05").from_pretrained(path).to("cuda").eval() pre, post = make_pre_post_processors(policy_cfg=policy.config, pretrained_path=path) ``` `pre` / `post` 를 직접 만들면 정규화 통계가 어긋나 **성공률이 조용히 0 으로 떨어진다** — 반드시 `pretrained_path=` 로 체크포인트에 baked 된 통계를 로드하라. 옵티마이저 상태(`training_state/`, 13.4GB)는 포함하지 않았다. 추론/평가 전용이다. ## 출처 · 라이선스 - 학습 코드: LeRobot (Apache-2.0), base 모델 `lerobot/pi05_base` (Physical Intelligence π0.5 를 LeRobot 이 포팅). - 시뮬레이터: [RoboCasa](https://github.com/robocasa/robocasa) / [robosuite](https://github.com/ARISE-Initiative/robosuite) (MIT). - 본 체크포인트: **Apache-2.0**. base 모델과 데이터셋의 원 라이선스/이용 약관을 함께 따른다. - 제작: DAVIAN Lab (KAIST) — 강의 `sk-260713-vision-lecture` 실습용. ## Tokenizer `tokenizer/` contains the PaliGemma tokenizer (`google/paligemma-3b-pt-224`), redistributed so that the policy can be loaded without HuggingFace authentication. The upstream repository is gated; `policy_preprocessor.json` references it by name, so `AutoTokenizer.from_pretrained()` would otherwise fail with a 401 for users who have not accepted Google's terms. **Gemma is provided under and subject to the [Gemma Terms of Use](https://ai.google.dev/gemma/terms).** By using these tokenizer files you agree to those terms. See also the [Gemma Prohibited Use Policy](https://ai.google.dev/gemma/prohibited_use_policy).