同一套 state dropout 配方,左臂 15/20、右臂 0/14。把两批共 31 条 trace 逐帧拆开之后,差别不在模型好坏,也不在数据集 —— 在一个从来没有在右臂上变过的推理参数。结论:先别动训练配置。
chunk_k 决定,右臂从来没试过左臂那一档。建议:先跑 5–10 次 chunk 1/1,再决定要不要动训练配置。
| 右臂 right-sd(09-08) | 左臂 left-sd(09-09) | |
|---|---|---|
| trace 条数 | 17 | 14 |
| 执行配置 | chunk auto/k=4 | chunk 1/1 |
| 回路频率 中位 | 4.20 Hz | 11.87 Hz |
| 推理停顿占时长 | 46% | 26% |
| 最远前伸 中位 | 20.2 cm | ~23 cm |
| 指令总路程 中位 | 120 cm | 34 cm |
| 前进有效率(最远前伸 ÷ 总路程) | 10.3% | 40.7% |
取右臂 trace-20260908-172208-t8(0/8 那批的最后一次),逐 5 秒看前伸距离和夹爪开度:
t= 0s y= 8.2cm 夹爪 6.4 t=35s y=11.3cm 夹爪 18.1
t= 5s y= 9.1cm 夹爪 7.5 t=40s y=15.8cm 夹爪 42.9
t=10s y=12.2cm 夹爪 43.3 t=45s y=11.4cm 夹爪 42.2
t=15s y=11.4cm 夹爪 38.3 t=50s y=14.7cm 夹爪 13.5
t=20s y=10.9cm 夹爪 42.3 t=55s y=12.1cm 夹爪 43.6
t=25s y=14.6cm 夹爪 35.0 t=60s y=11.5cm 夹爪 15.0
t=30s y=11.6cm 夹爪 18.0
前进帧 138 · 后退帧 95 · 净前进 +3.3cm · 总路程 134.6cm · 有效率 7.4%
它在 11–15 cm 之间来回摆了整整一分钟,夹爪也跟着反复开合。示范里这一段只要 8.18 秒、一次到位。
SmolVLA 一次规划 n_action_steps=50 步。每个控制周期从队列取 chunk_k 步:
| 队列多久见底 | 停顿间隔(实测) | 停顿占时长 | |
|---|---|---|---|
chunk_k=4(右臂) | 50÷4 = 12.5 拍 | 中位 12 拍 | 46% |
chunk_k=1(左臂) | 50÷1 = 50 拍 | 约 4 倍稀疏 | 26% |
实测单次推理约 1.4 秒,控制周期中位 0.136 s。所以右臂是「动 1.7 秒 → 冻 1.4 秒」反复循环,而每次解冻后新计划不接着旧计划,而是往回走一段。左右臂都有这个回退,区别只是剂量。
raw 和 safe:pan / elbow / wrist / gripper 被改的帧是 0.0%,shoulder_lift 只有 0.4%。也不是策略动得慢 —— 它每个控制周期命令 lift+elbow 走 3.00°,而示范在同样时间窗(0.136 s)应该走 2.86°。速度是对的。都是量过之后否掉的,写下来省得再走一遍:
| 假设 | 怎么否的 |
|---|---|
| 左臂那个任务更简单、不用看杯子 | 反了。左臂训练集杯位 σ 14.72°(极差 59.1°),右臂只有 10.45°(46.9°)。「永远输出中位 pan」在左臂上误差中位 12.6°,右臂 5.2° —— 左臂更需要看。 |
| 右臂标定漂了 | 标定文件停在 2026-08-16,0826 录制之后没人动过。两条臂都一样。 |
| 右臂数据集节奏太规律,模型学会数拍子 | 闭爪@集长的标准差:右臂 7.0%、左臂 8.0% —— 基本一样。 |
| 左臂训练集光照更多样,所以更鲁棒 | 反了。亮度 σ:右臂 4.3(极差 37.6),左臂 2.8(13.8)。 |
| 右臂被安全层削了 | raw vs safe 逐帧比,被改的帧 0.0%。 |
chunk 1/1 下历史上只跑过 1 次,而且是 void。现在改训练配置,会把这个唯一干净的变量一起搅掉,跑出来无法归因。| 顺序 | 做什么 | 成本 | 能回答什么 |
|---|---|---|---|
| 1 | right-sd 跑 5–10 次 chunk 1/1 | 半小时,不用训练 | 停顿是不是主因。有效率若从 10% 升到 40% 一档,就是。 |
| 2 | 若仍失败:查「解冻后为什么往回走」 | 离线,用 trace | 是模型的计划连续性问题,还是喂进去的观测变了 |
| 3 | 若确认是模型:才动训练配置 | 4090 一小时 | — |
~/miniconda3/envs/lerobot/bin/python 起跑测会落到 CPU(该环境的 torch 对不上驱动),每次推理 2.4 秒,动作计划被拉长十倍,抓取根本完不成。要用 ~/miniconda3/envs/train310/bin/python,日志里必须看到 == device: cuda (Orin)。| 结论 | 等级 | 出处 |
|---|---|---|
| 右臂有效率 10.3% / 左臂 40.7% | 跑测过 | 17 + 14 条 trace 逐帧算,2026-09-10 |
| 停顿占比 46% / 26%,间隔 12 拍 | 跑测过 | trace 的时间戳差分 |
| 安全层没削、策略速度正常 | 跑测过 | raw vs safe 逐帧比 |
| 右臂从没在 chunk 1/1 下被有效测过 | 跑测过 | 全部 trials-*.json 逐文件计数:1 次,void |
| 停顿是右臂失败的主因 | 没跑过 | 这就是第 1 步要回答的 |
| 示范慢 2.8 倍是否也是主因 | 没跑过 | 与停顿机制耦合,未单独验证 |
05-training/trials/traces/trace-20260908-*.npz(右臂 17)· trace-20260909-*.npz(左臂 14)