一句话定位

DiVLA 用一个预训练 VLM(qwen2-vl,2B/7B/72B)做自回归推理,再把该推理的最终 embedding 通过 FiLM”注入”到一个从零初始化的扩散动作头(标准 Diffusion Policy 结构)里,从而在同一个端到端策略网络里同时获得语言推理能力(可解释、可泛化到未见物体/指令)与扩散策略的连续动作生成鲁棒性,且不需要像 ECoT 那样把推理输出递归地喂回模型第二次前向。

背景与定位

2024 年的机器人基础模型分成两条并行但互斥的技术路线:一条是以 rt-2openvla 为代表的”自回归离散动作 token”路线——把动作离散化成 token,让预训练 VLM 用 next-token prediction 统一处理感知、语言与动作,好处是能直接复用 VLM 的推理与世界知识,但代价是离散化破坏了动作的连续性/精度,且自回归解码在实时控制场景下太慢;另一条是以 diffusion-policy、TinyVLA、π₀(pi0)为代表的”扩散/流匹配动作头”路线——把动作生成建模成去噪过程,擅长处理动作的多模态分布、解码快,但缺乏语言推理能力,无法像 LLM 那样对任务做拆解说明。DiVLA 的定位就是把这两条路线直接拼接:自回归部分只负责”想”(生成推理短语),扩散部分只负责”做”(生成动作),中间用一个新提出的 reasoning injection 模块桥接。

这与同期 ECoT(chain-of-thought VLA)的差异是:ECoT 把推理输出转成文本重新喂回模型做第二轮前向(递归式),而 DiVLA 把推理的隐层 embedding 直接通过 FiLM 调制扩散策略网络的层,一次前向即可完成”推理+动作”,避免了递归带来的额外推理开销。作者后续把这一思路进一步产品化为 dexvla(把扩散头换成 DiT 风格的 ScaleDP,并引入三段式训练),DiVLA 本身没有独立开源仓库,训练脚本挂在 DexVLA 仓库下(见下方”原始链接”)。

模型架构

  • 视觉编码:SigLIP 把每路相机图像编成稠密视觉特征,再经一个 Transformer 压成固定数量 N 个 visual embedding;多相机视角共享同一 SigLIP 主干,各视角 token 拼接后一起送入 VLM。
  • VLM 主干:Qwen2-VL,提供 2B / 7B / 72B 三档规模,直接用官方公开权重初始化;作者强调该架构解耦了”视觉语言理解”与”动作生成”两部分,因此 VLM 可替换为任意其他预训练 VLM。
  • 动作 token 投影层:VLM 最后一层输出固定数量的 action token,经一个由两层 MLP + LayerNorm 组成的投影模块(类似 LLaVA 的桥接层)把维度对齐到扩散模型。
  • 动作解码头:标准 Diffusion Policy 结构(GitHub README 确认为 U-Net-based diffusion policy),权重随机初始化,不复用 VLM 预训练权重;底部接一个 MLP 层输出机器人关节空间动作。跨本体(embodiment)时不像 Octo 那样为每个本体复制一整套独立动作头,而只新初始化一个 MLP 层,其余扩散主干共享,从而保留预训练知识、加快对新本体的适配。
  • Reasoning injection 模块(核心创新):取自回归部分推理 token 的最终 embedding,通过 Feature-wise Linear Modulation(FiLM,启发自 RT-1 与 YAY)把其作为条件信号调制扩散策略网络各层;策略网络本身仍以动作 token 为主,推理信号只是辅助增强,不主导决策流程——这一设计避免了 ECoT 式”生成推理文本→重新输入模型”的递归开销。
  • 三档模型(DiVLA-2B / 7B / 72B)架构完全相同,只是 Qwen2-VL 主干规模不同;论文正文一处提到”2B、8B、72B”应为笔误,摘要与全部实验表格统一使用 2B/7B/72B。

