Skip to content

Release v0.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Nov 17:13
· 1 commit to main since this release
410c095

Release Blog

https://huggingface.co/blog/lerobot/lerobot-release-v070

lerobot-070-release.mp4

⚠️ Breaking changes (v0.6.1 -> v0.7.0)

v0.7.0 rebuilds installation, training, inference and the hardware layer. A few changes need your attention when upgrading:

Installation

  • On Linux, torch and torchvision now come from PyPI as CUDA 13 builds (NVIDIA driver 580.65 or newer); the cu128 index is gone. For older drivers, install torch from a CUDA 12 index first (see the installation guide). macOS needs 14+ (15+ for MPS).
  • Pins moved: transformers 5.22, huggingface-hub>=1.31,<3, motorbridge 0.5, datasets<6, Pillow<14, torchcodec<0.18.

Training

  • Weights & Biases is replaced by Trackio (the training extra installs trackio): --wandb.* is now --trackio.*, entity/mode have no equivalent, remote jobs with tracking need --trackio.space_id, and checkpoints are no longer uploaded as artifacts by default.
  • FSDP1 is replaced by FSDP2/HSDP (--parallelism.dp_shard, --parallelism.dp_replicate, --accelerator.*); mixed precision is set with --accelerator.mixed_precision. FSDP checkpoints saved with lerobot ≤ 0.6.x cannot be resumed (their model.safetensors still loads), and Accelerate YAML/env configuration is rejected unless LEROBOT_ALLOW_ACCELERATE_ENV=1.
  • --policy.use_peft=true alone now trains LoRA instead of silently fully fine-tuning.
  • Image transforms are batched: GaussianNoise, MotionBlur, GaussianPatchBrightness, RandomShadow, CoarseDropout, GammaCorrection and PlanckianJitter were silent no-ops on uint8 frames and now apply. ImageTransforms takes tensors only; the per-sample classes are deprecated.

Inference & rollout

  • lerobot.async_inference and lerobot[async] are removed: use lerobot[remote], lerobot-policy-server and lerobot-rollout --inference.type=remote. lerobot.rollout.inference moved to lerobot.inference.
  • select_action / predict_action_chunk may return a PolicyOutput ({"action", "prediction"}) instead of a bare tensor; use policy_output_to_transition when calling them directly.
  • With --interpolation_multiplier>1, rollout strategies record one frame per policy action instead of one per tick.

Simulation & environments

  • lerobot.envs.<sim> moved to lerobot.sim.integrations.<sim>, env configs are named *EnvConfig (LiberoEnv -> LiberoEnvConfig), and in-process envs return canonical observations (HWC uint8 images, flat float32 state; map camera names with --rename_map). --env.type is unchanged.
  • Removed env fields: Aloha/PushT observation_height/observation_width, MetaWorld episode_length/multitask_eval, RoboTwin obs_type/render_mode. MetaWorld's default task is metaworld-push-v3.
  • EnvHub make_env is called without cfg and must return an unwrapped SyncVectorEnv/AsyncVectorEnv unless --env.use_native_batch=true.

Policies

  • dtype is the single precision key of every policy config; torch_dtype, vlm_dtype, model_params_fp32 and model_dtype are ignored or removed. In Python pass torch.bfloat16, not a string.
  • MolmoAct2: enable_lora_vlm, enable_lora_action_expert and train_action_expert_only are replaced by --policy.train_mode_vlm={fft,lora,freeze}; action_mode defaults to continuous.
  • EO1: chunk_size and n_action_steps default to 16.
  • VLA-JEPA: checkpoints trained before the RoPE fix need --policy.world_model_rope_legacy=true; binarize_gripper_action and pre_snap_gripper_action default to false.

Datasets

  • --dataset.streaming=true uses a new disk-less episode-pool reader with --dataset.streaming_* options; Backtrackable is removed.

Hardware

  • Feetech and Dynamixel run on one rustypot-backed SerialMotorsBus (lerobot[feetech]/[dynamixel] install rustypot instead of the vendor SDKs). FeetechMotorsBus/DynamixelMotorsBus are deprecated aliases, OperatingMode/TorqueMode give way to bus.set_operating_mode("position"), and the control tables, encoding_utils and the SDK-level helpers (broadcast_ping, scan_port, ...) are removed. Calibration files are unchanged.
  • reBot B601: the config is driven by motor_family (dm, rs); gripper_mit_kp/gripper_mit_kd are removed and per-joint gains take a dict instead of a list.

What's Changed

New Contributors

Full Changelog: v0.6.1...v0.7.0