一句话定位

Dita 是一个 334M 参数的通用 VLA 策略,核心思路是把去噪动作 token 直接塞进因果 Transformer 的输入序列、与历史图像 patch token 和语言 token”上下文内条件化”(in-context conditioning)一起自注意力,而不是像 octo 那样把动作去噪甩给一个挂在单一融合 embedding 后面的浅层 MLP/DiT 扩散头;这个改动让它在 SimplerEnvliberocalvin、ManiSkill2 四个仿真基准上普遍超过同规模基线,并能仅用单个第三人称相机、10-shot 微调就迁移到真实 Franka 机械臂的长程任务。

背景与定位

范式:扩散 Transformer(DiT)+ 上下文内条件化的通用操作 VLA,属于”用去噪生成动作”这一支(diffusion-policy 开创的单任务扩散策略路线),但把它推广到跨本体大规模预训练场景。作者点名的直接对比对象是两类现有通用 VLA:一类是 openvlart-1rt-2 代表的离散化动作 token(自回归预测 bin 索引)路线;另一类是 octo 代表的”扩散动作头”路线——用一个 3 层 MLP 或小型 DiT,条件化于因果 Transformer 输出的单个融合 embedding 上去噪动作。论文认为后者的浅层交叉注意力/融合网络限制了模型区分历史观测中细微变化(如动作增量、环境扰动)的能力。

Dita 的方案:保留 rt-1/rt-2/octo/openvla 一路验证过的 Transformer 可扩展性,但把噪声动作 token 当作序列的一部分,和图像 patch、语言 token 一起过同一个因果 Transformer,让去噪直接条件化在原始视觉 token 上。同期的另一条扩散 VLA 路线(rdt-1bcogact 等)用跨注意力 Transformer 或独立 DiT 解码器处理双臂/多任务场景,Dita 则坚持单相机、轻量级设计,作为”干净、可复现的开源基线”。论文预训练数据用 OXE,基准覆盖 SimplerEnvliberocalvin、ManiSkill2(2024 版重渲染),真机复现对比对象是 octoopenvla。仓库同时被后续工作 OC-VLA(arXiv 2508.13103,“Grounding actions in camera space”)复用来做以相机坐标系为中心的动作对齐研究,可见其代码库定位为社区可复用基线。论文有一版更早的预印本 arXiv:2410.15959(2024-10),当前 2503.19757 是扩展/修订版。

模型架构

Policy backbone:LLaMA2 风格因果 Transformer,从零训练,12 层自注意力 block,hidden size 768,属于自研规模(并非直接复用某个开源 LLM/VLM 权重)。

视觉编码:输入图像 resize 到 224×224,经预训练 DINOv2 抽取 patch 特征;DINOv2 参数与主干联合端到端微调(因为 DINOv2 训练自 web 数据、和机器人数据有域差)。为控制计算量,引入一个深度 4、从零训练的 Q-Former,把 DINOv2 patch 特征压缩到长度 32 的 token 序列;Q-Former 每个 block 内用 FiLM 把语言 token 作为条件注入,实现按指令内容选择性抽取视觉信息。

语言编码:冻结的 CLIP 文本编码器做指令 tokenization(是模型里唯一不参与训练的组件)。

动作表示与 ACTION-conditioning:末端执行器动作是 7 维向量(3 平移 + 3 旋转 + 1 夹爪开合),为了和图像/语言 token 对齐维度,把 7 维动作向量补零填充到 token 维度;扩散噪声只加在这 7 维实际动作分量上。核心设计是上下文内条件化(in-context conditioning):把语言 token、图像特征、时间步(timestep)embedding 拼在序列开头,噪声动作 token 紧随其后,整体喂给同一个因果 Transformer 联合自注意力——即直接对动作 token 块(chunk)去噪,而不是逐个动作 token 或依赖单独挂载的扩散头。训练目标是标准 DDPM 噪声预测 MSE loss;推理用 DDIM 加速。

观测/预测窗口:预训练用 2 帧历史图像观测,预测 16 个动作 token 组成的 chunk(消融显示 2 帧观测 + 长 trajectory 是较优组合,3 帧观测反而因 token 数增多、收敛变难而掉点,见”评测”节 Table 5)。

