一句话定位
Dita 是一个 334M 参数的通用 VLA 策略,核心思路是把去噪动作 token 直接塞进因果 Transformer 的输入序列、与历史图像 patch token 和语言 token”上下文内条件化”(in-context conditioning)一起自注意力,而不是像 octo 那样把动作去噪甩给一个挂在单一融合 embedding 后面的浅层 MLP/DiT 扩散头;这个改动让它在 SimplerEnv、libero、calvin、ManiSkill2 四个仿真基准上普遍超过同规模基线,并能仅用单个第三人称相机、10-shot 微调就迁移到真实 Franka 机械臂的长程任务。
背景与定位
范式:扩散 Transformer(DiT)+ 上下文内条件化的通用操作 VLA,属于”用去噪生成动作”这一支(diffusion-policy 开创的单任务扩散策略路线),但把它推广到跨本体大规模预训练场景。作者点名的直接对比对象是两类现有通用 VLA:一类是 openvla、rt-1、rt-2 代表的离散化动作 token(自回归预测 bin 索引)路线;另一类是 octo 代表的”扩散动作头”路线——用一个 3 层 MLP 或小型 DiT,条件化于因果 Transformer 输出的单个融合 embedding 上去噪动作。论文认为后者的浅层交叉注意力/融合网络限制了模型区分历史观测中细微变化(如动作增量、环境扰动)的能力。
Dita 的方案:保留 rt-1/rt-2/octo/openvla 一路验证过的 Transformer 可扩展性,但把噪声动作 token 当作序列的一部分,和图像 patch、语言 token 一起过同一个因果 Transformer,让去噪直接条件化在原始视觉 token 上。同期的另一条扩散 VLA 路线(rdt-1b、cogact 等)用跨注意力 Transformer 或独立 DiT 解码器处理双臂/多任务场景,Dita 则坚持单相机、轻量级设计,作为”干净、可复现的开源基线”。论文预训练数据用 OXE,基准覆盖 SimplerEnv、libero、calvin、ManiSkill2(2024 版重渲染),真机复现对比对象是 octo 与 openvla。仓库同时被后续工作 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-5;batch 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 预训练权重直接评测):
| 任务 | Dita | RT-1-X | Octo-Base | OpenVLA-7B |
|---|---|---|---|---|
| coke_can / match | 83.7% | 56.7% | 17.0% | 16.3% |
| coke_can / variant | 85.5% | 49.0% | 0.6% | 54.5% |
| move_near / match | 76.0% | 31.7% | 4.2% | 46.2% |
| move_near / variant | 73.0% | 32.3% | 3.1% | 47.7% |
| drawer / match | 46.3% | 59.7% | 22.7% | 35.6% |
| drawer / variant | 37.5% | 29.4% | 1.1% | 17.7% |
LIBERO(微调后):
| 方法 | SPATIAL | OBJECT | GOAL | LONG | 平均 |
|---|---|---|---|---|---|
| Diffusion Policy* | 78.3% | 92.5% | 68.3% | 50.5% | 72.4% |
| Octo | 78.9% | 85.7% | 84.6% | 51.1% | 75.1% |
| OpenVLA | 84.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 条指令成功率与平均链长):
| 方法 | 输入 | 1 | 2 | 3 | 4 | 5 | 平均链长 |
|---|---|---|---|---|---|---|---|
| RoboFlamingo | S-RGB,G-RGB | 82.4% | 61.9% | 46.6% | 33.1% | 23.5% | 2.47 |
| SuSIE | S-RGB | 87.0% | 69.0% | 49.0% | 38.0% | 26.0% | 2.69 |
| GR-1 | S-RGB,G-RGB,P | 85.4% | 71.2% | 59.6% | 49.7% | 40.1% | 3.06 |
| 3D Diffuser Actor | S-RGBD,G-RGBD,P,Cam | 92.2% | 78.7% | 63.9% | 51.2% | 41.2% | 3.27 |
| GR-MG | S-RGBD,G-RGBD,P | 96.8% | 89.3% | 81.5% | 72.7% | 64.4% | 4.04 |
| GHIL-Glue | S-RGB | 95.2% | 88.5% | 73.2% | 62.5% | 49.8% | 3.69 |
| ε_θ^Diff(扩散头基线,w/o 预训练) | S-RGB | 75.5% | 44.8% | 25.0% | 15.0% | 7.5% | 1.68 |
| ε_θ^Diff(扩散头基线) | S-RGB | 94.3% | 77.5% | 62.0% | 48.3% | 34.0% | 3.16 |
| Dita w/o 预训练 | S-RGB | 89.5% | 63.3% | 39.8% | 27.3% | 18.5% | 2.38 |
| Dita | S-RGB | 94.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 预训练):
| 方法 | 平均 | PickCube | StackCube | PickSingleYCB | PickClutterYCB | EGAD |
|---|---|---|---|---|---|---|
| ε_θ^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 旋转任务(倒水/倒咖啡豆)、长程多步任务上明显优于 octo、openvla 与自建的扩散头基线,后者常见失败模式为抓取位置错误、举升后卡死。全量微调下极端环境变化成功率 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,论文没有进一步探讨如何吸收无标注示教数据。
原始链接
- arXiv: https://arxiv.org/abs/2503.19757 (PDF: https://arxiv.org/pdf/2503.19757)
- GitHub: https://github.com/RoboDita/Dita
- 项目主页: https://robodita.github.io/
- 早期预印本: https://arxiv.org/abs/2410.15959
一手源存档(sources/)
- dita—github-readme — GitHub README 快照(训练脚本、GPU 配置、checkpoint 列表、benchmark 复述表)
- dita—project-page — 项目主页快照(作者信息、摘要、真机/仿真演示视频清单)
- arXiv 原文 PDF/HTML(2503.19757)——不入 git,见上方原始链接