File size: 3,130 Bytes
53a6aa4
 
cf08a72
 
 
 
 
 
 
 
 
 
 
 
53a6aa4
cf08a72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
716afe3
 
cf08a72
 
 
 
 
 
716afe3
 
cf08a72
 
716afe3
 
cf08a72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
---
license: gemma
library_name: lerobot
pipeline_tag: robotics
base_model: Dexmal/DM05
tags:
- robotics
- robot-control
- vision-language-action
- vla
- lerobot
- dm05
- dm0.5
- opendm
---

# DM0.5 for LeRobot

![DM0.5](https://raw.githubusercontent.com/dexmal/opendm/main/docs/image/header.png)

`Dexmal/DM05-Lerobot` is the LeRobot-format base checkpoint of
[DM0.5](https://huggingface.co/Dexmal/DM05), adapted from
[OpenDM](https://github.com/dexmal/OpenDM). It predicts continuous action chunks from images, robot state,
and language instructions.

This is a base model for supervised fine-tuning, not a LIBERO-, RoboTwin-, or robot-specific checkpoint.

## Fine-tuning

```bash
lerobot-train \
  --dataset.repo_id=HuggingFaceVLA/libero \
  --policy.path=Dexmal/DM05-Lerobot \
  --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
```

For local-only training, replace `--policy.repo_id=...` with `--policy.push_to_hub=false`.

This LIBERO recipe matches OpenDM: it excludes state from the prompt and learns stored actions unchanged. Keep
`policy.add_state=true` unless the target recipe specifies otherwise. Policy action representation and environment
control mode are configured independently.

Absolute-action training uses the standard LeRobot state/action statistics in `meta/stats.json`. Relative-action
training requires separately prepared statistics because its arm targets are `action - state`:

```bash
uv run python -m lerobot.policies.dm05.prepare_stats_dm05 \
  --repo-id=org/dataset \
  --root=/path/to/dataset \
  --chunk-size=10 \
  --drop-n-last-frames=1 \
  --force
```

The command writes `meta/stats.json` in place. Match its chunk, episode selection, and excluded-joint settings to
training. Without target statistics, checkpoint statistics are reused with a warning and are valid only for the
same feature contract and distribution.

## Evaluation

Evaluate a fine-tuned checkpoint:

```bash
MUJOCO_GL=egl lerobot-eval \
  --policy.path=/path/to/checkpoint/pretrained_model \
  --env.type=libero \
  --env.task=libero_spatial \
  --env.control_mode=relative \
  --policy.device=cuda
```

## Checkpoint contract

The base checkpoint uses OpenDM's 14-dimensional state/action schema. Fresh SFT takes its effective feature schema
and statistics from the target LeRobot dataset.

Load the complete checkpoint directory with `DM05Policy.from_pretrained()` or `--policy.path`; policy config,
tokenizer, preprocessing state, and weights are all required.

## Resources

- [DM0.5 technical blog](https://www.dexmal.com/blog/dm0.5/index_en.html)
- [OpenDM repository](https://github.com/dexmal/OpenDM)
- [LeRobot repository](https://github.com/huggingface/lerobot)

## Citation

```bibtex
@misc{dm05,
    title  = {{DM0.5}: An Open-World Foundation Model for General-Purpose Embodied Intelligence},
    author = {{Dexmal Team}},
    month  = {July},
    year   = {2026},
    url    = {https://www.dexmal.com/blog/dm0.5/index_en.html}
}
```