Dongkkka/pi0_dashboard_0904_20k_16bs
PI0: Cyclo dashboard, 20,000 steps, batch size 16
Final 20,000-step checkpoint for pick up the bottle and place it into basket. The trained LoRA adapter is merged into its pinned base model for ordinary LeRobot policy loading. Saved processors and normalization statistics are included.
Training
- Batch size: 16; optimizer steps: 20,000; seed: 42.
- Base:
lerobot/pi0_base, revision25c379b52ba2ff8788cab921758a3cc3fe3f77f2. - LoRA rank 16, alpha 32; BF16; learning rate 1e-4 to 1e-5; warmup 1,000.
- All 28 episodes / 5,133 frames used for training; no held-out split.
- Cameras:
observation.images.rgb.cam_left_head,observation.images.rgb.cam_left_wrist,observation.images.rgb.cam_right_wrist. - State/action dimension: 22; action chunk: 50.
- First 19 action channels are absolute joint positions; last three are mobile-base velocities.
- State and action use the saved mean/std normalization; relative actions are disabled.
Loading
from lerobot.policies.pi0.modeling_pi0 import PI0Policy
from lerobot.policies.factory import make_pre_post_processors
repo_id = "Dongkkka/pi0_dashboard_0904_20k_16bs"
policy = PI0Policy.from_pretrained(repo_id).to("cuda").eval()
preprocessor, postprocessor = make_pre_post_processors(
policy.config, pretrained_path=repo_id,
preprocessor_overrides={"device_processor": {"device": "cuda"}},
)Use the Cyclo LeRobot environment used for training. The saved processor references the google/paligemma-3b-pt-224 tokenizer, which is fetched separately when needed. train_config.json preserves the original training paths and LoRA configuration for provenance; the published model itself has the adapter merged. Optimizer and resume states remain in the local training checkpoint.
Verification
Training completed successfully at step 20,000. Base weights loaded strictly and all loaded adapter tensors matched the saved adapter exactly. Safe merging, saved-weight comparisons after reload, and finite (1, 50, 22) inference from one training observation passed. BF16 before/after merge differences are recorded in merge_report.json. This is a serialization and inference check, not a robot success-rate or held-out generalization evaluation.
