Commit Graph

1489 Commits

Author SHA1 Message Date
CarolinePascal d8c17a20a0 typos(typos): typos 2026-05-13 16:33:27 +02:00
CarolinePascal cf6f92ac74 fix(re-encoding): removing inconsistent re-encoding option in lerobot_edit_dataset 2026-05-13 16:22:09 +02:00
CarolinePascal f0830972f0 docs(warning): adding warning regarding encoding parameters modification 2026-05-13 16:08:51 +02:00
CarolinePascal d1917a4871 chore(format): formatting code 2026-05-13 15:06:57 +02:00
CarolinePascal f89da582ae docs(dataset): addind details about datasets 2026-05-13 14:53:36 +02:00
CarolinePascal b48662b671 docs(clean): cleaning and formating docs 2026-05-13 14:35:26 +02:00
CarolinePascal c96092f199 chore(rename): renaming camera_encoder_config to camera_encoder 2026-05-13 14:25:59 +02:00
CarolinePascal fb142866dd fix(typos): fixing remaining typos 2026-05-13 12:40:47 +02:00
CarolinePascal 58dedba06e typo(typo): typo 2026-05-12 18:37:58 +02:00
CarolinePascal ba25a4f8db feat(codec options): passing codec options to lerobot_edit_dataset episode deletion tool 2026-05-12 18:34:49 +02:00
CarolinePascal 5b976cc926 fix(typos): fixing multiple typos 2026-05-12 18:22:55 +02:00
CarolinePascal 6c1b04b6c9 fix(deletion): reverting unwanted deletion 2026-05-12 17:47:44 +02:00
CarolinePascal 1846c7e847 docs(typos): fixing typos 2026-05-12 17:43:16 +02:00
CarolinePascal 88862c62b1 feat(aggregate): updating dataset aggregation procedure. Encoding tuning paramters (crf, g,...) are ignored for validation and changed to None in the aggregated dataset if incompatible. 2026-05-12 17:43:16 +02:00
CarolinePascal 63bbf092a0 test(factories): updating factories 2026-05-12 17:43:16 +02:00
CarolinePascal e22ecbbcda fix(typos): fixing typos and small mistakes 2026-05-12 17:43:16 +02:00
CarolinePascal cd2316460d fix(imports): refactoring the file architecture to avoid circular imports. VideoEncoderConfig is now defined in lerobot.configs and lazily imports av at runtime. 2026-05-12 17:43:16 +02:00
CarolinePascal 0c3e24e3d6 chore(fromat): formatting code 2026-05-12 17:43:16 +02:00
CarolinePascal 8174e1a6d4 chore(docs): updating docs 2026-05-12 17:43:16 +02:00
CarolinePascal 7f7c958d0b test(artifacts): cleaning up artifacts for the video encoding tests 2026-05-12 17:43:16 +02:00
CarolinePascal 336c07f2dc chore(relative imports): switching to relative local imports within lerobot.datasets 2026-05-12 17:43:16 +02:00
CarolinePascal 40bcc6ee18 fix(arguments order): reverting changes in arguments order in StreamingVideoEncoder 2026-05-12 17:43:16 +02:00
CarolinePascal 9c64f3f994 chore(format): formatting code, fixing error messages and variable names 2026-05-12 17:43:16 +02:00
CarolinePascal f4a5ed25d0 fix(rollout): propagating VideoEncoderConfig to the latest recording modes 2026-05-12 17:43:16 +02:00
CarolinePascal 9d4ac786f6 feat(default values): applying a consistent naming convention for default RGB cameras video encoder parameters 2026-05-12 17:43:16 +02:00
CarolinePascal fd0119f3db fix(camera_encoder_config): Removing camera_encoder_config from LeRobotDataset, as it's only required in LeRobotDatasetWriter. 2026-05-12 17:43:16 +02:00
CarolinePascal 486474bd67 chore(doctrings): updating docstrings 2026-05-12 17:43:15 +02:00
CarolinePascal b67aca9a84 chore(format): formatting code 2026-05-12 17:43:15 +02:00
CarolinePascal 6b9110d3e9 chore(PyAV): cleaning up PyAV utils and encoding parameters checks to stick to the minimun required tooling. 2026-05-12 17:43:15 +02:00
CarolinePascal c7dc56d8b5 chore(format): fixing formatting issues 2026-05-12 17:43:15 +02:00
CarolinePascal 7040a106a2 test(new): adding new tests for encoding related features 2026-05-12 17:43:15 +02:00
CarolinePascal 6799a24b09 test(existing): adapting existing tests 2026-05-12 17:43:15 +02:00
CarolinePascal 69e63078d8 chore(duplicate): removing duplicate get_codec_options definition 2026-05-12 17:43:15 +02:00
CarolinePascal cb1f50f2f6 feat(pyav checks): making pyav parameters checks more robust 2026-05-12 17:43:15 +02:00
CarolinePascal 37ded8199b feat(VideoEncoderConfig init): making VideoEncoderConfig more robust and adaptable to multiple backends 2026-05-12 17:43:15 +02:00
CarolinePascal b4ff7550f0 fix(concatenation compatibility): adding compatibility check when concatenating video files 2026-05-12 17:43:15 +02:00
CarolinePascal 6f47583ac5 feat(metadata): adding encoding parameters in dataset metadata 2026-05-12 17:43:15 +02:00
CarolinePascal c49491928d chore(docs): updating the docs 2026-05-12 17:43:15 +02:00
CarolinePascal 3942061e22 feat(VideoEncoderConfig): propagating the VideoEncoderConfig in the codebase 2026-05-12 17:43:15 +02:00
CarolinePascal 04bfa75a0a feat(VideoEncoderConfig): creating a VideoEncoderConfig to encapsulate encoding parameters 2026-05-12 17:42:27 +02:00
CarolinePascal 7c0858e786 feat(pyav utils): adding suport for PyAV encoding parameters validation 2026-05-12 17:42:27 +02:00
CarolinePascal 3dfa408d17 chore(video backend): renaming codec into video_backend in get_safe_default_video_backend() 2026-05-12 17:42:27 +02:00
Steven Palma 04125492e4 fix(datasets): expand torchcodec platform coverage + rewrite pyav fallback for torchvision >0.26 (#3588)
* fix(deps): better versioning control for torchcodec

* refactor(video_utils): replace torchvision with pyav

* adding Torchcodec version to lerobot-info

* chore(benchmarks): delete video benchmark

---------

Co-authored-by: Maximellerbach <maxime.ellerbach@huggingface.co>
2026-05-12 16:59:11 +02:00
Khalil Meftah e963e5a0c4 RL stack refactoring (#3075)
* refactor: RL stack refactoring — RLAlgorithm, RLTrainer, DataMixer, and SAC restructuring

* chore: clarify torch.compile disabled note in SACAlgorithm

* fix(teleop): keyboard EE teleop not registering special keys and losing intervention state

Fixes #2345

Co-authored-by: jpizarrom <jpizarrom@gmail.com>

* fix: remove leftover normalization calls from reward classifier predict_reward

Fixes #2355

* fix: add thread synchronization to ReplayBuffer to prevent race condition between add() and sample()

* refactor: update SACAlgorithm to pass action_dim to _init_critics and fix encoder reference

* perf: remove redundant CPU→GPU→CPU transition move in learner

* Fix: add kwargs in reward classifier __init__()

* fix: include IS_INTERVENTION in complementary_info sent to learner for offline replay buffer

* fix: add try/finally to control_loop to ensure image writer cleanup on exit

* fix: use string key for IS_INTERVENTION in complementary_info to avoid torch.load serialization error

* fix: skip tests that require grpc if not available

* fix(tests): ensure tensor stats comparison accounts for reshaping in normalization tests

* fix(tests): skip tests that require grpc if not available

* refactor(rl): expose public API in rl/__init__ and use relative imports in sub-packages

* fix(config): update vision encoder model name to lerobot/resnet10

* fix(sac): clarify torch.compile status

* refactor(rl): update shutdown_event type hints from 'any' to 'Any' for consistency and clarity

* refactor(sac): simplify optimizer return structure

* perf(rl): use async iterators in OnlineOfflineMixer.get_iterator

* refactor(sac): decouple algorithm hyperparameters from policy config

* update losses names in tests

* fix docstring

* remove unused type alias

* fix test for flat dict structure

* refactor(policies): rename policies/sac → policies/gaussian_actor

* refactor(rl/sac): consolidate hyperparameter ownership and clean up discrete critic

* perf(observation_processor): add CUDA support for image processing

* fix(rl): correctly wire HIL-SERL gripper penalty through processor pipeline

(cherry picked from commit 9c2af818ff)

* fix(rl): add time limit processor to environment pipeline

(cherry picked from commit cd105f65cb)

* fix(rl): clarify discrete gripper action mapping in GripperVelocityToJoint for SO100

(cherry picked from commit 494f469a2b)

* fix(rl): update neutral gripper action

(cherry picked from commit 9c9064e5be)

* fix(rl): merge environment and action-processor info in transition processing

(cherry picked from commit 30e1886b64)

* fix(rl): mirror gym_manipulator in actor

(cherry picked from commit d2a046dfc5)

* fix(rl): postprocess action in actor

(cherry picked from commit c2556439e5)

* fix(rl): improve action processing for discrete and continuous actions

(cherry picked from commit f887ab3f6a)

* fix(rl): enhance intervention handling in actor and learner

(cherry picked from commit ef8bfffbd7)

* Revert "perf(observation_processor): add CUDA support for image processing"

This reverts commit 38b88c414c.

* refactor(rl): make algorithm a nested config so all SAC hyperparameters are JSON-addressable

* refactor(rl): add make_algorithm_config function for RLAlgorithmConfig instantiation

* refactor(rl): add type property to RLAlgorithmConfig for better clarity

* refactor(rl): make RLAlgorithmConfig an abstract base class for better extensibility

* refactor(tests): remove grpc import checks from test files for cleaner code

* fix(tests): gate RL tests on the `datasets` extra

* refactor: simplify docstrings for clarity and conciseness across multiple files

* fix(rl): update gripper position key and handle action absence during reset

* fix(rl): record pre-step observation so (obs, action, next.reward) align in gym_manipulator dataset

* refactor: clean up import statements

* chore: address reviewer comments

* chore: improve visual stats reshaping logic and update docstring for clarity

* refactor: enforce mandatory config_class and name attributes in RLAlgorithm

* refactor: implement NotImplementedError for abstract methods in RLAlgorithm and DataMixer

* refactor: replace build_algorithm with make_algorithm for SACAlgorithmConfig and update related tests

* refactor: add require_package calls for grpcio and gym-hil in relevant modules

* refactor(rl): move grpcio guards to runtime entry points

* feat(rl): consolidate HIL-SERL checkpoint into HF-style components

Make `RLAlgorithmConfig` and `RLAlgorithm` `HubMixin`s, add abstract
`state_dict()` / `load_state_dict()` for critic ensemble, target nets
and `log_alpha`, and persist them as a sibling `algorithm/` component
next to `pretrained_model/`. Replace the pickled `training_state.pt`
with an enriched `training_step.json` carrying `step` and
`interaction_step`, so resume restores actor + critics + target nets +
temperature + optimizers + RNG + counters from HF-standard files.

* refactor(rl): move actor weight-sync wire format from policy to algorithm

* refactor(rl): update type hints for learner and actor functions

* refactor(rl): hoist grpcio guard to module top in actor/learner

* chore(rl): manage import pattern in actor (#3564)

* chore(rl): manage import pattern in actor

* chore(rl): optional grpc imports in learner; quote grpc ServicerContext types

---------

Co-authored-by: Khalil Meftah <khalil.meftah@huggingface.co>

* update uv.lock

* chore(doc): update doc

---------

Co-authored-by: jpizarrom <jpizarrom@gmail.com>
Co-authored-by: Steven Palma <imstevenpmwork@ieee.org>
2026-05-12 15:49:54 +02:00
Steven Palma 26ff40ddd7 chore(deps): cap torch ceiling at <2.12, pin Linux wheels to cu128 (#3570)
* chore(deps): ceiling + cuda

* ci: bump cuda version docker image

* ci: add cpu wheel to release workflow

* chore(deps): update uv.lock

* docs: update installation with cuda note
2026-05-11 19:47:55 +02:00
Maxime Ellerbach 6d269b28c8 docs(omx): adding some examples and scripts (#3566)
* docs(omx): adding some examples and scripts

* cleaning up and reviewing the cli args

* adding __init__.py to example folder, adjusting the examples

* adding reference to pretrained act policy

* moving `.send_action` before `dataset.add_frame` for consistency

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Maxime Ellerbach <maxime@ellerbach.net>

* adjusting docstring

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Maxime Ellerbach <maxime@ellerbach.net>

* adressing hardcoded dataset fps

* removed init as it worked without

---------

Signed-off-by: Maxime Ellerbach <maxime@ellerbach.net>
2026-05-11 15:36:32 +02:00
Steven Palma b607c8458e docs: add policy & compute guide (#3534)
* docs(policy): contributing a policy guide

* docs(training): HW compute guide

* chore(docs): add to readme and index

* Apply suggestions from code review

Co-authored-by: Haoming Song <1847575517@qq.com>
Signed-off-by: Steven Palma <imstevenpmwork@ieee.org>

* chore(docs): slight improvements

* refactor(docs): consolidate add policy docs

* chore(style): fix pre-commit

---------

Signed-off-by: Steven Palma <imstevenpmwork@ieee.org>
Co-authored-by: Haoming Song <1847575517@qq.com>
2026-05-11 15:19:12 +02:00
Jash Shah 9e83510c99 fix(datasets): close file handle on VideoDecoder init failure in cache (#3542)
If VideoDecoder() raises during initialization, the fsspec file handle
was leaked since it was opened via __enter__() but never closed on the
exception path. Now explicitly closes the handle before re-raising.
2026-05-10 17:30:37 +02:00
Anthony Shoumikhin 1f7b03f5f2 chore(deps): allow torch 2.11/2.12 and fix autocast deprecation (#3435)
* chore(deps): allow torch 2.11/2.12 and fix autocast deprecation

- Bump torch to >=2.7,<2.13 (was <2.11), torchvision to <0.28 (was <0.26),
  and torchcodec to <0.13 (was <0.11) to allow installs against the latest
  stable torch 2.11 and the upcoming 2.12 line.
- Replace removed torch.get_autocast_gpu_dtype() with torch.get_autocast_dtype("cuda")
  in Florence2 and Qwen2.5-VL-MoE FlashAttention paths (the former is removed in 2.11+).
- Refresh uv.lock for the new resolution (torch 2.11.0+cu130, torchvision 0.26.0+cu130,
  torchcodec 0.11.1, full CUDA 13 stack).

Verified locally with `uv sync --locked` from a clean .venv and the lerobot
test suite (pytest -n 8 --dist=loadfile --timeout=300). Failure set is
identical to the pre-bump baseline: 18 pre-existing failures
(test_sac_policy*, test_pi0_rtc*, test_pi05_rtc*, test_replay_buffer*),
0 new, 0 fixed.

AI assistance: this change was authored with Claude Code per AI_POLICY.md.

* fix(policies): use device-agnostic autocast dtype lookup

Pass query_states.device.type to torch.get_autocast_dtype() instead of
hardcoding 'cuda', so the cast matches the active autocast context when
running under CPU/MPS/XPU autocast.

---------

Co-authored-by: Steven Palma <imstevenpmwork@ieee.org>
2026-05-10 13:05:35 +02:00
Steven Palma cb8edf17e6 chore(dependencies): update uv.lock (#3475) 2026-05-10 12:24:22 +02:00