走通 Microduck 的 VLA 训练流程
简介
定义任务与仿真环境
我们的目标是验证一种通过训练数据扩展机器人能力的方式:VLA 接收自然语言指令与身体观测,直接预测 Action Chunk,再由机器人运行时执行。仿真采用 MuJoCo + Microduck 模型,提供关节运动、传感器反馈和地面接触等物理过程,形成持续交互的闭环:
语言指令 + 当前观测 → VLA → Action Chunk
↑ ↓
└── 新观测 ← 仿真执行
- 输入:自然语言、相机图像、关节与 IMU 状态,以及必要的历史观测。
- 输出:未来一段时间的关节目标序列。
- 评估目标:能否正确执行指令,并在不同初始状态、等价语言表达下保持稳定。
选择模型与训练方法
选择 LeRobot + SmolVLA 作为训练方案
- LeRobot 提供数据集、训练与推理工具;
- SmolVLA 是约 450M 参数的预训练模型,支持输入自然语言、图像和机器人状态,输出 Action Chunk,适合用来验证“语言与观测直接生成动作”的流程。SmolVLA 主要由两部分组成:
- 视觉语言骨干(VLM):提取图像与语言特征,结合身体状态形成动作生成所需的条件信息。SmolVLM 是一个开源2B 的VLM
- 动作专家(Action Expert):根据这些信息,生成未来一段时间的连续动作序列,采用 Flow Matching 训练。
训练采用基于专家示范的模仿学习(Imitation Learning),具体属于行为克隆(Behavior Cloning):利用原有运动模型生成示范,让 VLA 学习在给定语言和观测下,产生与专家一致的动作。BC 描述的是“从示范学习策略”的方式,Flow Matching 则是学习动作序列分布的具体训练目标。
lerobot
lerobot是 Hugging Face 开发的端到端机器人技术开源库。该库纵向集成了整个机器人技术栈,既支持对真实机器人设备进行底层控制,也提供先进的数据与推理优化,以及采用纯 PyTorch 简洁实现的最先进机器人学习方法。
准备示范数据
示范数据按 Episode(一次完整任务执行)组织。每个 Episode 是一段连续的多模态时间序列。每个时刻记录三类信息:
| 内容 | 含义 | 示例 |
|---|---|---|
task |
希望机器人做什么 | "向左看" |
observation |
发出动作前,机器人实际观测到了什么 | 图像、关节位置与速度、IMU |
action |
专家在该时刻发出的控制目标 | 各关节的目标角度 |
状态与动作必须分开:当前头部角度是 0.08 rad,专家要求转到 0.12 rad,那么前者属于 observation,后者属于 action。
LeRobotDataset
lerobot定义了一种标准化数据集格式,旨在满足机器人学习研究的特定需求,为跨模态机器人数据提供统一、便捷的访问方式,其中包括传感器运动读数、多路摄像头画面和遥操作状态。可由用户轻松扩展且高度可定制。
将底层数据存储与面向用户的 API 分离。由三个主要部分组成:
- Tabular Data:关节状态和动作等低维、高频数据存储在高效的内存映射文件中,通常会转交给 Hugging Face 更成熟的 datasets 库处理,从而实现快速访问并减少内存占用。
- Visual Data: 为处理大量摄像头数据,帧会被拼接并编码为 MP4 文件。同一回合的帧始终归入同一个视频,多个视频则按摄像头归组。为减轻文件系统负担,同一摄像头视角的视频组在达到给定阈值数量后,也会拆分到多个子目录中。
- Metadata。由一组 JSON 文件构成,用于描述数据集的元数据结构,并作为表格型和视觉数据维度的关系型对应部分。元数据包括不同的特征模式、帧率、归一化统计信息和回合边界。
留下评论