Add pretrained notebook

This commit is contained in:
Simon Alibert
2024-03-16 17:36:13 +01:00
parent b633748987
commit 4c1024e537
8 changed files with 1701 additions and 16 deletions

4
.gitignore vendored
View File

@@ -1,3 +1,7 @@
# Apple
.DS_Store
._.DS_Store
# Logging
logs
tmp

View File

@@ -23,6 +23,13 @@ repos:
- id: ruff
args: [--fix]
- id: ruff-format
- repo: https://github.com/nbQA-dev/nbQA
rev: 1.8.4
hooks:
- id: nbqa-ruff
- id: nbqa-pyupgrade
args: ["--py310-plus"]
- id: nbqa-isort
- repo: https://github.com/python-poetry/poetry
rev: 1.8.0
hooks:

View File

@@ -0,0 +1,31 @@
from pprint import pprint
from hydra import compose, initialize
from hydra.core.global_hydra import GlobalHydra
from omegaconf import OmegaConf
from omegaconf.dictconfig import DictConfig
CONFIG_DIR = "../lerobot/configs"
DEFAULT_CONFIG = "default"
def config_notebook(
policy: str = "diffusion",
env: str = "pusht",
device: str = "cpu",
config_name=DEFAULT_CONFIG,
config_path=CONFIG_DIR,
print_config: bool = False,
) -> DictConfig:
GlobalHydra.instance().clear()
initialize(config_path=config_path)
overrides = [
f"env={env}",
f"policy={policy}",
f"device={device}",
]
cfg = compose(config_name=config_name, overrides=overrides)
if print_config:
pprint(OmegaConf.to_container(cfg))
return cfg

56
examples/pretrained.ipynb Normal file
View File

@@ -0,0 +1,56 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from pathlib import Path\n",
"\n",
"from IPython.display import Video\n",
"\n",
"from examples.notebook_utils import config_notebook\n",
"from lerobot.scripts.eval import eval\n",
"\n",
"OUT_DIR = Path(\"./outputs\")\n",
"POLICY = \"act\"\n",
"ENV = \"aloha\"\n",
"\n",
"# setup config\n",
"cfg = config_notebook(policy=POLICY, env=ENV, device=\"cpu\", print_config=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"eval(cfg, out_dir=OUT_DIR)\n",
"Video(OUT_DIR / \"eval\" / \"eval_episode_0.mp4\", embed=True)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "lerobot",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@@ -145,6 +145,7 @@ def eval(cfg: dict, out_dir=None):
logging.info("make_env")
env = make_env(cfg, transform=offline_buffer.transform)
# TODO(aliberts, Cadene): fetch pretrained model from HF hub
if cfg.policy.pretrained_model_path:
policy = make_policy(cfg)
policy = TensorDictModule(

View File

@@ -25,15 +25,6 @@ def train_cli(cfg: dict):
)
def train_notebook(out_dir=None, job_name=None, config_name="default", config_path="../configs"):
from hydra import compose, initialize
hydra.core.global_hydra.GlobalHydra.instance().clear()
initialize(config_path=config_path)
cfg = compose(config_name=config_name)
train(cfg, out_dir=out_dir, job_name=job_name)
def log_train_info(logger, info, step, cfg, offline_buffer, is_offline):
loss = info["loss"]
grad_norm = info["grad_norm"]

1602
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -60,6 +60,13 @@ debugpy = "^1.8.1"
pytest = "^8.1.0"
[tool.poetry.group.examples]
optional = true
[tool.poetry.group.examples.dependencies]
jupyter = "^1.0.0"
[tool.ruff]
line-length = 110
target-version = "py310"