跳转至

具身多模态后训练

MM-003 使用 Hugging Face 官方 SmolVLASVLA SO100 PickPlace 建立具身后训练入口。数据包含 50 个 episode、约 1.96 万帧的相机、关节状态和连续动作; 模型以多视角图像、状态和语言指令为条件,通过 flow matching 预测 action chunk。

flowchart LR
    D["LeRobot episode\nvideo + state + action"] --> A["数据 manifest / revision 审计"]
    A --> P["SmolVLA 450M checkpoint"]
    P --> F["flow-matching post-training"]
    F --> C["本地 checkpoint(不提交)"]
    C --> E["匹配机器人或 simulator success rate"]

先审计命令和本地数据,不启动训练:

auto-research embodied-post-train \
  --dataset-root data/svla_so100_pickplace \
  --checkpoint-path checkpoints/smolvla_base \
  --vlm-checkpoint-path checkpoints/SmolVLM2-500M-Video-Instruct \
  --offline --dry-run --device cuda \
  --steps 1 --batch-size 1

安装官方 lerobot[smolvla] 环境后去掉 --dry-run 即执行真实训练。输出 metrics.json 保存模型/数据 revision、数据 manifest SHA256、完整 argv、返回码和日志尾部; 原始视频、checkpoint 与训练日志不提交 Git。模型或数据快照下载失败时也会写入 status=failed、异常类型和错误消息,避免把 materialization 失败误记成没有运行。 SmolVLA 内部依赖的 HuggingFaceTB/SmolVLM2-500M-Video-Instruct 也固定到 40 位 commit; 离线运行必须显式传入它的本地 snapshot,不能只缓存外层 SmolVLA policy。 默认还把 SVLA 的 top/wrist 映射到 policy 的 camera1/camera2,并补一个 empty camera; 切换其他 LeRobot 数据集时用 --rename-map--empty-cameras 显式覆盖,映射会进入指标。

A30 实测已完成 1 个真实视频 batch 的 CUDA 前向与反向:450,046,176 总参数中 99,880,992 个参与训练,step-1 loss 为 0.297、gradient norm 为 6.400,并成功保存本地 checkpoint。固定 revision、数据 manifest 和稳定摘要见 ../experiments/roadmap-4-7.json。该结果只证明训练链路可用; 没有机器人或 simulator episode,因此没有 success rate,也不推断策略质量提升。

训练 loss 不能冒充机器人成功率。只有连接相同 SO100/SO101 硬件,或使用与 checkpoint 匹配的 RoboCasa/LIBERO 环境运行 episode,才报告 success rate;没有执行环境时状态明确写为 “训练链路验证”,不写成端到端具身能力。