Skip to content

Fail to reproduce DM0 results #1

Description

@yldcs

问题描述

完全按照 README 中的官方配置和官方流程,下载 specialist checkpoint 后通过 execute.py 向 RoboChallenge 平台提交评估,所有 rollout 的 score 均为 0,success_rate 为 0

已在多个任务上复现,以下是 4 次提测记录,分数全部为 0:

Run 任务 结果链接
1 pour_fries_into_plate run_id=89517591
2 pour_fries_into_plate run_id=3bc5d51d
3 plug_in_network_cable run_id=85e51aef
4 pour_fries_into_plate run_id=ad49d86c

参数疑问

  1. default.yamlduration: 0.1 是否是正确的值?训练时实际使用的 duration 是多少?
  2. 各任务的 action_horizonduration 的推荐配置是什么?

复现步骤

  1. 按照 README 安装 dexbotic 包和项目依赖
  2. 下载官方 specialist checkpoint:
    huggingface-cli download Dexmal/DM0-table30_pour_fries_into_plate --local-dir ./checkpoints/DM0-table30_pour_fries_into_plate
  3. 使用官方配置提交评估:
    python execute.py \
      --config-name=specialist/pour_fries_into_plate \
      user_id=YOUR_USER_ID \
      job_collection_id=YOUR_JOB_COLLECTION_ID
  4. 等待 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.pyprocess_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 上应该能够得到非零分数。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions