现有 VLA 常走一条清晰但有代价的路线:先用互联网图文训练 VLM,再用规模小得多的机器人数据适配动作。这样能快速获得语义能力,却容易把物理世界理解变成后置补丁。DM0 选择从预训练阶段就把网页、自动驾驶和具身交互放进同一数据体系,再用三阶段训练逐步接入连续控制,目标是让语义知识和物理先验从一开始共同形成。

  • Embodied-Native 训练:预训练混合网页、驾驶与具身数据,Mid-Training 再加入跨本体动作,Post-Training 收窄到目标机器人。
  • 双专家架构:Qwen3-1.7B VLM 负责感知与文本推理,约 300M 的动作专家通过 Flow Matching 生成连续动作块。
  • 混合梯度策略:论文在具身动作训练中隔离 action loss 到 VLM 的梯度,同时用非具身数据继续更新 VLM。
  • 空间脚手架:按子任务、目标框、末端轨迹、离散动作、连续动作逐级约束动作解空间。
  • 主要结果:RoboChallenge Table30 上,Specialist 平均成功率为 62.0%;Generalist 的成功率/任务分数为 37.3/49.08。

论文:https://arxiv.org/abs/2602.14974
官方源码:https://github.com/dexmal/dexbotic
RoboChallenge 推理:https://github.com/dexmal/Dexbotic-RoboChallengeInference
模型集合:https://huggingface.co/collections/Dexmal/dm0
DM0-base:https://huggingface.co/Dexmal/DM0-base

1、问题:物理能力不应只是互联网模型的后置适配

互联网图文擅长物体语义、常识和语言推理,但不直接描述连续接触、动作后果、机器人状态和控制频率。传统 Pretrain-then-Adapt 把两种分布分开处理:预训练先学静态语义,之后才让少量轨迹纠正表示。机器人数据不足时,模型容易只学到任务表面对应关系;动作训练过强时,又可能破坏原有的语言和视觉能力。

DM0 所说的 Embodied-Native 不是一种新动作表示,而是一套训练立场:具身数据在基础 VLM 形成阶段就是一级数据源。作者将网页多模态数据、自动驾驶场景和机器人交互共同用于预训练,希望同时获得通用语义、空间关系、动态场景与可执行行为所需的物理先验。

在这里插入图片描述

图 1 中三类数据各有侧重。网页数据提供知识、OCR、教育、grounding、VQA 和 GUI;自动驾驶数据强调度量深度、道路对象与动态环境;具身数据提供机器人视角下的空间关系和交互记录。DM0 并不是把导航与操作简单拼成两个独立模块,而是让它们共享 VLM 表示。

2、模型架构:VLM 与连续动作专家如何连接

在这里插入图片描述

DM0 由约 400M 的 perception encoder、Qwen3-1.7B 语言主干和约 300M 动作专家组成,论文按约 2B 参数报告;当前公开 DM0-base 模型卡则标为 2.4B。最多三路图像缩放到 728 × 728 728\times728 728×728,进入视觉编码器后,再经过两个 stride 2 的 3 × 3 3\times3 3×3 卷积做 4 倍 token 下采样。视觉 token、机器人状态和语言指令组成前缀,动作专家读取前缀信息并生成连续动作。

模型支持两种推理方式:一种直接从观测和指令生成动作;另一种先产生具身推理文本,再将文本加入条件生成动作。联合分布写成:

π θ ( l ^ , a t : t + H ∣ o t , l ) = π θ ( l ^ ∣ o t , l )   π θ ( a t : t + H ∣ o t , l , l ^ ) \pi_\theta(\hat l,a_{t:t+H}\mid o_t,l)=\pi_\theta(\hat l\mid o_t,l)\,\pi_\theta(a_{t:t+H}\mid o_t,l,\hat l) πθ(l^,at:t+Hot,l)=πθ(l^ot,l)πθ(at:t+Hot,l,l^)

o t = [ I t , s t ] o_t=[I_t,s_t] ot=[It,st] 是时刻 t t t 的多视角图像 I t I_t It 与本体状态 s t s_t st l l l 是任务指令; l ^ \hat l l^ 是可选的推理文本; a t : t + H a_{t:t+H} at:t+H 是长度为 H H H 的连续动作序列。这个分解说明推理文本可以进入动作条件,但并非每次推理都必须先生成 CoT。

2.1、Merged Attention 而不是只拼接最终特征

公开源码中的 DM0Model 创建两个 Qwen3 路径:VLM 主干与没有 token embedding 的 action_expertDM0ForCausalLM._compute_merged_layer 在每一层分别计算两路 Q/K/V,再沿序列维拼接做一次注意力,最后把输出切回各自序列并经过各自的输出投影和 MLP。