数据

  • 预训练:DiVLA-2B / DiVLA-7B 只用 Droid 数据集预训练;DiVLA-72B 因模型更大、需要更多数据,改用 OXE + Droid 联合预训练。Droid 原始数据只有部分片段配有观测+语言指令,缺少”推理”标注;作者用 GPT-4o 自动把这些片段转写成带推理短语的形式,使预训练阶段的数据格式与微调阶段一致(同一套网络架构贯穿两阶段)。
  • 对比基线的预训练规模:Octo、OpenVLA 都在 OXE 上预训练(970K 条轨迹),比 DiVLA 自己的预训练数据集大 25 倍——论文以此突出 DiVLA 用更少预训练数据仍反超的数据效率。
  • 微调数据(四个真实机器人任务场景)
    • 多任务学习:580 条轨迹,5 个子任务(物体选择、扶正倒放花盆、把方块放入指定颜色盒子、把杯子放到盘子上、把方块放进带盖盒子),另设 3 类视觉泛化测试(干扰物、背景变化、彩色光照)。
    • 工厂分拣(factory sorting):500 条轨迹,4 类物体(玩具车、针织手套、毛绒玩具、六角扳手)。
    • 零样本拣选(bin picking):不采集任何训练数据,直接零样本在 102 个未见物体上评测。
    • 双臂清台(table bussing,AgileX 双臂机器人):400 条轨迹,物体随机摆放、常有重叠。
    • 微调阶段同一本体的数据合并训练(如工厂分拣与多任务数据一起训练 Franka 单臂模型)。

训练方法

  • 目标函数:总 loss = 扩散 loss + α × next-token-prediction loss(L = L_diff + αL_ntp)。作者观察到 L_ntp 量级持续比 L_diff 小约一个数量级,为平衡两个损失项的贡献,最终版(ICML 2025 camera-ready,arXiv v3)设 α = 10(早期 v1 预印本中记为 α = 1,v3 为作者更正后的最终值)。
  • 微调策略:视觉编码器与 VLM 主干冻结,仅用 LoRA 对 VLM 做微调;固定学习率 2e-5(预训练、微调阶段一致,与 OpenVLA 设置类似)。
  • 不做 action chunking:作者明确不采用 Data-Scaling-Laws、π₀ 等工作使用的动作分块(chunking)技巧——虽然 chunking 能提升推理速度,但实验发现它会损害泛化性能,因此舍弃。
  • Reasoning injection 消融:在多任务学习设置下去掉 reasoning injection 模块、其余训练方式不变,5 个子任务成功率从 DiVLA-2B 完整版的 100/100/63.6/63.6/90.9(均值 83.6%)大幅跌到 66.7/66.7/45.5/45.5/27.3(均值 50.3%),验证该模块是核心贡献而非锦上添花。
  • baseline 训练细节(用于保证公平对比):OpenVLA 用官方权重、学习率 2e-5、训练 20 epoch(作者发现 OpenVLA 需要更长训练时间才能收敛);为公平对比 DiVLA 使用的三路相机输入,OpenVLA 也被扩展为三视角版本(原版只用单视角)——单视角 OpenVLA 在工厂分拣任务上的平均成功率仅 12.7%,扩到三视角后提升到 45.3%(Seen 56.2% / Mixed 46.2% / Cluttered Seen 45.0% / Cluttered Mixed 33.8%),论文统一用三视角版本做主表对比;Diffusion Policy baseline 用 DistilBERT 编码语言指令(做法参照 YAY)。

Infra(训练 / 推理工程)

  • 训练算力(GPU 数、GPU-hours):论文未披露。
  • 推理部署:模型通过 vLLM 框架部署提速。单张 A6000 GPU 上的控制频率(Table 5):DiVLA-2B = 82 Hz、DiVLA-7B = 42 Hz、OpenVLA-7B = 5 Hz(DiVLA-7B 比同等 7B 规模的 OpenVLA 快 8 倍)。不用 vLLM 时:DiVLA-2B = 74 Hz、DiVLA-7B = 30 Hz——仍比 OpenVLA-7B 快约 6 倍,说明 vLLM 带来的加速对 DiVLA 而言不如对纯 LLM 服务那么显著(推测因为扩散头本身不是纯自回归解码瓶颈)。
  • 量化:作者观察到模型在 8-bit / 4-bit 低精度下性能显著下降(与 OpenVLA 报告的量化敏感性一致),认为当前 VLA 模型需要专门设计的量化方法才能在低精度下维持性能,论文未给出具体量化后的成功率数字。

评测 benchmark

以下数字均取自 arXiv v3(ICML 2025 camera-ready)正文与表格:

1) 真实机器人多任务学习(Table 1,5 个子任务,模型 ∖ 基线:Diffusion Policy / TinyVLA / Octo / OpenVLA-7B / DiVLA-2B)

  • In-Distribution 均值:DP 27.9% / TinyVLA 45.5% / Octo 24.3%(970K 预训练轨迹) / OpenVLA-7B 39.4%(970K) / DiVLA-2B 83.6%(仅 39K 预训练轨迹)。
  • Visual Generalization 均值(干扰物/背景/光照变化):DP 8.9% / TinyVLA 28.9% / Octo 17.8% / OpenVLA-7B 26.7% / DiVLA-2B 57.8%

