LeRobot documentation
DM0.5 для LeRobot
DM0.5 для LeRobot
DM05, также выпущенный как DM0.5, — это модель Vision-Language-Action от Dexmal для управления роботами в открытом мире. Адаптер LeRobot сохраняет путь к модели OpenDM, но использует стандартные наборы данных, процессоры, обучение, сохранение контрольных точек, загрузку с Hub и оценку LeRobot.
Подробнее о модели см. в техническом блоге DM0.5, в репозитории OpenDM и в исходном релизе Dexmal/DM05.
Установка
pip install -e ".[training,dm05]" # training
pip install -e ".[libero,dm05]" # LIBERO evaluation on LinuxЧекпоинт
Используйте lerobot/dm05_base с --policy.path. Это самодостаточная конвертация LeRobot из исходного чекпоинта OpenDM, поддерживающая DM05Policy.from_pretrained().
Базовый конфиг фиксирует контракт состояния/действия OpenDM размерностью 14. Базовая модель DM05 поддерживает до 32 измерений; при новом дообучении эффективные признаки изображения, состояния и действия определяются из целевого набора данных.
Договоренность о наборе данных
DM05 принимает стандартные наборы данных LeRobot с:
- одно или несколько наблюдений в виде изображений или видео;
observation.state;action;- описания задач.
Устанавливайте policy.image_keys, если порядок камер должен быть задан явно. Для RoboTwin, ALOHA и других источников после конвертации в стандартную схему LeRobot не требуется специальный считыватель для DM05. Сохраняйте стандартные ключи observation.state и action; используйте rename_map только для приведения имён камер к единому виду.
Обучение
Рецепт LIBERO следует за 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Ключевые параметры обучения
| Параметр | Значение LIBERO | Значение |
|---|---|---|
dataset.repo_id | lerobot/libero | Стандартный набор данных для обучения LeRobot |
policy.path | lerobot/dm05_base | Самодостаточная базовая контрольная точка |
rename_map | image/image2 в front/wrist | Имена камер, используемые командой eval и lerobot/dm05_libero |
policy.add_state | false | Совпадает с промптом LIBERO OpenDM без токенов состояния |
policy.use_relative_actions | false (значение по умолчанию для контрольной точки) | Изучает сохранённые действия без изменений; относительный режим включается явно |
policy.chunk_size | 10 | Количество предсказываемых действий на чанк |
policy.n_action_steps | 10 | Количество, выполняемое перед следующим вызовом модели; не более chunk_size |
policy.repo_id | your_repo_id | Пункт назначения в Hub; для локальных запусков используйте policy.push_to_hub=false |
Режим управления средой настраивается отдельно от представления действия политики. Относительный режим требует совпадения размерностей состояния и действия.
Камеры
Набор камер является частью конфигурации политики, и промпт всегда рендерит именно эти камеры. При дообучении из lerobot/dm05_base, где набор не объявлен, используются камеры из обучающего датасета. Чекпоинт после дообучения сохраняет собственные имена камер: датасет с другими именами можно сопоставить с ними с помощью --rename_map, например --rename_map='{"observation.images.top": "observation.images.front"}'.
Статистика нормализации
Обучение использует статистику состояний и действий датасета из meta/stats.json. Статистика действий должна соответствовать представлению, используемому для обучения. При policy.use_relative_actions=true вычисляйте её после преобразования в относительные действия, используя тот же размер чанка и те же исключённые измерения. См. руководство по относительным действиям.
Оценка
Чекпоинт LIBERO lerobot/dm05_libero обучался в течение 50 000 шагов и оценивался на всех 40 задачах LIBERO с 5 эпизодами на каждую задачу:
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| Suite | Успехи |
|---|---|
| Пространственный | 49/50 |
| Объект | 50/50 |
| Цель | 50/50 |
| LIBERO-10 | 48/50 |
| Всего | 197/200 (98.5%) |
Это проверка воспроизводимости на 200 эпизодах, а не протокол бенчмарка LIBERO на 2000 эпизодах.
Раскладка контрольной точки
Используйте полный каталог контрольной точки, содержащий веса политики, конфигурацию и состояние процессора. Отдельного файла model.safetensors недостаточно для обучения или инференса.
Лицензия
Интеграция LeRobot распространяется по лицензии Apache-2.0. Веса моделей следуют лицензии, указанной в соответствующей карточке модели DM05.
Update on GitHub