
如何用自有机器人数据微调VLA模型OpenDM从示教数据到可部署模型的完整路径【免费下载链接】opendmAn Open-World Foundation Model for General-Purpose Embodied Intelligence.项目地址: https://gitcode.com/gh_mirrors/op/opendmOpenDM 是 Dexmal 开源的开放世界 VLA视觉-语言-动作基座模型项目内置 DM0.5 基础模型权重、SFT/LoRA 训练脚本和推理服务让你可以用自有机器人的示教数据微调 VLA 模型并直接部署为 HTTP 推理服务。本文将带你走通这条完整路径准备环境 → 整理示教数据 → 注册数据集 → 微调训练 → 部署上线。一、环境准备Docker 一键搭建训练环境微调需要 NVIDIA GPU推荐 RTX 4090 / A100 / H100 / H20训练建议 8 卡显存小建议走 LoRA 路线。为避免 CUDA、PyTorch、flash-attn 版本打架官方推荐用 Docker 准备环境git clone https://gitcode.com/gh_mirrors/op/opendm cd opendm docker run -it --rm --gpus all --network host \ --name opendm --shm-size16g \ -v $PWD:/app/opendm -w /app/opendm \ dexmal/opendm:latest /bin/bash # 容器内执行 conda activate opendm pip install -e .然后下载 DM0.5 基础模型权重作为微调的起点huggingface-cli download Dexmal/DM05 --local-dir ./checkpoints/DM05二、整理你的示教数据JSONL 帧格式OpenDM 用JSONL 文件读取机器人演示数据每个.jsonl文件是一个 episode每行是一帧。目录结构参考仓库内置的 demo 数据assets/demo/assets/my_robot/ ├── episode0.jsonl ├── images/ │ └── episode0/ └── index_cache.json # 可选不存在时自动生成每一帧包含相机图像字段、当前state和自然语言promptaction可选{ images_1: {type: image, url: ./images/episode0/cam_high/0.jpg}, images_2: {type: image, url: ./images/episode0/cam_left_wrist/0.jpg}, state: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], prompt: Pick up the object }几个关键点详见 docs/zh/data.md 图像字段名images_1…必须和后面注册的image_keys一致 没写action也没关系OpenDM 会用未来帧的 state自动构造动作目标⚠️ 每个 episode 至少 2 帧且不要有空行state的维度和顺序必须与state_desc一致。三、注册你的机器人数据集OpenDM 会自动导入 opendm/dataset/ 下的注册文件。参考内置的 opendm/dataset/demo.py新建opendm/dataset/my_robot.pyfrom opendm.constants.robot import RobotStateDesc from opendm.dataset.register import register_dataset MY_ROBOT_STATE_DESC ( [RobotStateDesc.JOINT] * 6 [RobotStateDesc.GRIPPER] ) register_dataset({ my_robot: { jsonl_dir: ./assets/my_robot/, image_dir: ./assets/my_robot/, image_keys: [images_1, images_2], image_prompts: [Head, Left wrist], state_desc: MY_ROBOT_STATE_DESC, }, })注册后my_robot就是训练时传给--data-config.dataset-name的数据集名称。image_prompts是写给模型看的相机标签如Head、Left wrist建议与相机实际位置对应。四、先用 Demo 数据跑通 SFT 流程在换上自己的数据之前强烈建议先用仓库内置 demo 数据做一次冒烟测试验证 训练 → 保存 → 推理 全链路。入口是 playground/dm05_sft_demo.py由 script/dm05_launcher.sh 启动script/dm05_launcher.sh \ --exp playground/dm05_sft_demo.py \ --nproc_per_node 1 \ --task train \ --model-config.model-name-or-path ./checkpoints/DM05 \ --data-config.compute-norm-stats-max-batches 1 \ --trainer-config.num-train-steps 10 \ --trainer-config.save-steps 10 \ --trainer-config.output-dir ./user_checkpoints/dm05_sft_demo_smoke✅ 看到 loss 正常下降、checkpoint 成功落盘就说明链路通了。五、替换自有数据启动正式微调把 demo 换成自己的数据只需覆盖数据集名称和训练步数script/dm05_launcher.sh \ --exp playground/dm05_sft_demo.py \ --nproc_per_node 8 \ --task train \ --data-config.dataset-name my_robot \ --model-config.model-name-or-path ./checkpoints/DM05 \ --trainer-config.num-train-steps 50000 \ --trainer-config.output-dir ./user_checkpoints/dm05_my_robot归一化统计自动搞定训练启动时若缺少匹配的 norm statsOpenDM 会从你的数据自动计算并保存到./norm_stats/保存 checkpoint 时会复制为norm_stats.json。推理时会用同一份统计做 state 归一化和 action 反归一化——这是微调后模型能正确动作的关键。按需调整的几个参数参数建议dataset_name改成你注册的数据集名chunk_size动作块长度默认 50训练和推理必须一致output_action_dim与 state/action 维度一致base_lr、batch size按数据规模和显存调整六、显存不够用 LoRA 低成本微调 VLA 模型在 RTX 4090 等显存较小的卡上做全参数 SFTFSDP 初始化阶段可能撑爆显存。这时改用LoRA 微调不更新完整模型参数只训练低秩适配层显存占用显著降低同时保留基础模型的通用能力。仓库提供了两条经过内部验证的 LoRA 参考流程可直接复用配置docs/zh/dm05_so101_lora_training.mdSO101 单臂任务入口 playground/dm05_so101_lora.py默认 10,000 步即可收敛docs/zh/dm05_libero_lora_training.mdLIBERO 双臂任务入口 playground/dm05_libero_lora.py49k checkpoint 成功率达 98.30%。把对应的 LoRA 入口复制到 playground/ 下改数据配置即可训练命令与全参数 SFT 完全相同。七、把微调后的模型部署为推理服务微调完成后用同一个 playground 入口把任务从train切换成inference模型即被封装成 HTTP 服务API 细节见 docs/zh/dm05_inference.mdscript/dm05_launcher.sh \ --exp playground/dm05_sft_demo.py \ --task inference \ --model-config.model-name-or-path ./user_checkpoints/dm05_my_robot/step-50000 \ --inference-config.port 7891服务就绪后机器人端通过/v1/infer接口上传图片、state 和指令即可拿到模型输出的动作块——从示教数据到可部署模型闭环完成。微调前的关键检查清单数据集已注册--data-config.dataset-name与注册名一致JSONL 图像字段与image_keys一一对应每帧都齐全state_desc长度与 state/action 维度一致chunk_size、action 维度在训练和推理中保持一致checkpoint 目录中有norm_stats.json延伸阅读数据格式与数据集注册docs/zh/data.mdSFT 完整指南docs/zh/dm05_finetuning.md推理服务指南docs/zh/dm05_inference.md各 Benchmark 微调参考LIBERO、RoboTwin2.0、RoboDojo-Sim 等文档均在 docs/zh/ 目录下【免费下载链接】opendmAn Open-World Foundation Model for General-Purpose Embodied Intelligence.项目地址: https://gitcode.com/gh_mirrors/op/opendm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考