参数量:模型总计 334M 参数,其中 221M 可训练(CLIP 文本编码器冻结,其余含 DINOv2、Q-Former、因果 Transformer 均训练)。

跨本体(cross-embodiment):不额外设计本体 embedding 或动作空间路由,直接靠预训练时混合的 OXE 跨本体轨迹让同一套权重学习不同机器人/相机视角/动作空间;论文强调这套”扩展扩散去噪器规模 + 与 Transformer 可扩展性协同”的组合是应对跨本体多样性的关键。仅用第三人称相机输入,不依赖腕部相机、深度或本体状态(proprioception)——作者说明架构本身可以灵活接入这些额外模态,但主实验刻意不用,以证明单目第三人称视角也能达到有竞争力的效果。

数据

  • 预训练Open X-Embodiment (OXE) 数据集,沿用 octo/openvla 的数据集筛选与采样权重方案(GitHub 训练脚本对应 dataname=oxe_magic_soup_plus),动作按 OXE 论文方式归一化和过滤。TensorFlow Dataset 的 shuffle buffer size 从 128,000 提到 256,000,SimplerEnv coke_can 成功率从 71.2%/73.6%(match/variant)提升到 83.7%/85.5%——说明数据混洗深度对跨数据集训练影响显著。
  • ManiSkill2 相机视角泛化基准(自建):从 ManiSkill2 选 5 个任务族(PickCube-v0、StackCube-v0、PickSingleYCB-v0、PickClutterYCB-v0、PickSingleEGAD-v0),构建 30 万随机相机位姿池,每条轨迹采样 20 个相机渲染,共生成 超过 4 万条轨迹;训练/验证按 19:1 切分,确保任务族与相机视角均不泄漏;为平衡任务族样本量对少数样本任务族做轨迹复制;评测集从验证集每任务族抽 100 条,共 500 条闭环评测轨迹。这是 Dita 从零训练(不加载 OXE 预训练)专门验证陌生相机视角泛化能力的数据。
  • LIBERO:采用 openvla 修改版数据(四个子集 SPATIAL/OBJECT/GOAL/100,其中 100 再分 90+10,10 即 LIBERO-LONG)。
  • CALVIN (ABC→D):仅用静态 RGB 相机观测;论文强调 仅 1% 的 CALVIN 轨迹带文本标注,其余为无结构 play data(未训练任务专用信息),Dita 没有使用这部分 play data(区别于用了 play data 的 GR-MG 基线)。
  • 真机 10-shot:每个任务仅 10 条采集样本,任务包括 pick&place(香蕉/猕猴桃)、倒水/倒咖啡豆、堆叠(3 只碗/3 层俄罗斯套娃)、pick&insert(笔筒)、开合抽屉,以及若干 3 步以上长程组合任务。变量鲁棒性测试额外引入背景(桌布颜色/黑色背景布)、非目标物体杂乱摆放、光照(关闭一盏灯)三类扰动,复用同一批 10-shot 数据训练的模型直接评测,不额外采数据。

训练方法

预训练:DDPM 目标,T_train = 1000 步扩散时间步;推理用 DDIM,T_eval = 20 步加速采样。AdamW 优化器,100,000 步,causal Transformer/Q-Former 的学习率为 1e-4,DINOv2 为 1e-5batch size 8192,分布在 32 张 NVIDIA A100 上(每卡 256 样本)。

LIBERO 微调:AdamW 100,000 步,SPATIAL/OBJECT/GOAL 学习率 1e-4,LONG 用 5e-4,均配 half-cycle cosine 学习率衰减;去噪时间步微调阶段设为 100;batch size 512,8 张 A100

CALVIN 微调:每次迭代预测 10 个未来动作 chunk(MSE 监督);AdamW + half-cycle cosine + warmup,学习率 1e-4 初始化,训练 15 epoch,batch size 128,4 张 A100;推理阶段 DDIM 10 步。消融显示加 lr 衰减比不加略好(avg len 3.61 vs 3.43)。

ManiSkill2(从零训练,不加载 OXE 预训练):AdamW 50,000 步,学习率 1e-4,去噪时间步 100,batch size 1024,16 张 A100。同时训练一个 RT-1 风格离散化基线(256-bin,记作 ε_θ^Disc)与一个扩散头基线(3 层 MLP,ε_θ^Diff)做对照。