2) 工厂分拣(真实机器人,四难度设置):DiVLA 整体平均成功率 66.2%;难度最高的 cluttered-mixed 场景下 Diffusion Policy 骤降到 9.2%,DiVLA 仍维持约 60%。

3) 零样本拣选(102 个训练未见物体):DiVLA 63.7%,对比 Diffusion Policy 8.9%、Octo 19.6%、TinyVLA 23.5%、OpenVLA 28.4%。

4) 双臂清台(AgileX,Table Bussing)

  • 仅见过物体(Seen):Diffusion Policy 45.8% / OpenVLA 0% / DiVLA-2B 72.9%
  • 见过+未见混合(Mixed):Diffusion Policy 31.2% / OpenVLA 0% / DiVLA-2B 70.8%

5) 视角偏移泛化:DiVLA-2B 在工厂分拣任务下视角偏移测试中仍达 60% 成功率;OpenVLA 泛化很差(论文未给具体数字,仅定性描述)。

6) 遵循新颖指令(4 个训练/Droid 数据中均未出现的物体:西瓜、柠檬水、蓝色纸垃圾、红辣椒):

  • 单步指令(“Pick up the watermelon”):OpenVLA 2/3,DiVLA-2B 2/3,二者相当。
  • 多步顺序指令(如”先捡西瓜、再捡蓝纸垃圾、最后捡柠檬水”):OpenVLA 在三个多步任务上全部 0/3,DiVLA-2B 分别拿到 2/3、1/3、1/3——说明 DiVLA 学到了把长指令拆解为子任务的能力,OpenVLA 则退化为随机选择物体。

7) 模型规模扩展(Table 10):Sorting 成功率 2B 66.2% → 7B 74.9%(+8.7pp)→ 72B 82.4%;Bin Picking 2B 63.7% → 7B 66.7%(+3.0pp)→ 72B 75.9%——规模越大、预训练数据越多,域内与域外泛化均单调提升。

8) VQA 定性测试(8.6 节):未经视觉问答数据协同训练,DiVLA 仍能回答”这是什么物体/什么颜色/描述这个场景”等问题(论文给出若干对错样例的定性表格,未报告整体准确率)。

创新点与影响

  • 核心贡献:提出 reasoning injection 模块——用 FiLM 把自回归推理的隐层信号一次性注入扩散动作头,而非像 ECoT 那样递归地把推理文本重新喂回模型,从而在不增加推理阶段前向次数的前提下把”语言推理”和”连续动作解码”焊接进同一个端到端策略,消融实验证明去掉该模块多任务成功率从 83.6% 跌到 50.3%。
  • 数据效率:仅用 Droid(39K 条量级)预训练 + 数百条真实轨迹微调,就在多个真实机器人任务上超过预训练数据量 25 倍于己的 Octo / OpenVLA(970K 轨迹,OXE),说明推理注入带来的泛化收益比单纯堆预训练数据更有效。
  • 推理速度:结合 vLLM 部署,DiVLA-2B 单卡 A6000 上跑到 82 Hz,DiVLA-7B 42 Hz,比同规模 OpenVLA(5 Hz)快 8 倍,是少数在真实机器人上验证了”扩散头+自回归推理”组合仍可满足高频闭环控制的工作。
  • 可扩展性:提供 2B/7B/72B 三档模型,是当时少数系统性验证 VLA 模型规模扩展(scaling law)对分拣、拣选任务均带来单调提升的工作之一。
  • 可解释性:因为推理以自然语言短语呈现,可以在失败时直接读出模型”以为在抓什么”,论文给出了”手动把六角扳手塞进夹爪、模型推理短语从’抓玩具车’实时切换为’抓六角扳手‘“的具体案例,用于诊断策略失败原因。
  • 论文自陈的局限:(1) 8-bit/4-bit 量化下性能显著退化,缺乏针对 VLA 的专用量化方案;(2) 主动放弃了 action chunking(虽然能提速,但会损害泛化,是一个未解决的速度-泛化权衡);(3) 预训练阶段的推理标注依赖 GPT-4o 自动生成,标注质量/噪声未做单独评估;(4) 全部评测在真实机器人上完成,没有报告标准仿真基准(如 SimplerEnv/LIBERO)结果,跨论文可比性受限;(5) DiVLA 本身未开源独立代码库/权重,训练脚本挂在后续工作 DexVLA 的仓库下。

原始链接

一手源存档(sources/)