逐个测试
每个测试 15 格(5 个布局 × 3 个 seed)。每格只有 1 回合,所以单个测试的 95% 置信区间很宽(例如 9/15 对应 36–80%)。
每一格
实心 ✓ = 成功,空心 · = 失败。每组 3 格是同一个布局的 seed 0、1、2。点格子播放这一格的三视角录像(头部相机 + 左右腕部相机)。
和 09-22 skill 100k 的对比
09-22 的数字来自 Ziming 的 skill 100k(以 60k EMA 为初始化),在原生(非 Docker)栈上跑,而且测试设置不同:提示词前缀重复了一次、rest shim 打开、Kit 同步加载参数打开,非放置类测试用的是加 RELEASE_REQUIRED 之前的打分器;每个测试的格数也不一样。所以这里的差异同时混着模型和设置两方面的变化,只能作参考。p 值为 Fisher 精确检验(双侧)。
| 测试 | 40k | 95% CI | 09-22 100k | p |
|---|---|---|---|---|
合上笔记本(短指令)close_short | 13/15 | 62–96% | 4/13 | 0.006 |
合上笔记本(长指令)close_full | 14/15 | 70–99% | 5/15 | 0.002 |
拿起耳机pick_headphones | 9/15 | 36–80% | 5/10 | 0.697 |
按蓝色按钮press_blue | 15/15 | 80–100% | 12/12 | 1.000 |
右手推 T 形块push_right | 0/15 | 0–20% | 0/15 | 1.000 |
左手推 T 形块push_left | 0/15 | 0–20% | 0/10 | 1.000 |
把碗叠到另一个碗上place_bowl | 4/15 | 11–52% | 9/15 | 0.139 |
把试管插进架子insert_tube | 2/15 | 4–38% | 9/15 | 0.021 |
把螺母拧到螺栓上screw_nut | 0/15 | 0–20% | 1/4 | 0.211 |
用木槌敲木琴strike_xylophone | 0/15 | 0–20% | 0/9 | 1.000 |
把方块扫进簸箕sweep_cubes | 0/15 | 0–20% | 0/9 | 1.000 |
把杯子挂到杯架上hang_mug | 4/15 | 11–52% | 3/3 | 0.043 |
把杯里的球倒进花瓶pour_balls | 7/15 | 25–70% | 2/10 | 0.229 |
测试设置
| 模拟器 | 官方镜像 robodojo:cuda12.8(上游 726e9aa,Isaac Sim 5.1),代码不改;CPU 物理,单环境;Kit 启动时加官方的 zero-delay 渲染参数 |
| 测试脚本 | Fang 的 atomic2 harness(RPent d2874d0 + more_cases_20260921),冻结快照并做 MD5 校验;每格一个独立进程,从复位开始跑 1 回合 |
| 规模 | 13 个测试 × 布局 0–4 × seed 0–2 = 195 格 |
| 预算与打分 | 最多 256 个控制步(25 Hz),每 32 步重新规划一次,成功状态要保持 5 步;放置类(叠碗、插、拧、挂)要求松开夹爪才算成功 |
| 策略服务 | DO-WAM-skill_wam 的 dowam_openwam_server_robodojo.py,10 步去噪;没点名的手臂保持不动(hold_uncontrolled_arms,只在推理时做,训练时 mask_inactive_arms=false);rest shim 关 |
| 指令文本 | 发给模型的是“训练用的原生前缀 + 测试句子”,文本编码只从缓存读(Gemma-3-12B + LTX-2.3 connector),和训练时的编码核对过一致 |
| 权重 | /mnt/efs/monitor/ckpts/junbo_skill_cos276k_s040000_ema_20260926(bf16,sha256 a8d9ba64…)。训练:276k EMA 起步,cosine 60000 步,学习率 action 1e-4 / video 1e-5;只用 skill 片段数据(robodojo_skills_native25_v1),train_config 里 14 个任务采样权重 ×2;8 × H200,全局 batch 256。原本想测 32k,但那一步已被清理,改测 40k |
| 资源 | 每条 lane 1 张 L40S(policy server 约 31 GB + 一个 Isaac 容器约 9 GB)。Slurm array 3424(16 条 lane)跑了 70 格后取消:我们 lane 脚本的节点锁 bug 让同一台机器一次只能跑一格;修好后用 array 3440(32 条 lane)跑完剩下 125 格。bug 只影响调度,不影响结果。04:06–05:18 UTC |
| 运行目录 | /mnt/efs/monitor/rpent/runs/atomic13_skillcos276k_s040000_docker_20260926 |
13 个测试
指令和成功判据都是 harness 里的原文。
| 测试 | 指令 | 成功判据 |
|---|---|---|
合上笔记本(短指令)close_short · CLOSE | Close the laptop lid with the right gripper. The object has a hinged mechanism. | native laptop_hinge ratio > 0.85, held 5 control steps |
合上笔记本(长指令)close_full · CLOSE | Close the laptop lid with the right gripper. Shape: flat sheet. Material: metal. Size: larger than gripper. The object has a hinged mechanism. | native laptop_hinge ratio > 0.85, held 5 control steps |
拿起耳机pick_headphones · PICK | Pick up the headphones with the right gripper. | native headset lift > 0.10 m, held 5 control steps |
按蓝色按钮press_blue · PRESS | Press the blue button with the right gripper. | blue button2 press ratio < 0.5 followed by release > 0.9 |
右手推 T 形块push_right · PUSH | Push the T-shaped block with the right gripper. Target: gray T-shaped pad. | native T/pad xy distance < 0.007 m and orientation < 7 degrees; no >0.01 m lift |
左手推 T 形块push_left · PUSH | Push the T-shaped block with the left gripper. Target: gray T-shaped pad. | native T/pad xy distance < 0.007 m and orientation < 7 degrees; no >0.01 m lift |
把碗叠到另一个碗上place_bowl · PLACE | Place the bowl with the right gripper. Target: bowl. Shape: round. Size: larger than gripper. The object has opposing parallel faces. | native is_stacked(bowl0, bowl1) with the top bowl upright (axis_up 45 deg), grippers open |
把试管插进架子insert_tube · INSERT | Insert the tube with the right gripper. Target: slot. Size: gripper-sized. The object has an elongated body with an axis. | native is_A_in_B + is_A_depth_in_B(0.045 m) + axis_up(30 deg) for any one tube, grippers open |
把螺母拧到螺栓上screw_nut · SCREW | Screw the nut with the right gripper. Target: bolt. Size: smaller than gripper. The object has a threaded mechanism. | native axis_up(10 deg) + xy distance < 0.001 m + depth 0.009 m for any one nut, grippers open |
用木槌敲木琴strike_xylophone · STRIKE | Strike the mallet with the right gripper. Target: xylophone. The object has a shaft or handle. | native mallet beat point inside a xylophone key bbox, 0.01-0.036 m above the hit point |
把方块扫进簸箕sweep_cubes · SWEEP | Sweep the blocks with the right gripper. Target: dustpan. The object has an irregular solid body. | native is_all_A_in_B_support_circle(cubes, dustpan) with the dustpan flat on the table |
把杯子挂到杯架上hang_mug · HANG | Hang the mug with the right gripper. Target: cup holder. The object has a shaft or handle. | native lift 0.045 m + handle above z=0.9 + handle axis aligned with the holder (60 deg) for any one mug, grippers open |
把杯里的球倒进花瓶pour_balls · POUR | Pour the cup with the right gripper. Target: vase. The object has opposing parallel faces. | native is_A_in_B(sphere, vase) for at least one ball, with the cup not dropped |