问题描述
完全按照 README 中的官方配置和官方流程,下载 specialist checkpoint 后通过 execute.py 向 RoboChallenge 平台提交评估,所有 rollout 的 score 均为 0,success_rate 为 0。
已在多个任务上复现,以下是 4 次提测记录,分数全部为 0:
参数疑问
default.yaml 中 duration: 0.1 是否是正确的值?训练时实际使用的 duration 是多少?
- 各任务的
action_horizon 和 duration 的推荐配置是什么?
复现步骤
- 按照 README 安装
dexbotic 包和项目依赖
- 下载官方 specialist checkpoint:
huggingface-cli download Dexmal/DM0-table30_pour_fries_into_plate --local-dir ./checkpoints/DM0-table30_pour_fries_into_plate
- 使用官方配置提交评估:
python execute.py \
--config-name=specialist/pour_fries_into_plate \
user_id=YOUR_USER_ID \
job_collection_id=YOUR_JOB_COLLECTION_ID
- 等待 rollout 完成后,查看 RoboChallenge 结果页面,所有 rollout 得分均为 0。
环境信息
- GPU: NVIDIA A800-SXM4-80GB
- Conda env: dexbotic_dm0
- Checkpoint:
Dexmal/DM0-table30_pour_fries_into_plate
- Task: pour_fries_into_plate (aloha, 双臂, 14 维 joint space)
使用的配置(default.yaml + specialist 覆盖)
task_name: pour_fries_into_plate
checkpoint: ./checkpoints/DM0-table30_pour_fries_into_plate
policy_type: dm0 # 默认值
action_horizon: 35 # specialist 覆盖
duration: 0.1 # 默认值
image_size: [728, 728]
postprocess_args:
gripper_threshold: 0.01
gripper_open: null
gripper_close: 0.0
分析与排查
经过详细的离线实验(Phase 1-3),定位到以下几个可能导致分数全 0 的问题:
1. duration / action_scale 不匹配(影响最大)
训练数据采集频率为 30fps(即每步约 0.033s),但 default.yaml 中默认 duration: 0.1,是训练间隔的 3 倍。实际在 robot 端执行时日志显示 duration: 0.04,与配置中的 0.1 也不一致。
这种频率不匹配会导致:
- action_scale 过度补偿约 25%,每步产生额外的关节角度漂移
- 50 步累积漂移可达约 5.5°,对精密操作任务(如倒薯条)来说足以导致失败
2. 推理延迟导致 "走走停停"(stop-and-go)
job_worker.py 中 process_job 的循环是串行的——等推理完成后才 post action,期间机器人处于空闲状态。实际 duty cycle 仅约 57%,导致机器人运动模式严重偏离训练时的平滑连续分布。
3. 部分 checkpoint 存在架构声明错误
pour_fries_into_plate 的 checkpoint 中 config.json 声明架构为 DM0ForCausalLM,但实际包含 4 个 DM0ProgForCausalLM 的 progress 权重。使用默认 policy_type: dm0 加载时这些权重被静默丢弃。
经实验验证此因素影响较小(约 1° 差异),不是分数全 0 的主要原因。
4. Gripper 二值化误判
右侧 gripper 的开合二值化存在约 17% 的错误率,可能导致抓取/释放时机不准确。
Ground Truth 评估摘要 (open-loop Phase 3)
Task : pour_fries_into_plate
Episode : 0
Eval points : 84
Frame range : [0, 2490]
--- DM0 ---
MSE : 0.00007485
Mean L1 : 0.00453715
Max |error| : 0.11870188 (6.80°)
Pearson r : 0.999955
Near-zero : 0/84 (0.0%)
--- DM0_PROG ---
MSE : 0.00012115
Mean L1 : 0.00624393
Max |error| : 0.12858653 (7.37°)
Pearson r : 0.999928
Near-zero : 0/84 (0.0%)
模型预测精度本身很高(Pearson r > 0.999),说明模型能力没有问题,问题出在执行侧参数配置。
期望行为
按照官方提供的默认配置和 checkpoint,至少在部分 rollout 上应该能够得到非零分数。
问题描述
完全按照 README 中的官方配置和官方流程,下载 specialist checkpoint 后通过 execute.py 向 RoboChallenge 平台提交评估,所有 rollout 的 score 均为 0,success_rate 为 0。
已在多个任务上复现,以下是 4 次提测记录,分数全部为 0:
参数疑问
default.yaml中duration: 0.1是否是正确的值?训练时实际使用的duration是多少?action_horizon和duration的推荐配置是什么?复现步骤
dexbotic包和项目依赖环境信息
Dexmal/DM0-table30_pour_fries_into_plate使用的配置(default.yaml + specialist 覆盖)
分析与排查
经过详细的离线实验(Phase 1-3),定位到以下几个可能导致分数全 0 的问题:
1.
duration/action_scale不匹配(影响最大)训练数据采集频率为 30fps(即每步约 0.033s),但
default.yaml中默认duration: 0.1,是训练间隔的 3 倍。实际在 robot 端执行时日志显示duration: 0.04,与配置中的0.1也不一致。这种频率不匹配会导致:
2. 推理延迟导致 "走走停停"(stop-and-go)
job_worker.py中process_job的循环是串行的——等推理完成后才 post action,期间机器人处于空闲状态。实际 duty cycle 仅约 57%,导致机器人运动模式严重偏离训练时的平滑连续分布。3. 部分 checkpoint 存在架构声明错误
pour_fries_into_plate的 checkpoint 中config.json声明架构为DM0ForCausalLM,但实际包含 4 个DM0ProgForCausalLM的 progress 权重。使用默认policy_type: dm0加载时这些权重被静默丢弃。经实验验证此因素影响较小(约 1° 差异),不是分数全 0 的主要原因。
4. Gripper 二值化误判
右侧 gripper 的开合二值化存在约 17% 的错误率,可能导致抓取/释放时机不准确。
Ground Truth 评估摘要 (open-loop Phase 3)
模型预测精度本身很高(Pearson r > 0.999),说明模型能力没有问题,问题出在执行侧参数配置。
期望行为
按照官方提供的默认配置和 checkpoint,至少在部分 rollout 上应该能够得到非零分数。