Leplanner / README.md
nottygian's picture
Update results: PushT 98% rh1 / 92% rh5, Reacher 100%, TwoRooms 100%
01a9e74 verified
|
Raw History Blame
5.32 kB
---
license: other
license_name: mixed-apache-2.0-and-mit
tags:
- robotics
- world-model
- model-based-control
- jepa
- reinforcement-learning
- latent-planning
- iterative-control
---
# LePlanner: Amortized Iterative Control in Frozen Latent World Models
This repository contains the trained controllers, frozen world models, latent caches, and evaluation results for **LePlanner**:
> **LePlanner: Amortized Iterative Control in Frozen Latent World Models**
> [Authors], [Year].
> [Paper link β€” arXiv / venue]
LePlanner is an amortized iterative controller that plans through a **frozen JEPA world model** (LeWM) over a small number of learned refinement steps, trained with an **arrival–hold** objective. It matches or exceeds test-time search planners (CEM) while requiring an order-of-magnitude fewer predictor invocations and 8–15Γ— lower wall-clock per decision.
## Results
| Environment | Method | Success | Notes |
|---|---|---|---|
| PushT | LePlanner (rh=1) | **98%** | arrival+hold checkpoint |
| PushT | LePlanner (rh=5) | **92%** | |
| PushT | CEM (rh=5) | 90% | baseline search planner |
| Reacher | LePlanner (rh=1) | **100%** | 50 episodes, seed 42 |
| TwoRooms | LePlanner (rh=1) | **100%** | 50 episodes, seed 42 |
LePlanner uses **~16Γ— fewer predictor rows per decision** than CEM and **8–15Γ— lower wall-clock** per decision.
## Quick Start
```python
from huggingface_hub import hf_hub_download
# Load a controller checkpoint
ckpt_path = hf_hub_download(
"SaltedLemon/lejepa-control-pusht",
"checkpoints/environment_controllers/reacher/controller.pt",
repo_type="model",
)
# Load a frozen world model
wm_path = hf_hub_download(
"SaltedLemon/lejepa-control-pusht",
"checkpoints/base_world_models/reacher/weights.pt",
repo_type="model",
)
```
The training code is available at [`github.com/SaltedLemon/lejepa_control`](https://github.com/SaltedLemon/lejepa_control).
## Repository Structure
```
checkpoints/
β”œβ”€β”€ environment_controllers/ # Trained LePlanner controllers (per-environment)
β”‚ β”œβ”€β”€ reacher/
β”‚ β”‚ β”œβ”€β”€ controller.pt # 100% success, rh=1
β”‚ β”‚ └── density.pt # Behavior density model
β”‚ └── tworooms/
β”‚ β”œβ”€β”€ controller.pt # 100% success, rh=1
β”‚ └── density.pt
β”œβ”€β”€ controller/ # PushT iterative controller (phase-1)
β”œβ”€β”€ ablations/ # PushT training ablations
β”‚ └── ah_hold0.5/
β”‚ └── controller.pt # Headline PushT checkpoint (94-96%)
β”œβ”€β”€ base_world_models/ # Frozen LeWM world models
β”‚ β”œβ”€β”€ pusht/ # quentinll/lewm-pusht (MIT)
β”‚ β”œβ”€β”€ reacher/ # quentinll/lewm-reacher (MIT)
β”‚ └── tworooms/ # quentinll/lewm-tworooms (MIT)
β”œβ”€β”€ planner_*/ # Recursive & cross-attention planners
β”œβ”€β”€ manifold_transfer/ # Latent transfer experiments
└── density/ # PushT behavior density model
code/ # Training & evaluation scripts
β”œβ”€β”€ planner.py # LePlanner controller
β”œβ”€β”€ solver.py # Training/eval harness
β”œβ”€β”€ losses.py # Arrival-hold, action-Gaussian, support losses
└── scripts/ # train_planner.py, eval_planner.py, ...
latents/ # Pre-computed latent caches
β”œβ”€β”€ reacher/ # Latents, actions, episode metadata
└── tworoom_cls/
results/ # Raw evaluation logs
β”œβ”€β”€ eval/results.jsonl # PushT eval across planners
└── eval_planner/results.jsonl
```
## Key Checkpoints
| File | Description |
|---|---|
| `checkpoints/ablations/ah_hold0.5/controller.pt` | **Headline PushT controller** β€” 98% at rh=1, 92% at rh=5 |
| `checkpoints/environment_controllers/reacher/controller.pt` | Reacher controller β€” 100% |
| `checkpoints/environment_controllers/tworooms/controller.pt` | TwoRooms controller β€” 100% |
| `checkpoints/base_world_models/pusht/weights.pt` | Frozen PushT world model (LeWM) |
| `checkpoints/base_world_models/reacher/weights.pt` | Frozen Reacher world model (LeWM) |
| `checkpoints/base_world_models/tworooms/weights.pt` | Frozen TwoRooms world model (LeWM) |
## Training & Evaluation
The controller and planner checkpoints are trained in this project; the LeWM world model is **always frozen** while those planners are trained.
Training code: [`github.com/SaltedLemon/lejepa_control`](https://github.com/SaltedLemon/lejepa_control)
Each controller checkpoint embeds its training arguments, action statistics, step, and validation profile.
## Citation
If you use this code or these checkpoints, please cite:
```bibtex
@article{leplanner,
title = {LePlanner: Amortized Iterative Control in Frozen Latent World Models},
author = {[Authors]},
journal = {[Venue / arXiv]},
year = {[Year]},
url = {https://huggingface.co/SaltedLemon/lejepa-control-pusht}
}
```
## License
- **Controller/planner code and checkpoints:** as specified in the linked `lejepa_control` repository.
- **LeWM world model weights** (`base_world_models/pusht`, `reacher`, `tworooms`): MIT licensed upstream from `quentinll/lewm-*`.