LeRobot 数据集与训练
LeRobot 是 Hugging Face 维护的机器人学习数据与策略训练框架。在艾欧数据平台上,用户可以把已标注的机器人数据导出为可复用的 LeRobot 数据集,然后把这些数据交给 LeRobot、OpenPI、ACT 或 Spirit-v1.5 等训练栈继续微调。
本文先说明数据导出和校验,再给出模型训练的总览。使用 LeRobot 官方训练栈前,请先阅读 安装 LeRobot;具体模型的训练命令请进入对应专项页。
导出数据
平台支持将已标注数据导出为 LeRobot 格式。导出前请确认三类信息已经稳定:
observation.images.*:相机图像或视频,建议相机命名在整个项目中保持一致。observation.state:机器人状态,通常是关节或末端状态。action:控制动作,应与observation.state的时间轴严格对齐。task:语言任务描述。VLA 模型通常依赖该字段;若缺失,部分镜像会允许用命令行--prompt兜底。
导出配置
导出界面中的关键参数建议按训练目标设置:
| 参数 | 建议 |
|---|---|
| 数据采样频率 | 先按机器人控制频率保留,常见范围为 10-30 Hz;不要为了减小体积过早降采样。 |
| 图像格式 | 大规模训练优先选 MP4;若要排查图像质量问题,可临时导出 JPG。 |
| 严格匹配模型输入输出 | 建议开启,用于减少观测、语言指令与动作错位。 |
| 自动模糊人脸 | 含人员画面且需要外部分发数据时建议开启。 |
导出完成后,下载 .tar.gz 并解压到独立目录。训练命令中的 /path/to/lerobot_dataset 应指向包含 meta/info.json 的目录,而不是其上一级目录。
your_dataset/
├── meta/
│ └── info.json
├── data/
└── videos/
Topic 映 射
平台按 ROS/ROS2 topic 名称推断状态与动作字段:
- 以
/joint_state或/joint_states结尾的话题,其position会写入observation.state。 - 以
/joint_cmd或/joint_command结尾的话题,其position会写入action。
如果项目中的 topic 命名不同,建议在录制阶段统一命名;已有数据无法改名时,请提前做映射适配,不要等训练失败后再排查。
数据校验
训练前至少做一次格式校验。优先使用 LeRobot Studio 打开导出的压缩包或解压目录;它会检查 meta/info.json、features、episodes、数据文件与视频文件的基本一致性。
需要本地脚本化校验时,可以直接让 LeRobot 加载数据集:
from lerobot.datasets import LeRobotDataset
dataset = LeRobotDataset("local/my_dataset", root="/path/to/lerobot_dataset")
print(dataset.num_frames, dataset.num_episodes)
能加载不代表数据一定适合训练,但可以先排除目录层级、元数据和文件缺失问题。
训练路径
训练文档采用“官方源码依据优先,镜像用于复现”的原则。也就是说,模型能力、限制和关键命令以官方仓库或模型卡为依据;实际运行时,推荐先用艾欧 智能已经构建并公开发布的 ioaitech/* 镜像跑通训练闭环,再按需回到官方源码做深度修改。
| 模型 | 推荐入口 | 适用场景 | 专项页 |
|---|---|---|---|
| Pi0 / Pi0.5 | ioaitech/train_openpi:pi0、ioaitech/train_openpi:pi05 | 高容量 VLA 微调;需要 OpenPI 基座权重与 JAX/FSDP/LoRA 路径 | Pi0 与 Pi0.5 |
| SmolVLA | ioaitech/lerobot-gpu:v0.5.0 | 单卡起步、快速验证 LeRobot v0.5.0 官方训练链路 | SmolVLA |
| ACT | ioaitech/train_act:cuda | 单任务模仿学习;希望用 LeRobot 数据直接桥接到 ACT/HDF5 | ACT |
| Spirit-v1.5 | ioaitech/train_spirit:1.5 | 前沿 VLA 微调;RoboChallenge 数据布局或可转换的 LeRobot 数据 | Spirit-v1.5 |
| Diffusion Policy | ioaitech/lerobot-gpu:v0.5.0 或官方源码 | 需要平滑、连续动作序列的策略学习 | Diffusion Policy |
文档默认使用 Docker Hub 镜像名。若中国大陆访问 Docker Hub 较慢,在镜像名前增加 swr.cn-east-3.myhuaweicloud.com/ 即可,例如:
swr.cn-east-3.myhuaweicloud.com/ioaitech/train_openpi:pi0swr.cn-east-3.myhuaweicloud.com/ioaitech/train_act:cudaswr.cn-east-3.myhuaweicloud.com/ioaitech/train_spirit:1.5swr.cn-east-3.myhuaweicloud.com/ioaitech/lerobot-gpu:v0.5.0
挂载路径与训练参数保持不变。
训练前自检
所有 GPU 镜像都依赖 NVIDIA 容器运行时。先确认宿主机能在容器内看到 GPU:
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
训练目录建议分开:
workspace/
├── dataset/ # 解压后的 LeRobot 数据集
└── output/ # checkpoint、日志、manifest
LeRobot v0.5.0 训练入口
LeRobot v0.5.0 安装后提供 lerobot-train 命令。本文档中所有 LeRobot 框架训练都以该命令为准。
最小命令形态如下:
lerobot-train \
--dataset.repo_id=local/my_dataset \
--dataset.root=/path/to/lerobot_dataset \
--policy.type=act \
--output_dir=outputs/train/act_baseline \
--job_name=act_baseline \
--policy.device=cuda
从预训练策略微调时使用 --policy.path,例如 SmolVLA:
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=local/my_dataset \
--dataset.root=/path/to/lerobot_dataset \
--output_dir=outputs/train/smolvla_finetune \
--job_name=smolvla_finetune \
--policy.device=cuda
官方依据
以下链接在重写时已检查可访问,文档中的技术判断优先来自这些材料:
- Hugging Face LeRobot
v0.5.0官方仓库、安装文档与 Docker 目录:github.com/huggingface/lerobot、installation、docker。 - SmolVLA 官方文档与模型卡:LeRobot v0.5.0 SmolVLA、lerobot/smolvla_base。
- OpenPI 官方仓库:Physical-Intelligence/openpi。
- ACT 官方仓库与论文:tonyzhaozh/act、arXiv:2304.13705。
- Spirit-v1.5 官方源码与模型卡:Spirit-AI-Team/spirit-v1.5、Spirit-AI-robotics/Spirit-v1.5。
- Diffusion Policy 项目页与 LeRobot 实现:diffusion-policy.cs.columbia.edu、LeRobot diffusion policy。