这意味着两路专家共享注意力信息,但不共享完整参数。动作 token 可以读取图像与语言前缀;注意力 mask 则阻止前缀反向读取动作后缀,避免连续动作噪声污染条件表示。

3、混合训练:动作学习与语义保持如何兼顾

VLM 的文本目标使用自回归交叉熵:

L A R = − E D [ log ⁡ π θ ( l ^ ∣ o t , l ) ] \mathcal{L}_{\mathrm{AR}}=-\mathbb{E}_{\mathcal D}\left[\log \pi_\theta(\hat l\mid o_t,l)\right] LAR=ED[logπθ(l^ot,l)]

D \mathcal D D 是混合训练数据; l ^ \hat l l^ 包括具身推理文本和离散动作 token。离散动作并不是最终控制输出,而是让 VLM 学到动作相关语义的辅助目标。

连续动作专家使用 Flow Matching。对真实动作块 A t : t + H A_{t:t+H} At:t+H、高斯噪声 ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal N(0,I) ϵN(0,I) 和流时间 τ ∈ [ 0 , 1 ] \tau\in[0,1] τ[0,1],构造:

a ~ t : t + H = τ A t : t + H + ( 1 − τ ) ϵ \tilde a_{t:t+H}=\tau A_{t:t+H}+(1-\tau)\epsilon a~t:t+H=τAt:t+H+(1τ)ϵ

L F M = E D , ϵ , τ ∥ π θ ( a ~ t : t + H , o t , l , τ ) − ( A t : t + H − ϵ ) ∥ 2 2 \mathcal{L}_{\mathrm{FM}}=\mathbb{E}_{\mathcal D,\epsilon,\tau}\left\|\pi_\theta(\tilde a_{t:t+H},o_t,l,\tau)-(A_{t:t+H}-\epsilon)\right\|_2^2 LFM=ED,ϵ,τπθ(a~t:t+H,ot,l,τ)(At:t+Hϵ)22

a ~ \tilde a a~ 是带噪动作; τ \tau τ 是生成过程内部的流时间,不是机器人真实时间; A − ϵ A-\epsilon Aϵ 是论文采用的目标速度方向。总目标为:

L t o t a l = λ L A R + L F M , λ = 1 \mathcal{L}_{\mathrm{total}}=\lambda\mathcal{L}_{\mathrm{AR}}+\mathcal{L}_{\mathrm{FM}},\qquad \lambda=1 Ltotal=λLAR+LFM,λ=1

论文的关键不是简单相加两项损失,而是按数据类型控制梯度:具身样本上的动作专家梯度不回传 VLM,以免连续控制破坏语义表示;非具身 VLM 数据仍正常更新主干。这一设计借鉴 Knowledge Insulation,但 VLM 同时预测离散动作 token,因此也不是把视觉语言主干永久冻结。

需要注意,当前 release 的基础 dm0_arch.py::forward 只计算连续动作 MSE,并通过 merged attention 执行前向;公开优化器收集全部 requires_grad 参数,这条路径中未看到显式 detach。仓库另有 HybridDM0has_texthas_action 计算模态损失,但论文的完整梯度隔离配方与 release 训练入口并非一一对应。

4、Embodied Spatial Scaffolding:把动作问题逐级收窄

空间脚手架不是额外规划器,而是一组层级化监督。模型依次学习五种输出:

  1. Subtask:把整任务分解到当前可执行步骤。
  2. Goal Bounding Box:指出目标物体或目标区域。
  3. EEF Trajectory:在主相机画面预测未来末端执行器二维轨迹。
  4. Discrete Action:把同一动作序列量化为离散 token,训练 VLM 的动作语义。
  5. Continuous Action:由动作专家输出实际控制动作块。

在这里插入图片描述

图 3 展示了这些监督如何与通用数据共存。具身部分不仅有单臂、双臂和导航轨迹,还包含任务拆解、进度估计、场景描述、空间 grounding 与关系理解;右侧保留通用 caption、OCR、知识、VQA 和推理数据,目的是避免模型为了控制而丢掉基础视觉语言能力。

以插花任务为例,模型先生成取左侧第二朵花这一子任务,再框出目标花,预测夹爪在图像上的未来路径,把动作量化为离散 token,最后输出 [ a t , … , a t + H ] [a_t,\ldots,a_{t+H}] [at,,at+H]。前四级监督逐步排除错误物体、错误方向和错误轨迹,连续动作专家不必从整个场景中无约束搜索控制解。

这里的 EEF trajectory 是训练监督中的二维轨迹,不是预测未来图像,也不是世界模型。论文明确把世界模型列为未来工作,因此不应把空间脚手架解释成 WAM。

