LeRobot documentation

用于 LeRobot 的 DM0.5

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

用于 LeRobot 的 DM0.5

DM05(也发布为 DM0.5)是 Dexmal 用于开放世界机器人控制的视觉-语言-动作模型。LeRobot 适配器保留了 OpenDM 模型路径,同时使用标准的 LeRobot 数据集、处理器、训练、检查点、Hub 加载和评估。

有关模型详情,请参阅 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。它是原始 OpenDM 检查点的自包含 LeRobot 转换版本,支持 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_idlerobot/libero标准 LeRobot 训练数据集
policy.pathlerobot/dm05_base自包含的基础检查点
rename_mapimage/image2 到 front/wristeval 命令和 lerobot/dm05_libero 使用的相机名称
policy.add_statefalse与 OpenDM 的 LIBERO 提示匹配,但不包含状态标记
policy.use_relative_actionsfalse(检查点默认值)以不变的方式学习已存储的动作;相对模式需要显式选择启用
policy.chunk_size10每个块预测的动作数量
policy.n_action_steps10在下一次模型调用之前执行的次数;最多为 chunk_size
policy.repo_idyour_repo_idHub 目标位置;对于仅在本地运行的情况,请使用 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
套件成功
空间49/50
对象50/50
目标50/50
LIBERO-1048/50
总计197/200 (98.5%)

这是一项 200 回合的复现检查,而非 2,000 回合的 LIBERO 基准测试协议。

检查点布局

请使用完整的检查点目录,其中包含策略权重、配置和处理器状态。单独的 model.safetensors 不足以用于训练或推理。

许可证

LeRobot 集成采用 Apache-2.0 许可证。模型权重遵循对应 DM05 模型卡上附带的许可证。

Update on GitHub