真机 10-shot 微调:直接用 OXE 预训练权重,LoRA 微调(对齐 openvla 做法便于公平比较),AdamW 20,000 步,batch size 512,DDPM 时间步 100;图像增强用 torchvision ColorJitter(brightness 0.3,contrast/saturation 0.7-1.3,hue 0.07)。关键发现:LoRA 下 Dita 仅 5%(约 11M/221M)可训练参数,容量不足以吸收图像增强带来的分布偏移,导致对环境变化(背景/光照/物体摆放)鲁棒性差;换成全量微调后,极端变化下成功率达到 20%,而论文原文明确表述 LoRA 微调”fails to complete tasks under extreme variances”(未给出具体数字,但表明基本无法完成),长程任务成功率也显著提高。

关键消融(见”评测”节详列):观测帧数(2 帧最优)、trajectory 长度(越长越好,尤其复杂任务)、去噪步数(DDIM 10 步不掉点,2 步仍有 70.4% 成功率)、扩散头对比(in-context 设计优于 Unet1D/Transformer/3 层 MLP/8 层 MLP 头)、执行步数(单次推理执行越多步、精度越低)。

Infra(训练 / 推理工程)

  • 预训练:32 × NVIDIA A100(4 节点 × 8 卡,torchrun --nnodes=4 --nproc_per_node=8 验证于 GitHub 脚本),全局 batch 8192。
  • LIBERO 微调:8 × A100;CALVIN 微调:4 × A100;ManiSkill2 从零训练:16 × A100。
  • GPU-小时/总算力:未披露。
  • 并行策略细节(TP/PP/ZeRO 等):未披露,仅确认用 torchrun 做数据并行多机多卡。
  • 精度(fp16/bf16/fp32):未披露。
  • 真机推理部署:控制端 ROS 桌面机通过网络调用 1 张 NVIDIA A100 上的模型部署服务,闭环控制频率 3 Hz
  • 推理加速:DDIM 把去噪步数从 100 降到 20 步(SimplerEnv 零样本评测默认)乃至 2 步仍可用(Pick Coke variant 70.4% 成功率),论文认为动作维度远小于图像生成、扩散步数可以大幅压缩而不需要额外蒸馏/一致性技巧。
  • 边缘设备部署:未涉及,论文未讨论量化或边缘硬件适配。

评测 benchmark

SimplerEnv(Google Robot,零样本,OXE 预训练权重直接评测):

任务DitaRT-1-XOcto-BaseOpenVLA-7B
coke_can / match83.7%56.7%17.0%16.3%
coke_can / variant85.5%49.0%0.6%54.5%
move_near / match76.0%31.7%4.2%46.2%
move_near / variant73.0%32.3%3.1%47.7%
drawer / match46.3%59.7%22.7%35.6%
drawer / variant37.5%29.4%1.1%17.7%

LIBERO(微调后):

方法SPATIALOBJECTGOALLONG平均
Diffusion Policy*78.3%92.5%68.3%50.5%72.4%
Octo78.9%85.7%84.6%51.1%75.1%
OpenVLA84.9%88.4%79.2%53.7%76.5%
Dita(ours)84.2%96.3%85.4%63.8%82.4%

LIBERO-LONG 额外用 Droid 数据集(而非 OXE)预训练可达 77.9%(vs OXE 预训练 63.8%),作者认为这是因为 334M 容量不足以充分吸收整个 OXE 数据集的多样性。

CALVIN(ABC→D,1000 条任务链,连续 1-5 条指令成功率与平均链长):

方法输入12345平均链长
RoboFlamingoS-RGB,G-RGB82.4%61.9%46.6%33.1%23.5%2.47
SuSIES-RGB87.0%69.0%49.0%38.0%26.0%2.69
GR-1S-RGB,G-RGB,P85.4%71.2%59.6%49.7%40.1%3.06
3D Diffuser ActorS-RGBD,G-RGBD,P,Cam92.2%78.7%63.9%51.2%41.2%3.27
GR-MGS-RGBD,G-RGBD,P96.8%89.3%81.5%72.7%64.4%4.04
GHIL-GlueS-RGB95.2%88.5%73.2%62.5%49.8%3.69
ε_θ^Diff(扩散头基线,w/o 预训练)S-RGB75.5%44.8%25.0%15.0%7.5%1.68
ε_θ^Diff(扩散头基线)S-RGB94.3%77.5%62.0%48.3%34.0%3.16
Dita w/o 预训练S-RGB89.5%63.3%39.8%27.3%18.5%2.38
DitaS-RGB94.5%82.5%72.8%61.3%50.0%3.61