5、三阶段训练数据与训练设置

在这里插入图片描述

5.1、Pretraining:先形成通用与物理共存的 VLM

预训练加权后约 1.13T token,其中视觉语言数据占 91%,具身数据约 6%,驾驶数据约 3%。训练总计 1.2T token、370K steps,global batch 8192、序列长度 4096,AdamW 的 β 1 = 0.9 \beta_1=0.9 β1=0.9 β 2 = 0.95 \beta_2=0.95 β2=0.95、weight decay 0.01。前 900B token 学习率从 5 × 10 − 5 5\times10^{-5} 5×105 降至 10 − 5 10^{-5} 105,后 300B 高质量数据阶段降至 6 × 10 − 6 6\times10^{-6} 6×106

5.2、Mid-Training:接入跨本体动作

Mid-Training 加权后为 200M samples,混合通用视觉语言、具身推理、仿真、单臂和双臂数据。仿真覆盖 LIBERO 四类任务、RoboTwin2.0 的 50 个任务和 Habitat 导航;真实数据来自 Franka、UR5、ARX-5、UMI、ALOHA 以及 OXE、Fuse、RoboMind、Agibot Alpha、Galaxea Open World 等来源。

机器人轨迹以逐时间步 JSONL 保存,包含最多三视角图像、指令、本体状态和可选的 subtask、goal box、2D waypoint。动作窗口长度为 50,归一化后量化成 255-bin 离散词表,同时保留连续目标。数据使用每种组合 500 个经过人工润色的对话模板,减少模型对固定提示句式的依赖。

Mid-Training 在 64 张 NVIDIA H20 上训练一轮,每卡 batch 6,最大长度 4096,学习率从 2.5 × 10 − 5 2.5\times10^{-5} 2.5×105 衰减到 10 − 5 10^{-5} 105,启用 AMP 和 ColorJitter。

5.3、Post-Training:收窄本体分布

Post-Training 为 50M samples,保留部分 VLM 数据,同时把机器人数据限制在少数目标本体。表示、模板和联合监督不变,只改变采样范围。它不是单任务 Specialist SFT:Post-Training 先形成适合目标平台的基础策略,后续 RoboChallenge 评测还会继续做 Specialist 或 Generalist SFT。

6、推理流程:前缀只算一次,动作做 10 步 Euler 积分

当前开源 inference_action 默认生成 50 × 32 50\times32 50×32 的动作张量。图像与文本前缀先经过 merged attention 并写入 KV cache,随后从高斯噪声开始,以默认 10 个 diffusion steps 重复调用 _denoise_step

dt = -1.0 / diffusion_steps
time = torch.tensor(1.0, device=device, dtype=dtype)
while time >= -dt / 2:
    noise, time = self._denoise_step(
        x_t=noise, time=time, dt=dt, kv_cache=kv_cache, ...
    )
return noise

每一步把当前动作与时间编码成 suffix token,只重新计算动作侧,并复用视觉语言前缀缓存;更新规则为 x t + Δ t = x t + v t Δ t x_{t+\Delta t}=x_t+v_t\Delta t xt+Δt=xt+vtΔt。当前 release 将状态和动作 pad 到 32 维,真实机器人动作维度在策略输出末端裁回;默认数据管线还执行 delta action 和 quantile normalization。

7、源码解析与复现入口

7.1、关键目录

dexbotic/
├── dexbotic/model/dm0/
│   ├── dm0_arch.py              # merged attention、FM 训练与 Euler 采样
│   ├── dm0_prog_arch.py         # 带任务进度输入/输出的变体
│   └── hybrid_dm0_arch.py       # VLA/VLM 混合 batch 与双损失
├── dexbotic/exp/
│   ├── dm0_exp.py               # 模型、数据、动作与优化配置
│   └── hybrid_dm0_exp.py        # 混合训练入口
├── dexbotic/policy/dm0_policy.py
├── playground/benchmarks/libero/
├── playground/benchmarks/table30/
└── docs/DM0.md

7.2、论文模块到代码映射

论文概念 源码落点 实际作用
VLM + Action Expert DM0Model 初始化视觉塔、Qwen3 主干、Qwen3 动作专家和动作投影
Merged Attention _compute_merged_layer 合并两路 Q/K/V,切回各自残差与 MLP 路径
图像/语言条件 get_prefix_hidden_states 按视角编码图片并与文本 embedding 拼接
带噪动作 get_suffix_hidden_states 动作线性投影与正弦时间编码融合
Flow Matching DM0ForCausalLM.forward Beta 采样流时间,构造噪声动作并计算 MSE
动作生成 inference_action_denoise_step 缓存前缀,默认 10 步 Euler 积分
50 步/32 维接口 DM0ConfigDM0ActionConfig chunk_size=50action_dim=32、pad 与归一化
混合训练 HybridDM0ForCausalLM.forward 依据模态标记计算文本与动作损失
进度监督 DM0ProgForCausalLM 在推理中附加 begin/end progress 条件

