lerobot/README.md

137 lines
2.4 KiB
Markdown
Raw Normal View History

# LeRobot
## Installation
Install dependencies using `conda`:
```
conda env create -f environment.yaml
conda activate lerobot
```
2024-02-28 17:57:08 +08:00
Install `torchrl`, `tensordict` and `diffusion_policy` dev builds
```
cd path/to/root
git clone https://github.com/pytorch/tensordict
git clone https://github.com/pytorch/rl
git clone https://github.com/real-stanford/diffusion_policy
cd tensordict
python setup.py develop
cd ../rl
python setup.py develop
cd ../diffusion_policy
python setup.py develop
```
Install additional modules
```
pip install \
hydra \
termcolor \
einops \
pygame \
pymunk \
zarr \
gym \
shapely \
opencv-python \
scikit-image \
mpmath==1.3.0 \
```
Fix Hydra
```
pip install hydra-core --upgrade
```
2024-01-31 07:30:14 +08:00
**dev**
```
python setup.py develop
```
2024-02-22 20:14:12 +08:00
## Usage
### Train
```
python lerobot/scripts/train.py \
2024-02-27 19:44:26 +08:00
hydra.job.name=pusht \
env=pusht
2024-02-22 20:14:12 +08:00
```
### Visualize offline buffer
```
python lerobot/scripts/visualize_dataset.py \
2024-02-27 19:44:26 +08:00
hydra.run.dir=tmp/$(date +"%Y_%m_%d") \
env=pusht
2024-02-22 20:14:12 +08:00
```
### Visualize online buffer / Eval
```
python lerobot/scripts/eval.py \
2024-02-27 19:44:26 +08:00
hydra.run.dir=tmp/$(date +"%Y_%m_%d") \
env=pusht
2024-02-22 20:14:12 +08:00
```
## TODO
2024-02-16 23:14:59 +08:00
- [x] priority update doesnt match FOWM or original paper
- [x] self.step=100000 should be updated at every step to adjust to horizon of planner
- [ ] prefetch replay buffer to speedup training
- [ ] parallelize env to speedup eval
- [ ] clean checkpointing / loading
- [ ] clean logging
- [ ] clean config
- [ ] clean hyperparameter tuning
- [ ] add pusht
- [ ] add aloha
- [ ] add act
- [ ] add diffusion
- [ ] add aloha 2
## Profile
**Example**
```python
from torch.profiler import profile, record_function, ProfilerActivity
def trace_handler(prof):
prof.export_chrome_trace(f"tmp/trace_schedule_{prof.step_num}.json")
with profile(
activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA],
schedule=torch.profiler.schedule(
wait=2,
warmup=2,
active=3,
),
on_trace_ready=trace_handler
) as prof:
with record_function("eval_policy"):
for i in range(num_episodes):
prof.step()
```
```bash
python lerobot/scripts/eval.py \
pretrained_model_path=/home/rcadene/code/fowm/logs/xarm_lift/all/default/2/models/final.pt \
eval_episodes=7
```
2024-01-31 07:30:14 +08:00
## Contribute
2024-02-25 18:52:31 +08:00
**Style**
2024-01-31 07:30:14 +08:00
```
2024-02-25 19:09:47 +08:00
isort lerobot && isort tests && black lerobot && black tests
pylint lerobot && pylint tests # not enforce for now
2024-01-31 07:30:14 +08:00
```
2024-02-25 18:52:31 +08:00
**Tests**
```
pytest -sx tests
```