Dita 预训练带来 +1.23 平均链长提升;相同预训练权重下,in-context 设计比扩散头基线高 0.45(3.61 vs 3.16)。GR-MG 用了 play data 因而更高,GHIL-Glue 依赖额外微调的生成模型、模型量级显著更大。

ManiSkill2 相机视角泛化(从零训练,非 OXE 预训练):

方法平均PickCubeStackCubePickSingleYCBPickClutterYCBEGAD
ε_θ^Disc(RT-1 式 256-bin 离散化)30.2%41.0%33.0%22.0%1.0%54.0%
ε_θ^Diff(扩散头)58.6%86.0%76.0%37.0%24.0%70.0%
Dita(ours)65.8%79.0%80.0%62.0%36.0%72.0%

Dita 在 PickSingleYCB 上超扩散头基线 25 个百分点,PickClutterYCB 上超 12 个百分点。

去噪步数消融(SimplerEnv Pick Coke / Move Near):100/50/20/10/5/2 步下 Pick Coke(variant)成功率分别为 76.4/79.1/85.5/85.3/82.7/70.4%——仅 2 步仍达 70.4%,10 步左右达到峰值。

真机 10-shot:两步任务总体成功率 63.8%(第二阶段贡献接近一半);定性对比中 Dita 在复杂 3D 旋转任务(倒水/倒咖啡豆)、长程多步任务上明显优于 octoopenvla 与自建的扩散头基线,后者常见失败模式为抓取位置错误、举升后卡死。全量微调下极端环境变化成功率 20%,论文原文称 LoRA 微调”fails to complete tasks under extreme variances”(未给出具体数字)。

创新点与影响

  • 核心创新:把扩散去噪的条件信息从”融合后的单一 embedding”改为”原始历史图像 patch token 序列”,用同一个因果 Transformer 的自注意力直接建模动作-视觉的细粒度对齐,论文称之为 in-context conditioning。这被论文验证为优于 Octo 式扩散头(在 CALVIN 上 3.61 vs 3.16 平均链长)、优于离散化动作头(ManiSkill2 上 65.8% vs 30.2%)。
  • 规模与开源定位:334M 参数(221M 可训练)是明显小于 7B 级 OpenVLA 的”轻量、干净、开源基线”,论文强调这一体量下仍能拿到多数仿真基准的 SOTA 或有竞争力结果,并能仅用单目第三人称相机(无腕部相机/深度/本体状态)完成 10-shot 真机长程任务迁移。
  • 代码复用:开源仓库(MIT 协议)后续被 OC-VLA(arXiv 2508.13103)复用做以相机坐标系为中心的动作对齐研究,同一套 ManiSkill2 数据生成脚本、训练框架被直接沿用,说明其定位为社区可扩展基线是成立的。
  • 作者自陈局限:(1)334M 容量可能不足以充分吃透完整 OXE 数据集的多样性——LIBERO-LONG 换成规模更小但更聚焦的 Droid 预训练数据后成功率从 63.8% 跳到 77.9%,作者认为扩大模型规模应能进一步提升 OXE 预训练效果,但论文未做该项验证;(2)LoRA 微调容量(仅 5%/11M 可训练)不足以吸收图像增强,导致环境变化鲁棒性差,需要全量微调才能达到可用水平(全量 20% 成功率,论文原文称 LoRA “fails to complete tasks under extreme variances”),这也是一个未被充分解决的适配效率问题;(3)CALVIN 上不使用 play data 使其略逊于用了 play data 的 GR-MG,论文没有进一步探讨如何吸收无标注示教数据。

原始链接

一手源存档(sources/)

  • dita—github-readme — GitHub README 快照(训练脚本、GPU 配置、checkpoint 列表、benchmark 复述表)
  • dita—project-page — 项目主页快照(作者信息、摘要、真机/仿真演示视频清单)
  • arXiv 原文 PDF/HTML(2503.19757)——不入 git,见上方原始链接