Wink Pings

微调机器人,最坑的往往不是模型参数

PrismaX 在 π0.5 微调上做了一组消融实验:灯光、相机位置、机械臂零位,每一个都比学习率更能决定成败。

大多数微调指南都在讲模型本身:学习率、检查点、训练步数。PrismaX 的消融实验写了个不一样的版本——他们围绕 π0.5 在 YAM 抓取放置数据上的微调,花了同样多的篇幅讲模型之外的东西:灯光、相机位置、机械臂校准、推理 bug。

一个微调好的策略跑在物理设备上,设备的小细节能决定它到底能不能用。

这项工作的背后是 PrismaX 在 IROS 的演示。团队在 YAM 数据采集台上收集了一套干净的数据,想让模型跑在另一套基于 YAM 但略有不同的设备上。动机很实际:大实验室可以按 CAD 图纸复制设备,小实验室通常只有现成的旧设备想复用。

为了搞清楚什么因素真正起作用,他们做了消融:一次只改一个变量,观察结果。他们还构建了一个路径追踪 YAM 模拟器,每天能跑数千次 π0.5 rollout,不用反复重置场景,并且已经开源,让人能在自己的设备上复现同样的实验。

发现 1:别只训练 expert

一个教训是:应该同时训练 action expert 和 backbone,而不是只训练 expert。最明显的证据来自灯光实验。

发现 2:灯光能毁掉捷径

硬光把只训练 expert 的 checkpoint 成功率砍掉大约一半。同样的灯光对完整微调没有任何影响。

如果你为了省算力只想训练模型的一部分,这个代价值得掂量:便宜的 checkpoint 在完整版轻松应对的条件下会变得很脆弱。

发现 3:相机位置最容易被忽略

团队每次只动相机几度、几厘米。抬高相机几乎没影响。平移相机直接崩了。

这个差异值得记住。一个任务可能在某个阶段看起来正常,换个阶段就失败,而且只测“能不能抓起来”并不能说明设备真的没问题。匹配相机的粗粒度属性(比如视场角)也被证明是有效的。

发现 4:机械臂校准毫不留情

模型对机械臂本身极其敏感。磨损或零位不准的机械臂,只要累计编码器偏移几度,准确率就能掉到接近零。

发现 5:推理 bug 藏在眼皮底下

这份报告还讲了推理 bug,后续跟进内容显示坑有多深。一个 Python 管道缓冲区悄悄给每次 rollout 增加了几百毫秒延迟。修复并优化流水线后,每步推理时间从 230 多毫秒降到 87 毫秒,机器人开始复现人类操作员的暂停和纠正习惯。

快速检查清单

如果你要在自己的设备上微调 π0.5,按这个顺序排查:

  • 匹配训练数据的相机视场角和位置
  • 检查机械臂零位和编码器偏移
  • 考虑同时训练 backbone 和 expert
  • 在不同灯光下测试,别只测最优条件
  • 观察实时视频流的延迟,不只盯着机械臂
  • 抓取和放置分别评估,两者可能独立失败

PrismaX 微调消融实验宣传图:左侧标题为“PrismaX FINE-TUNING ABLATIONS”,大字号写着“What breaks a fine-tuned robot?”(是什么打破了经过精心调整的机器人?),下方“Lighting. Cameras. A few degrees.”(光线、相机、几度),最下方小字“SMALL RIG DETAILS, BIG SUCCESS SWINGS.”(小型设备细节,巨大成功波动)。右侧四个黑色矩形框分别展示:灯光约50%成功率下降(完全微调无损失);机械臂校准接近0(几度编码器偏移就消除准确性);模拟消融10000+次(约1000 GPU小时训练);相机放置(几度几厘米的微调:抓取保持,放置崩溃)。

发布时间: 2026-10-26 14:36