Skip to content
Merged
Show file tree
Hide file tree
Changes from 97 commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
3d509aa
Add draccus, create MainConfig
Dec 5, 2024
82f197b
WIP refactor train.py and ACT
Dec 18, 2024
bed1ec3
Add policies training presets
Dec 23, 2024
0ab28eb
Update diffusion policy
Dec 23, 2024
a82e004
Add pusht and xarm env configs
Dec 23, 2024
d2ca27a
Update tdmpc
Dec 23, 2024
250e380
Update vqbet
Dec 23, 2024
d8ad763
Fix poetry relax
Dec 23, 2024
928a417
Add feature types to envs
Dec 27, 2024
b5f3287
Add EvalPipelineConfig, parse features from envs
Dec 27, 2024
72e84f2
Add custom parser
Jan 6, 2025
f6443d9
Update pretrained loading mechanisms
Jan 6, 2025
06b604b
Add dependency fixes & lock update
Jan 6, 2025
4a4ef9b
Fix pretrained_path
Jan 6, 2025
68463a3
Refactor envs, remove RealEnv
Jan 7, 2025
2bdf1d2
Fix typo
Jan 7, 2025
9c6edc2
Enable end-to-end tests
Jan 7, 2025
a29a1f1
Fix Makefile
Jan 7, 2025
d83a94c
Log eval config
Jan 8, 2025
26eef6e
Fix end-to-end tests
Jan 8, 2025
e2508f7
Merge remote-tracking branch 'origin/main' into user/aliberts/2024_11…
Jan 8, 2025
b799e02
Remove amp & add resume test
Jan 8, 2025
6c5667a
Speed-up tests
Jan 8, 2025
af96b04
Fix poetry relax
Jan 8, 2025
4261c5a
Remove config yaml for robot devices (#594)
Cadene Jan 9, 2025
6f62154
Merge remote-tracking branch 'origin/main' into user/aliberts/2024_11…
Jan 9, 2025
02b996a
Fix logger
Jan 9, 2025
a69b425
Remove hydra-core
Jan 9, 2025
5871fe8
Remove NoneSchedulerConfig
Jan 9, 2025
3c5e8a5
Add push_pretrained
Jan 9, 2025
1eb8527
Remove eval.episode_length
Jan 9, 2025
abaf654
Fix wandb_video
Jan 9, 2025
6bd9e12
Fix typo
Jan 10, 2025
aa228c0
Add features back into policy configs (#643)
aliberts Jan 16, 2025
83174ea
Merge remote-tracking branch 'origin/main' into user/aliberts/2024_11…
Jan 16, 2025
3623feb
Fix env_to_policy_features call
Jan 16, 2025
e11e762
Fix wandb init
Jan 17, 2025
ae44cd0
remove omegaconf
Jan 17, 2025
340ed02
Add branch arg
Jan 20, 2025
14008ab
Move deprecated
Jan 21, 2025
95a1670
Move training config
Jan 21, 2025
b953595
Remove pathable_args
Jan 21, 2025
3bfdc5e
Implement custom HubMixin
Jan 23, 2025
5c8d5bd
Fixes
Jan 23, 2025
af36a88
Implement PreTrainedPolicy base class
Jan 23, 2025
a12f474
Add HubMixin to TrainPipelineConfig
Jan 23, 2025
8e3777a
Udpate example 2 & 3
Jan 23, 2025
71212b8
Update push_pretrained
Jan 23, 2025
309ae9c
Merge remote-tracking branch 'origin/main' into user/aliberts/2024_11…
Jan 23, 2025
136bf50
Fix config_class
Jan 23, 2025
17358d6
Fix from_pretrained kwargs
Jan 23, 2025
0862e20
Remove policy_protocol
Jan 23, 2025
25f9020
Camelize PretrainedConfig
Jan 23, 2025
4e7c4dd
Additional fix while retraining policies (#629)
Cadene Jan 24, 2025
48d1817
Actually reactivate tdmpc online test
Jan 24, 2025
1ee59ed
Update example 4
Jan 24, 2025
3b1e64b
Remove advanced example 1
Jan 24, 2025
a5ab25a
Remove example 5
Jan 24, 2025
5d112c6
Move example 6 to advanced
Jan 24, 2025
220f818
Use HubMixin.save_pretrained
Jan 24, 2025
d2d536a
Enable config_path to be a repo_id
Jan 25, 2025
6c4bc32
Dry has_method
Jan 25, 2025
119b269
Update example 4
Jan 25, 2025
2d7d533
Update README
Jan 25, 2025
457e4bc
Cleanup pyproject.toml
Jan 25, 2025
ca3e362
Update eval docstring
Jan 25, 2025
d3ef145
Update README
Jan 25, 2025
2bf3d75
Clean example 4
Jan 25, 2025
105e9b8
Update README
Jan 25, 2025
b0771b7
Make 'last' checkpoint symlink relative
Jan 26, 2025
225c4f6
Merge remote-tracking branch 'origin/main' into user/aliberts/2024_11…
Jan 26, 2025
8ac9429
Simplify example 4
Jan 26, 2025
080d8b0
Update docstrings
Jan 26, 2025
c53167c
Change default device selection, add warnings & errors
Jan 26, 2025
967ae99
Use validate instead of __post_init__
Jan 27, 2025
56a6f58
Fix
Jan 27, 2025
8cca5bd
Remove validate
Jan 27, 2025
d06505f
Fix tests
Jan 27, 2025
85c6f3a
Skip push_dataset_to_hub tests
Jan 28, 2025
ad458b6
Add exceptions
Jan 28, 2025
3551dc5
Update factories docstrings
Jan 28, 2025
d86fc23
Update validations
Jan 28, 2025
940e9d8
Remove deprecated config files
Jan 28, 2025
214083f
Update robot examples with draccus commands (#654)
Cadene Jan 28, 2025
aa65bb7
Add pusht hack
Jan 28, 2025
584691c
Fix
Jan 28, 2025
bac217c
Fix logging
Jan 28, 2025
742848b
Fix logging
Jan 28, 2025
cb18417
Fix policy factory
Jan 28, 2025
9f85df2
Simplify config validation logic
Jan 28, 2025
693810f
Update example 4
Jan 28, 2025
03da0a8
Revert "Add pusht hack"
Jan 29, 2025
840b980
Fix --control.policy.path (#662)
Cadene Jan 29, 2025
2666041
Fix train real world (#664)
Cadene Jan 30, 2025
17029a0
Merge remote-tracking branch 'origin/main' into user/aliberts/2024_11…
Jan 30, 2025
ca1bee7
Fix torch 2.6 load()
Jan 31, 2025
58adcbe
Apply suggestions from code review
aliberts Jan 31, 2025
61b5fe2
Fix examples
Jan 31, 2025
02cea75
Apply suggestions from code review
aliberts Jan 31, 2025
f2a20f2
Merge branch 'user/aliberts/2024_11_30_remove_hydra' of github.com:hu…
Jan 31, 2025
71aee4e
Add code review suggestions
Jan 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 35 additions & 36 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,39 +101,38 @@ jobs:
-W ignore::UserWarning:gymnasium.utils.env_checker:247 \
&& rm -rf tests/outputs outputs

# TODO(aliberts, rcadene): redesign after v2 migration / removing hydra
# end-to-end:
# name: End-to-end
# runs-on: ubuntu-latest
# env:
# MUJOCO_GL: egl
# steps:
# - uses: actions/checkout@v4
# with:
# lfs: true # Ensure LFS files are pulled

# - name: Install apt dependencies
# # portaudio19-dev is needed to install pyaudio
# run: |
# sudo apt-get update && \
# sudo apt-get install -y libegl1-mesa-dev portaudio19-dev

# - name: Install poetry
# run: |
# pipx install poetry && poetry config virtualenvs.in-project true
# echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH

# - name: Set up Python 3.10
# uses: actions/setup-python@v5
# with:
# python-version: "3.10"
# cache: "poetry"

# - name: Install poetry dependencies
# run: |
# poetry install --all-extras

# - name: Test end-to-end
# run: |
# make test-end-to-end \
# && rm -rf outputs
end-to-end:
name: End-to-end
runs-on: ubuntu-latest
env:
MUJOCO_GL: egl
steps:
- uses: actions/checkout@v4
with:
lfs: true # Ensure LFS files are pulled

- name: Install apt dependencies
# portaudio19-dev is needed to install pyaudio
run: |
sudo apt-get update && \
sudo apt-get install -y libegl1-mesa-dev portaudio19-dev

- name: Install poetry
run: |
pipx install poetry && poetry config virtualenvs.in-project true
echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH

- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "poetry"

- name: Install poetry dependencies
run: |
poetry install --all-extras

- name: Test end-to-end
run: |
make test-end-to-end \
&& rm -rf outputs
251 changes: 108 additions & 143 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,171 +20,136 @@ build-gpu:

test-end-to-end:
${MAKE} DEVICE=$(DEVICE) test-act-ete-train
${MAKE} DEVICE=$(DEVICE) test-act-ete-train-resume
${MAKE} DEVICE=$(DEVICE) test-act-ete-eval
${MAKE} DEVICE=$(DEVICE) test-act-ete-train-amp
${MAKE} DEVICE=$(DEVICE) test-act-ete-eval-amp
${MAKE} DEVICE=$(DEVICE) test-diffusion-ete-train
${MAKE} DEVICE=$(DEVICE) test-diffusion-ete-eval
${MAKE} DEVICE=$(DEVICE) test-tdmpc-ete-train
${MAKE} DEVICE=$(DEVICE) test-tdmpc-ete-train-with-online
${MAKE} DEVICE=$(DEVICE) test-tdmpc-ete-eval
${MAKE} DEVICE=$(DEVICE) test-default-ete-eval
${MAKE} DEVICE=$(DEVICE) test-act-pusht-tutorial
${MAKE} DEVICE=$(DEVICE) test-tdmpc-ete-train-with-online

test-act-ete-train:
python lerobot/scripts/train.py \
policy=act \
policy.dim_model=64 \
env=aloha \
wandb.enable=False \
training.offline_steps=2 \
training.online_steps=0 \
eval.n_episodes=1 \
eval.batch_size=1 \
device=$(DEVICE) \
training.save_checkpoint=true \
training.save_freq=2 \
policy.n_action_steps=20 \
policy.chunk_size=20 \
training.batch_size=2 \
training.image_transforms.enable=true \
hydra.run.dir=tests/outputs/act/

test-act-ete-eval:
python lerobot/scripts/eval.py \
-p tests/outputs/act/checkpoints/000002/pretrained_model \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=8 \
device=$(DEVICE) \

test-act-ete-train-amp:
--policy.type=act \
--policy.dim_model=64 \
--policy.n_action_steps=20 \
--policy.chunk_size=20 \
--env.type=aloha \
--env.episode_length=5 \
--dataset.repo_id=lerobot/aloha_sim_transfer_cube_human \
--dataset.image_transforms.enable=true \
--dataset.episodes="[0]" \
--batch_size=2 \
--offline.steps=4 \
--online.steps=0 \
--eval.n_episodes=1 \
--eval.batch_size=1 \
--save_freq=2 \
--save_checkpoint=true \
--log_freq=1 \
--wandb.enable=false \
--device=$(DEVICE) \
--output_dir=tests/outputs/act/

test-act-ete-train-resume:
python lerobot/scripts/train.py \
policy=act \
policy.dim_model=64 \
env=aloha \
wandb.enable=False \
training.offline_steps=2 \
training.online_steps=0 \
eval.n_episodes=1 \
eval.batch_size=1 \
device=$(DEVICE) \
training.save_checkpoint=true \
training.save_freq=2 \
policy.n_action_steps=20 \
policy.chunk_size=20 \
training.batch_size=2 \
hydra.run.dir=tests/outputs/act_amp/ \
training.image_transforms.enable=true \
use_amp=true
--config_path=tests/outputs/act/checkpoints/000002/pretrained_model/train_config.json \
--resume=true

test-act-ete-eval-amp:
test-act-ete-eval:
python lerobot/scripts/eval.py \
-p tests/outputs/act_amp/checkpoints/000002/pretrained_model \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=8 \
device=$(DEVICE) \
use_amp=true
--policy.path=tests/outputs/act/checkpoints/000004/pretrained_model \
--env.type=aloha \
--env.episode_length=5 \
--eval.n_episodes=1 \
--eval.batch_size=1 \
--device=$(DEVICE)

test-diffusion-ete-train:
python lerobot/scripts/train.py \
policy=diffusion \
policy.down_dims=\[64,128,256\] \
policy.diffusion_step_embed_dim=32 \
policy.num_inference_steps=10 \
env=pusht \
wandb.enable=False \
training.offline_steps=2 \
training.online_steps=0 \
eval.n_episodes=1 \
eval.batch_size=1 \
device=$(DEVICE) \
training.save_checkpoint=true \
training.save_freq=2 \
training.batch_size=2 \
training.image_transforms.enable=true \
hydra.run.dir=tests/outputs/diffusion/
--policy.type=diffusion \
--policy.down_dims='[64,128,256]' \
--policy.diffusion_step_embed_dim=32 \
--policy.num_inference_steps=10 \
--env.type=pusht \
--env.episode_length=5 \
--dataset.repo_id=lerobot/pusht \
--dataset.image_transforms.enable=true \
--dataset.episodes="[0]" \
--batch_size=2 \
--offline.steps=2 \
--online.steps=0 \
--eval.n_episodes=1 \
--eval.batch_size=1 \
--save_checkpoint=true \
--save_freq=2 \
--log_freq=1 \
--wandb.enable=false \
--device=$(DEVICE) \
--output_dir=tests/outputs/diffusion/

test-diffusion-ete-eval:
python lerobot/scripts/eval.py \
-p tests/outputs/diffusion/checkpoints/000002/pretrained_model \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=8 \
device=$(DEVICE) \
--policy.path=tests/outputs/diffusion/checkpoints/000002/pretrained_model \
--env.type=pusht \
--env.episode_length=5 \
--eval.n_episodes=1 \
--eval.batch_size=1 \
--device=$(DEVICE)

test-tdmpc-ete-train:
python lerobot/scripts/train.py \
policy=tdmpc \
env=xarm \
env.task=XarmLift-v0 \
dataset_repo_id=lerobot/xarm_lift_medium \
wandb.enable=False \
training.offline_steps=2 \
training.online_steps=0 \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=2 \
device=$(DEVICE) \
training.save_checkpoint=true \
training.save_freq=2 \
training.batch_size=2 \
training.image_transforms.enable=true \
hydra.run.dir=tests/outputs/tdmpc/

test-tdmpc-ete-train-with-online:
python lerobot/scripts/train.py \
env=pusht \
env.gym.obs_type=environment_state_agent_pos \
policy=tdmpc_pusht_keypoints \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=10 \
device=$(DEVICE) \
training.offline_steps=2 \
training.online_steps=20 \
training.save_checkpoint=false \
training.save_freq=10 \
training.batch_size=2 \
training.online_rollout_n_episodes=2 \
training.online_rollout_batch_size=2 \
training.online_steps_between_rollouts=10 \
training.online_buffer_capacity=15 \
eval.use_async_envs=true \
hydra.run.dir=tests/outputs/tdmpc_online/

--policy.type=tdmpc \
--env.type=xarm \
--env.task=XarmLift-v0 \
--env.episode_length=5 \
--dataset.repo_id=lerobot/xarm_lift_medium \
--dataset.image_transforms.enable=true \
--dataset.episodes='[0]' \
--batch_size=2 \
--offline.steps=2 \
--online.steps=0 \
--eval.n_episodes=1 \
--eval.batch_size=1 \
--save_checkpoint=true \
--save_freq=2 \
--log_freq=1 \
--wandb.enable=false \
--device=$(DEVICE) \
--output_dir=tests/outputs/tdmpc/

test-tdmpc-ete-eval:
python lerobot/scripts/eval.py \
-p tests/outputs/tdmpc/checkpoints/000002/pretrained_model \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=8 \
device=$(DEVICE) \
--policy.path=tests/outputs/tdmpc/checkpoints/000002/pretrained_model \
--env.type=xarm \
--env.episode_length=5 \
--env.task=XarmLift-v0 \
--eval.n_episodes=1 \
--eval.batch_size=1 \
--device=$(DEVICE)

test-default-ete-eval:
python lerobot/scripts/eval.py \
--config lerobot/configs/default.yaml \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=8 \
device=$(DEVICE) \

test-act-pusht-tutorial:
cp examples/advanced/1_train_act_pusht/act_pusht.yaml lerobot/configs/policy/created_by_Makefile.yaml
test-tdmpc-ete-train-with-online:
python lerobot/scripts/train.py \
policy=created_by_Makefile.yaml \
env=pusht \
wandb.enable=False \
training.offline_steps=2 \
eval.n_episodes=1 \
eval.batch_size=1 \
env.episode_length=2 \
device=$(DEVICE) \
training.save_model=true \
training.save_freq=2 \
training.batch_size=2 \
training.image_transforms.enable=true \
hydra.run.dir=tests/outputs/act_pusht/
rm lerobot/configs/policy/created_by_Makefile.yaml
--policy.type=tdmpc \
--env.type=pusht \
--env.obs_type=environment_state_agent_pos \
--env.episode_length=5 \
--dataset.repo_id=lerobot/pusht_keypoints \
--dataset.image_transforms.enable=true \
--dataset.episodes='[0]' \
--batch_size=2 \
--offline.steps=2 \
--online.steps=20 \
--online.rollout_n_episodes=2 \
--online.rollout_batch_size=2 \
--online.steps_between_rollouts=10 \
--online.buffer_capacity=1000 \
--online.env_seed=10000 \
--save_checkpoint=false \
--save_freq=10 \
--log_freq=1 \
--eval.use_async_envs=true \
--eval.n_episodes=1 \
--eval.batch_size=1 \
--device=$(DEVICE) \
--output_dir=tests/outputs/tdmpc_online/
Loading