7.3、最小官方流程

git clone https://github.com/Dexmal/dexbotic.git
cd dexbotic
mkdir -p checkpoints
git clone https://huggingface.co/Dexmal/DM0-base checkpoints/DM0-base

torchrun --nproc_per_node=8 playground/benchmarks/libero/libero_dm0.py

CUDA_VISIBLE_DEVICES=0 python playground/benchmarks/libero/libero_dm0.py \
  --task inference

官方建议使用 8 张 A100/H100 训练 LIBERO;RTX 4090 需要 ZeRO-3 offload。真机 Table30 则通过单独推理仓库、任务配置和 RoboChallenge 分配的机器人时段运行,不能只靠本地 checkpoint 完成端到端复现。

7.4、论文与 release 配置差异

项目 论文设定 当前公开实现
参数量 约 2B DM0-base 文档标注 2.4B
完整三阶段训练 1.2T token + 200M + 50M 配方 发布了基础权重和下游训练框架,原始全量语料未完整发布
梯度隔离 具身 action gradient 不回传 VLM 基础 action-only 路径未见显式 detach;混合实现按模态计算损失
动作接口 论文实验 horizon 50 release 默认 chunk 50、pad 到 32D,默认 10 步采样
RoboChallenge Specialist 与 Generalist 结果 checkpoint、配置和推理代码已发布
多模态保留 论文给出定性 VQA 样例 未报告标准 VQA benchmark 的量化保持率

8、实验结果

8.1、Specialist:每个任务单独微调

RoboChallenge Table30 覆盖 UR5、Franka、ARX5 和 ALOHA 的 30 个长时程桌面任务。Specialist 每个任务只用目标任务数据,在 8 张 H20 上训练 40K 至 150K iterations,每卡 batch 4,动作 horizon 50;带星号任务使用额外进度监督。表中数字为成功率,数据统计截止 2026-02-10。

在这里插入图片描述

DM0 平均成功率 62.0%,高于 Spirit-v1.5 的 51.0%、GigaBrain-0.1 的 51.67% 和 π 0 .5 \pi_0.5 π0.5 的 42.67%。它在整理水果、摆盘、堆色块、开抽屉、鞋架放鞋、杯子放杯垫、搜索绿盒和堆碗等任务达到 100%,但清理餐桌、制作三明治、电子产品分类、扫码和擦桌仍为 0。整体均值不能掩盖这些明确失败项。

8.2、Generalist:同一机器人任务合并训练

Generalist 将同一机器人平台的所有任务合并,在 16 张 H20 上训练 200K iterations,每卡 batch 4。由于完整成功率普遍较低,论文同时报告 success rate 和 composite task score。

在这里插入图片描述

DM0 总体为 37.3/49.08, π 0 .5 \pi_0.5 π0.5 为 17.67/31.27, π 0 \pi_0 π0 为 9.0/20.22。DM0 在堆色块、鞋架放鞋、杯子放杯垫和搜索绿盒等任务明显领先,但在 ALOHA 的清理餐桌、放开瓶器、放笔、扫码和堆碗上并非最佳。Specialist 与 Generalist 使用不同训练数据范围,二者数字不能直接解释为架构消融。

8.3、论文没有提供什么

论文没有给出 Spatial Scaffolding、梯度隔离和三阶段数据配方的逐项消融,也没有报告推理延迟、控制频率、显存占用或不同 Euler 步数的速度-成功率曲线。多模态能力部分是 VQA、OCR、subtask 和移动界面的定性样例,没有标准 benchmark 量化结果。因此实验能支持 DM0 在 Table30 上有效,但不能单独证明每个设计分别贡献了多少增益。

9、方法价值、局限与工程判断

DM0 最有价值的部分是把数据课程、表示监督和动作生成连成一条完整训练链。相比把通用 VLM 当成不可改变的外部模块,它允许主干在非具身数据上继续学习,又尝试隔离连续动作梯度;空间脚手架则让推理能力以目标框和末端轨迹的形式真正靠近控制接口。

代价也很直接。三阶段训练需要 1.2T token、数亿样本和 64 张 H20 的 Mid-Training 资源,外部团队很难完整复现;500 套模板和多种辅助标签带来显著数据工程成本;二维末端轨迹对遮挡、深度和接触信息的表达有限。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