Simplify README: clear per-env table, download code, clean structure
Browse files
README.md
CHANGED
|
@@ -7,126 +7,73 @@ tags:
|
|
| 7 |
- model-based-control
|
| 8 |
- jepa
|
| 9 |
- reinforcement-learning
|
| 10 |
-
- latent-planning
|
| 11 |
-
- iterative-control
|
| 12 |
---
|
| 13 |
|
| 14 |
-
# LePlanner
|
| 15 |
|
| 16 |
-
|
| 17 |
|
| 18 |
-
|
| 19 |
-
> [Authors], [Year].
|
| 20 |
-
> [Paper link β arXiv / venue]
|
| 21 |
-
|
| 22 |
-
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.
|
| 23 |
|
| 24 |
## Results
|
| 25 |
|
| 26 |
-
| Environment |
|
| 27 |
-
|---|---|---|
|
| 28 |
-
| PushT |
|
| 29 |
-
|
|
| 30 |
-
|
|
| 31 |
-
| Reacher | LePlanner (rh=1) | **100%** | 50 episodes, seed 42 |
|
| 32 |
-
| TwoRooms | LePlanner (rh=1) | **100%** | 50 episodes, seed 42 |
|
| 33 |
-
|
| 34 |
-
LePlanner uses **~16Γ fewer predictor rows per decision** than CEM and **8β15Γ lower wall-clock** per decision.
|
| 35 |
|
| 36 |
-
##
|
| 37 |
|
| 38 |
```python
|
| 39 |
from huggingface_hub import hf_hub_download
|
| 40 |
|
| 41 |
-
#
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
| 45 |
repo_type="model",
|
| 46 |
)
|
| 47 |
|
| 48 |
-
#
|
| 49 |
wm_path = hf_hub_download(
|
| 50 |
-
"
|
| 51 |
-
"checkpoints/base_world_models/
|
| 52 |
repo_type="model",
|
| 53 |
)
|
| 54 |
```
|
| 55 |
|
| 56 |
-
|
| 57 |
|
| 58 |
## Repository Structure
|
| 59 |
|
| 60 |
```
|
| 61 |
checkpoints/
|
| 62 |
-
βββ environment_controllers/
|
| 63 |
-
β βββ reacher/
|
| 64 |
-
β
|
| 65 |
-
|
| 66 |
-
β βββ
|
| 67 |
-
|
| 68 |
-
β
|
| 69 |
-
βββ
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
β βββ reacher/ # quentinll/lewm-reacher (MIT)
|
| 76 |
-
β βββ tworooms/ # quentinll/lewm-tworooms (MIT)
|
| 77 |
-
βββ planner_*/ # Recursive & cross-attention planners
|
| 78 |
-
βββ manifold_transfer/ # Latent transfer experiments
|
| 79 |
-
βββ density/ # PushT behavior density model
|
| 80 |
-
|
| 81 |
-
code/ # Training & evaluation scripts
|
| 82 |
-
βββ planner.py # LePlanner controller
|
| 83 |
-
βββ solver.py # Training/eval harness
|
| 84 |
-
βββ losses.py # Arrival-hold, action-Gaussian, support losses
|
| 85 |
-
βββ scripts/ # train_planner.py, eval_planner.py, ...
|
| 86 |
-
|
| 87 |
-
latents/ # Pre-computed latent caches
|
| 88 |
-
βββ reacher/ # Latents, actions, episode metadata
|
| 89 |
-
βββ tworoom_cls/
|
| 90 |
-
|
| 91 |
-
results/ # Raw evaluation logs
|
| 92 |
-
βββ eval/results.jsonl # PushT eval across planners
|
| 93 |
-
βββ eval_planner/results.jsonl
|
| 94 |
```
|
| 95 |
|
| 96 |
-
## Key Checkpoints
|
| 97 |
-
|
| 98 |
-
| File | Description |
|
| 99 |
-
|---|---|
|
| 100 |
-
| `checkpoints/ablations/ah_hold0.5/controller.pt` | **Headline PushT controller** β 98% at rh=1, 92% at rh=5 |
|
| 101 |
-
| `checkpoints/environment_controllers/reacher/controller.pt` | Reacher controller β 100% |
|
| 102 |
-
| `checkpoints/environment_controllers/tworooms/controller.pt` | TwoRooms controller β 100% |
|
| 103 |
-
| `checkpoints/base_world_models/pusht/weights.pt` | Frozen PushT world model (LeWM) |
|
| 104 |
-
| `checkpoints/base_world_models/reacher/weights.pt` | Frozen Reacher world model (LeWM) |
|
| 105 |
-
| `checkpoints/base_world_models/tworooms/weights.pt` | Frozen TwoRooms world model (LeWM) |
|
| 106 |
-
|
| 107 |
-
## Training & Evaluation
|
| 108 |
-
|
| 109 |
-
The controller and planner checkpoints are trained in this project; the LeWM world model is **always frozen** while those planners are trained.
|
| 110 |
-
|
| 111 |
-
Training code: [`github.com/SaltedLemon/lejepa_control`](https://github.com/SaltedLemon/lejepa_control)
|
| 112 |
-
|
| 113 |
-
Each controller checkpoint embeds its training arguments, action statistics, step, and validation profile.
|
| 114 |
-
|
| 115 |
## Citation
|
| 116 |
|
| 117 |
-
If you use this code or these checkpoints, please cite:
|
| 118 |
-
|
| 119 |
```bibtex
|
| 120 |
@article{leplanner,
|
| 121 |
title = {LePlanner: Amortized Iterative Control in Frozen Latent World Models},
|
| 122 |
author = {[Authors]},
|
| 123 |
-
journal = {[Venue
|
| 124 |
year = {[Year]},
|
| 125 |
-
url = {https://huggingface.co/SaltedLemon/lejepa-control-pusht}
|
| 126 |
}
|
| 127 |
```
|
| 128 |
-
|
| 129 |
-
## License
|
| 130 |
-
|
| 131 |
-
- **Controller/planner code and checkpoints:** as specified in the linked `lejepa_control` repository.
|
| 132 |
-
- **LeWM world model weights** (`base_world_models/pusht`, `reacher`, `tworooms`): MIT licensed upstream from `quentinll/lewm-*`.
|
|
|
|
| 7 |
- model-based-control
|
| 8 |
- jepa
|
| 9 |
- reinforcement-learning
|
|
|
|
|
|
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# LePlanner
|
| 13 |
|
| 14 |
+
Official checkpoints for **LePlanner: Amortized Iterative Control in Frozen Latent World Models**.
|
| 15 |
|
| 16 |
+
[[Paper](link-to-paper)] [[Code](https://github.com/SaltedLemon/lejepa_control)]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
## Results
|
| 19 |
|
| 20 |
+
| Environment | Success | Checkpoint |
|
| 21 |
+
|---|---|---|
|
| 22 |
+
| PushT | 98% (rh=1) | `checkpoints/ablations/ah_hold0.5/controller.pt` |
|
| 23 |
+
| Reacher | 100% | `checkpoints/environment_controllers/reacher/controller.pt` |
|
| 24 |
+
| TwoRooms | 100% | `checkpoints/environment_controllers/tworooms/controller.pt` |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
+
## Download a Controller
|
| 27 |
|
| 28 |
```python
|
| 29 |
from huggingface_hub import hf_hub_download
|
| 30 |
|
| 31 |
+
# Choose your environment: "pusht", "reacher", or "tworooms"
|
| 32 |
+
env = "reacher"
|
| 33 |
+
|
| 34 |
+
# Download controller
|
| 35 |
+
controller_path = hf_hub_download(
|
| 36 |
+
"nottygian/Leplanner",
|
| 37 |
+
f"checkpoints/environment_controllers/{env}/controller.pt",
|
| 38 |
repo_type="model",
|
| 39 |
)
|
| 40 |
|
| 41 |
+
# Download matching world model
|
| 42 |
wm_path = hf_hub_download(
|
| 43 |
+
"nottygian/Leplanner",
|
| 44 |
+
f"checkpoints/base_world_models/{env}/weights.pt",
|
| 45 |
repo_type="model",
|
| 46 |
)
|
| 47 |
```
|
| 48 |
|
| 49 |
+
> **Note:** For PushT, the best controller is at `checkpoints/ablations/ah_hold0.5/controller.pt`.
|
| 50 |
|
| 51 |
## Repository Structure
|
| 52 |
|
| 53 |
```
|
| 54 |
checkpoints/
|
| 55 |
+
βββ environment_controllers/ # Trained LePlanner controllers
|
| 56 |
+
β βββ reacher/controller.pt # 100% success
|
| 57 |
+
β βββ tworooms/controller.pt # 100% success
|
| 58 |
+
βββ ablations/
|
| 59 |
+
β βββ ah_hold0.5/controller.pt # PushT: 98% success
|
| 60 |
+
βββ base_world_models/ # Frozen LeWM world models
|
| 61 |
+
β βββ pusht/weights.pt
|
| 62 |
+
β βββ reacher/weights.pt
|
| 63 |
+
β βββ tworooms/weights.pt
|
| 64 |
+
βββ density/ # Behavior density models
|
| 65 |
+
|
| 66 |
+
code/ # Training & evaluation scripts
|
| 67 |
+
results/eval/results.jsonl # Raw evaluation logs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
```
|
| 69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
## Citation
|
| 71 |
|
|
|
|
|
|
|
| 72 |
```bibtex
|
| 73 |
@article{leplanner,
|
| 74 |
title = {LePlanner: Amortized Iterative Control in Frozen Latent World Models},
|
| 75 |
author = {[Authors]},
|
| 76 |
+
journal = {[Venue]},
|
| 77 |
year = {[Year]},
|
|
|
|
| 78 |
}
|
| 79 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|