DM0架构图 📅 发布时间:2026/9/6 2:01:00 👁 浏览次数: 可以。下面我把论文定义(Paper Definition)、DM0-base 官方配置(Official Configuration)、当前 Dexboticmain中的dm0_arch.py、hybrid_dm0_arch.py和训练 / 推理数据管线放在一起对齐。这里最重要的是:不能把“论文想实现的训练计算图”和“当前公开代码实际执行的计算图”混成一张图,因为二者目前确实存在若干差异。截至2026 年 9 月 5 日,论文仍是 arXiv v1;Dexbotic 此后已经增加Hybrid DM0 Co-Training、实时推理和 DM0 LoRA SFT 等能力,因此“论文 DM0”和“今天代码仓里的 DM0”需要分层理解。(arXiv)1. 先给出最关键的架构结论DM0 的核心不是传统的“VLM 完整跑完以后,把最后一个 hidden state 喂给独立 action head”,而是双专家合并注意力架构(Dual-Expert Merged-Attention Architecture)。论文抽象地描述为VLM 骨干(VLM Backbone)产生条件 KV,流匹配动作专家(Flow-Matching Action Expert)基于这些表示生成连续动作;当前公开代码进一步揭示:VLM Qwen3 和 Action Qwen3 在每一 Transformer 层分别产生自己的 Q/K/V,然后沿 sequence 维拼起来完成一次 attention,再把输出切回两个分支,各自执行自己的 O-Proj、残差和 MLP。(arXiv)官方DM0-base配置给出的关键结构是:VLM 为 28 层 Qwen3、hidden size 2048;Action Expert 同样 28 层 Qwen3、hidden size 1024;两边均为 16 个 attention heads、8 个 KV heads、head dim 128。内部动作维是 32,action chunk 固定为 50。视觉塔配置为pe_lang_l14_728。(Hugging Face)这两个专家虽然 hidden size 不同,却能进行 merged attention,关键原因是 attention 的head 数(Number of Heads)和单头维度(Head Dimension)对齐,因此投影后的 Q/K/V attention 表示可以沿 token/sequence 轴合并;attention 输出之后再切回各自分支,并由各分支自己的 O-Proj 映射回 2048 或 1024 hidden space。(Hugging Face)还有两个必须特别强调的论文—代码差异。第一,论文的 Mid/Post-Training 明确定义:L ∗ t o t a l ( θ ) = λ L ∗ A R ( θ ) + L F M ( θ ) , λ = 1. (4) \mathcal{L}*{\mathrm{total}}(\theta)=\lambda\mathcal{L}*{\mathrm{AR}}(\theta)+\mathcal{L}_{\mathrm{FM}}(\theta),\qquad\lambda=1.\tag{4}L∗total(θ)=λL∗AR(θ)+LFM(θ),λ=1.(4)而当前普通dm0_arch.py::forward()最终实际上只执行F.mse_loss(v_t,u_t),随后直接令loss = action_loss。也就是说,标准公开 DM0 forward 是 Action-only Flow Matching。后来新增的HybridDM0才把文本交叉熵(Text Cross-Entropy)和动作流匹配损失(Action Flow-Matching Loss)真正放进一个联合 forward。(GitHub)第二,论文明确规定 embodied action expert 的梯度不能反传到 VLM,即知识隔离(Knowledge Insulation, KI);但在我检查的当前main的dm0_arch.py和hybrid_dm0_arch.py中,没有看到对应 prefix/KV 的显式detach()/ Stop Gradient,实验配置中也没有默认冻结 VLM。HybridDM0中出现的.detach()都只是 loss diagnostics。由于 action suffix 实际 attention 到 VLM prefix K/V,所以从公开计算图本身看,action loss 可以沿 K/V 条件路径影响 VLM;因此下面必须把“论文图”和“代码图”分开。(arXiv)2. DM0 三阶段整体训练逻辑论文的三阶段训练(Three-Stage Training)可以概括如下。Pretraining 只建立 embodied-native VLM;Mid-Training 才加入 Action Expert;Post-Training 不改变基本目标和架构,只把机器人 embodiment 范围收窄到部署目标。(arXiv)阶段核心目标数据 / 监督模型状态Pretraining建立具身原生 VLM(Embodied-Native VLM)Web、文档、VQA、OCR、Driving、Embodied grounding 等VLM 全参数联合优化Mid-Training加入连续控制能力Dialogue Tokens + Discrete Action Tokens + Continuous ActionsVLM + Action ExpertPost-Training面向目标机器人收敛分布保留部分 VLM 数据 + 目标 embodiments Robot Data与 Mid 相同联合目标下游 SFTSpecialist / Generalist具体机器人或具体任务轨迹当前 Dexbotic 提供可直接执行的训练 recipePretraining 论文报告所有参数联合优化,训练约 1.2T tokens、370K steps,global batch 8192、sequence length 4096。Mid-Training 使用三个图像视角、50-step action window;连续动作和它对应的离散动作 token 是同一真实动作轨迹的两种表示,其中离散表示量化到 255-bin vocabulary。(arXiv)3. 论文定义的 DM0 Mid/Post-Training 完整训练架构这是我认为最适合作为“DM0 论文方法图”的版本。这里特别做了一个忠实性处理:论文把子任务预测(Subtask Prediction)、目标框预测(Goal Bounding Box Prediction)、末端执行器 2D 轨迹预测(End-Effector 2D Trajectory Prediction)和离散动作预测(Discrete Action Prediction)描述为 Embodied Spatial Scaffolding 的层次化监督,但论文并没有给这四项分别定义独立 scalar loss 和独立权重。因此我没有伪造四个 Loss,而是把它们作为 VLM 自回归监督目标,统一进入L A R \mathcal L_{\mathrm{AR}}LAR。(arXiv)阶段 4:联合损失与优化目标(Joint Loss and Optimization Objective)阶段 3:连续动作流匹配(Continuous Action Flow Matching)阶段 2:VLM 感知、推理与离散动作建模(VLM Perception and Autoregressive Modeling)阶段 1:输入构造与双动作表示(Input Construction and Dual Action Representation)阶段 0:原始训练数据(Raw Training Data)子损失(Sub Losses)ConditionPredictionLabelPredictionTargetλ = 1Gradient: AR BranchGradient: FM Branch数据模块:多视角图像(Multi-view Images / I_t)Shape: [B, V, C, H, W]数据模块:语言指令(Language Instruction / l)Shape: [B, N_text]数据模块:本体状态(Proprioceptive State / s_t)Shape: [B, d_state]数据模块:多模态对话与推理监督(Dialogue / Reasoning Targets)数据模块:空间脚手架监督(Embodied Spatial Scaffolding Targets)数据模块:真实连续动作窗口(Ground-truth Continuous Actions / A)Shape: [B, 50, d_action]操作模块:图像缩放与视图整理(Resize / View Packing)参数:V = 3,H = W = 728操作模块:动作窗口构造与归一化(Action Windowing / Normalization)参数:Horizon = 50数据模块:归一化连续动作(Normalized Continuous Actions / A)Shape: [B, 50, d_action]