VLA 只见过成功轨迹,所以不会逃出失败:FailSafe 用 13.1 万条失败数据补上另一半
在成功轨迹上注入扰动造出 13.1 万条失败样本,外挂 VLM 每 10 步巡检一次、接管纠正后归还控制权——OpenVLA 平均成功率提升 22.6%,失败检测率 90.9% 对通用大模型的不足 20%。
- 论文:《FailSafe: Reasoning and Recovery from Failures in Vision-Language-Action Models》(arXiv 2510.01642),核心问题是几乎所有 VLA 训练语料都由成功演示构成——模型从没见过失败,所以没有逃出失败的策略。
- 失败怎么造:在 ManiSkill 仿真的成功轨迹上自动注入三类扰动——平移(±0.1 米)、旋转(±1 弧度)、无操作(卡死),计算 7 自由度纠正增量 ΔA,回放验证后只保留能恢复成功的样本。
- 数据规模:13.1 万条失败-动作对 + 5.6 万条成功轨迹微调 LLaVa-OneVision-7B 得到 FailSafe-VLM,部署时每 10 步巡检一次,发现失败即接管执行纠正动作、随后归还控制权——基础 VLA 一行不改。
- 效果:失败检测成功率 90.9%(GPT-4o、Gemini 系列均低于 20%);接入 OpenVLA 后平均任务成功率 +22.6%,OpenVLA-OFT +8.0%、π0-FAST +4.0%;在从未见过的 xArm 6 机械臂上仍提升 20%。
- 判断:失败恢复是「故障转移」的算法层对应物——设备侧先自愈,云侧再兜底;这套外挂架构恰好是分层运维的模板。
VLA 模型的训练语料几乎全部由成功演示构成:人遥操作机械臂完成任务,轨迹连同图像被录下来喂给模型。这种「只喂成功」的数据结构有一个隐蔽的副作用——模型在干净轨迹上表现越好,遇到偏离时越手足无措:抓滑了、碰歪了、卡住了,它输出的往往是继续沿着错误轨迹 meaningless 地执行,或者干脆僵死在原地。论文把这个现象点得很直白:模型没见过失败,所以没有失败策略。
FailSafe 的做法是把失败当成一种可以量产的数据。流程分四步:先从成功轨迹出发,在任意阶段注入三类扰动——位置偏 ±0.1 米、姿态偏 ±1 弧度、或干脆让机械臂「无操作」卡死;然后在原始成功轨迹上找到与当前偏差姿态对应的恢复点,算出精确的 7 自由度纠正增量;再用仿真器回放验证——只有纠正后能真正完成任务的样本才入库;最后用 13.1 万条失败-动作对加 5.6 万条成功轨迹微调一个 LLaVa-OneVision-7B,得到 FailSafe-VLM。整条流水线跑在仿真器里,任何有运动规划的任务都能自动生成失败库,不需要人工摆拍失败场景。
部署架构是这篇论文工程上最值得抄的部分。FailSafe-VLM 不进入 VLA 的控制回路,而是作为并行助手外挂:基础模型(OpenVLA、π0-FAST 等)照常每步输出动作,FailSafe-VLM 每隔 10 步看一眼相机画面做一次「健全性检查」,判断即将或已经发生失败时接管控制权、输出纠正动作,把机械臂推回正确轨迹后再把控制权还给基础模型。检测失败、纠偏、归还,全程不改基础模型一行权重。
泛化数据同样关键:训练只用了 Franka Panda 的数据,换到从未见过的 xArm 6 上仍带来 20% 提升——失败恢复学到的更多是「失败的结构」而非特定机体的视觉记忆,这对多机型混部署的运营方是个利好:同一套看护模型的适配成本低于逐机型重训。
必须诚实标注这项工作的边界:所有数字产生于 ManiSkill 仿真环境,论文自己也把「集成到连续 VLA 控制回路」「扩展到真机遥操作数据」列为后续工作。仿真注入的失败(位移、旋转、卡死)是几何性的,真机部署里的失败还有一大类是物理性的——接触打滑、软体形变、线缆缠绕、物料形变,这些在刚体仿真里要么不存在、要么失真。FailSafe 的价值在于验证了「失败数据可以自动生成、纠正动作可以自动标注」这条流水线本身,真机化只是流水线的输入源替换问题。
还有一个隐性信号值得注意:通用旗舰 VLM(GPT-4o、Gemini)在失败检测上不足 20%,专门微调的 7B 小模型却有 90.9%——失败识别是一个窄而深的感知任务,通用大模型的优势发挥不出来。这对资源有限的运营团队是好消息:看护层不需要最贵的模型,需要的是对的训练数据。