Views
No views yet
pi05_base) for a simulated household manipulation
task: wipe a dusty container clean with a sponge, then transfer a potato into
it. Trained with the ManiGuard
pipeline (NU IDEAS Lab) on top of a pristine openpi trainer.task field
(prompt_from_task=True). Three variants:gs://openpi-assets/checkpoints/pi05_base/params (warm-start).gemma_2b_lora + action expert gemma_300m_lora; base
frozen, only the LoRA adapters trained (openpi freeze_filter).action_dim=32 (padded), action_horizon=16, pi05=True,
discrete_state_input default (True).base_0_rgb ← image_left (third-person overview),
left_wrist_0_rgb ← wrist_image; the third slot (right_wrist_0_rgb) is
zero-filled and masked off.IDEAS-Lab-Northwestern/sim-dusty-transfer-30-joint-3cam
(LeRobot v2.1, private): 30 episodes / 20,265 frames, sim teleop rendered
joint + 3-cam (image_left / image_right / wrist_image); consumed 2-cam
(image_right dropped). Episode split across the 3 task variants: 12 / 10 / 8.| Hardware | 4× RTX A5000 (24 GB), FSDP (fsdp_devices=4) |
| Precision | float32 (see note) |
| Global batch | 12 (3 / GPU) |
| Steps | 3,380 (~2 epochs) |
| LR schedule | cosine, warmup 340, peak 3e-5, decay → 3e-6 |
| Optimizer | AdamW (b1 0.9, b2 0.95), global-norm grad clip 1.0, EMA off |
| Wall-clock | ~6.75 h; final train loss ~0.014 (from ~0.069), no divergence |
dtype="float32" removed the instability. If you
fine-tune on larger-memory GPUs (data-parallel, no FSDP), bf16 is fine and
faster.maniguard.openpi_sft module (openpi itself unmodified).