LeRobot documentation

DM0.5 for LeRobot

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DM0.5 for LeRobot

DM05, also released as DM0.5, is Dexmal’s Vision-Language-Action model for open-world robot control. The LeRobot adapter preserves the OpenDM model path while using standard LeRobot datasets, processors, training, checkpointing, Hub loading, and evaluation.

For model details, see the DM0.5 technical blog, the OpenDM repository, and the raw Dexmal/DM05 release.

Installation

pip install -e ".[training,dm05]"   # training
pip install -e ".[libero,dm05]"     # LIBERO evaluation on Linux

Checkpoint

Use lerobot/dm05_base with --policy.path. It is a self-contained LeRobot conversion of the raw OpenDM checkpoint and supports DM05Policy.from_pretrained().

The base config records OpenDM’s 14-dimensional state/action contract. DM05’s core model supports up to 32 dimensions; fresh fine-tuning resolves the effective image, state, and action features from the target dataset.

Dataset contract

DM05 accepts standard LeRobot datasets with:

  • one or more image or video observations;
  • observation.state;
  • action;
  • task descriptions.

Set policy.image_keys when camera order must be explicit. RoboTwin, ALOHA, and other sources do not need a DM05-specific reader after conversion to the standard LeRobot schema. Keep the standard observation.state and action keys; use rename_map only to align camera names.

Training

The LIBERO recipe follows OpenDM:

lerobot-train \
  --dataset.repo_id=lerobot/libero \
  --rename_map='{"observation.images.image": "observation.images.front", "observation.images.image2": "observation.images.wrist"}' \
  --dataset.video_backend=pyav \
  --policy.path=lerobot/dm05_base \
  --policy.add_state=false \
  --policy.chunk_size=10 \
  --policy.n_action_steps=10 \
  --policy.repo_id=your_repo_id \
  --output_dir=outputs/train/dm05-libero \
  --steps=50000 \
  --batch_size=8 \
  --policy.device=cuda

Key training parameters

ParameterLIBERO valueMeaning
dataset.repo_idlerobot/liberoStandard LeRobot training dataset
policy.pathlerobot/dm05_baseSelf-contained base checkpoint
rename_mapimage/image2 to front/wristCamera names used by the eval command and lerobot/dm05_libero
policy.add_statefalseMatches OpenDM’s LIBERO prompt without state tokens
policy.use_relative_actionsfalse (checkpoint default)Learns stored actions unchanged; relative mode is an explicit opt-in
policy.chunk_size10Number of actions predicted per chunk
policy.n_action_steps10Number executed before the next model call; at most chunk_size
policy.repo_idyour_repo_idHub destination; use policy.push_to_hub=false for local-only runs

Environment control mode is configured separately from the policy action representation. Relative mode requires matching state/action dimensions.

Cameras

The camera set is part of the policy config, and the prompt always renders exactly those cameras. Fine-tuning from lerobot/dm05_base, which declares none, takes the training dataset’s cameras. A fine-tuned checkpoint keeps its own camera names: map a dataset with different names onto them with --rename_map, for example --rename_map='{"observation.images.top": "observation.images.front"}'.

Normalization statistics

Training uses the dataset’s state/action statistics in meta/stats.json. Action statistics must match the representation used for training. With policy.use_relative_actions=true, compute them after the relative-action transform, using the same chunk size and excluded dimensions. See the relative-action guide.

Evaluation

The LIBERO checkpoint lerobot/dm05_libero was trained for 50,000 steps and evaluated on all 40 LIBERO tasks with 5 episodes per task:

MUJOCO_GL=egl lerobot-eval \
  --policy.path=lerobot/dm05_libero \
  --env.type=libero \
  --env.task=libero_spatial,libero_object,libero_goal,libero_10 \
  --env.camera_name_mapping='{"agentview_image":"front","robot0_eye_in_hand_image":"wrist"}' \
  --env.observation_height=256 \
  --env.observation_width=256 \
  --env.control_mode=relative \
  --eval.n_episodes=5 \
  --eval.batch_size=1 \
  --seed=7 \
  --policy.device=cuda
SuiteSuccesses
Spatial49/50
Object50/50
Goal50/50
LIBERO-1048/50
Total197/200 (98.5%)

This is a 200-episode reproduction check, not the 2,000-episode LIBERO benchmark protocol.

Checkpoint layout

Use the complete checkpoint directory, which contains policy weights, config, and processor state. A standalone model.safetensors is not sufficient for training or inference.

License

The LeRobot integration is Apache-2.0. Model weights follow the license attached to the corresponding DM05 model card.

Update on GitHub