一句话定位
CogACT 把 VLA 拆成”认知”与”动作”两个组件:冻结不了的 Prismatic-7B VLM(DINOv2+SigLIP 视觉 + Llama-2 语言)只负责输出一个”认知 token”特征,真正生成动作的是一个专门的扩散 Transformer(DiT)动作模块,条件化在该认知特征上;配合作者提出的自适应动作集成(Adaptive Action Ensemble),在 Open X-Embodiment 上预训练后,SIMPLER 仿真与 Realman/Franka 真实机器人上均以 7.6B 参数大幅超过同规模的 openvla(7B)与更大的 RT-2-X(55B)。
背景与定位
范式:组件化 VLA + 扩散动作 Transformer,是继”自回归离散动作 token”(rt-2、openvla)与”小型扩散头”(octo 的 3M 参数 diffusion head)之后的第三条路线。作者的核心论点:VLM 的认知能力(视觉-语言理解、语义泛化)与动作预测所需的能力(连续、多模态、时序相关、需要高精度)本质上不同,不应该像 RT-2/OpenVLA 那样直接把动作硬塞进 VLM 的 next-token 预测框架,也不该像 Octo 那样只用一个参数量很小的 diffusion head “拼接”到冻结的视觉/语言编码器上。CogACT 的做法是保留强 VLM 作为”认知”来源,但给动作单独配一个可扩展、可独立研究扩展规律的专用模块(论文类比人脑视觉皮层/语言皮层与运动皮层的分工)。
CogACT 的视觉-语言底座与 openvla 同源(都基于 Prismatic-7B:DINOv2+SigLIP 视觉编码器 + Llama-2 7B),训练时直接从 OpenVLA 发布的 openvla-7b-prismatic 权重初始化以提升效率——因此可以看作是”把 OpenVLA 的离散动作头换成扩散 Transformer 动作模块”的直接对照实验。评测都在 simpler-env 仿真环境和真实 Realman / Franka 机械臂上进行,对比对象覆盖 RT-1、RT-1-X、RT-2-X、octo、openvla。与同期”大动作模型”路线(如把扩散 Transformer 独立训练到 1B 而不接 VLM 的工作)相比,CogACT 强调必须保留 VLM 的 Internet 规模预训练才能获得泛化能力。
模型架构
三段式组件化架构(vision module → language module → diffusion action module):
- 视觉模块:DINOv2 + SigLIP 两个预训练 ViT 并行编码当前帧图像,特征沿 channel 维拼接后过线性投影,序列化为 256 个视觉感知 token(默认长度)。
- 语言模块:Llama-2 作为骨干,把语言指令 token、视觉 token 与一个额外可学习的认知 token(cognition token)
c拼接,用因果注意力处理;取出认知 token 对应的输出特征f_t^c作为下游动作模块的条件——这是整个架构与 OpenVLA/RT-2(直接用末尾 token 位置回归/离散化动作)最本质的区别:VLM 只需产出一个浓缩的条件向量,不直接吐动作。 - 动作模块 = 扩散 Transformer(DiT):以认知特征
f_t^c为条件,配合带时间步i(正弦位置编码,加到认知特征上)的噪声动作序列作为输入 token,通过多步去噪预测未来动作序列。预测当前 + 未来 15 步(N=15,默认),动作模块的 context 长度为N+2=17。DiT 有三档规模:DiT-Small(13M)、DiT-Base(89M,默认)、DiT-Large(308M),论文特别强调 300M 相对 7B VLM 是”小”的,但相对 7 维动作空间而言已经是”大”的动作模型。 - 动作空间:7 自由度末端执行器增量
[Δx, Δy, Δz, Δφ, Δθ, Δψ, g](g为夹爪开合二值),单臂、单第三人称相机视角。 - 模型总参数:Prismatic VLM ~7.5B + DiT-Base 89M ≈ 7.6B(论文原文口径,用于与 55B 的 RT-2-X 对比)。
- 推理侧超参:默认 classifier-free guidance(CFG)scale = 1.5(1.0–3.0 均可用,1.5 为默认取舍点),DDIM 采样 10 步。
- Adaptive Action Ensemble(AAE):推理时用最近
K步历史观测对当前时刻的动作预测做加权融合,权重w_k^ada = exp(α · <a_t|o_t, a_t|o_{t-k}>)由预测间余弦相似度决定(α=0.1),从而避免像 ACT 的 Temporal Ensemble 那样对不同”动作模态”的历史预测做无差别平均。K依机器人运动速度/观测频率的动作标准差反比设定:Google Robot(RT-1 数据)K=2,WidowX(BridgeDataV2)K=7。
数据
- 预训练规模:25 个 Open X-Embodiment(OXE)子数据集,合计 0.4M 条机器人轨迹、22.5M 帧(与 octo、openvla 使用同一子集口径)。
- 筛选:只保留单臂末端执行器控制 + 至少一个第三人称相机视角的数据集(沿用 Octo/OpenVLA 筛选标准),且不使用 Language Table 与 droid(理由是二者与其余数据分布差异过大)——这一点与 OpenVLA(曾以 10% 权重尝试并入 DROID、训练后期又移除)不同,CogACT 从一开始就排除。
- 数据混合配比(Table I,节选,按占比降序):Fractal 27.1%、Bridge 15.3%、Kuka 14.7%、BC-Z 8.6%、Stanford Hydra 5.1%、Taco Play 3.4%、Roboturk 2.7%、UTAustin Mutex 2.6%、Austin Sailor 2.5%、FMB 2.4%、Toto 2.3%、Furniture Bench 2.8%、Austin Sirius 2.0%、DobbE 1.6%、Berkeley Autolab UR5 1.4%、IAMLab CMU Pickup Insert 1.0%、NYU Franka Play 1.0%、Berkeley Fanuc 0.9%、Viola 1.1%、Jaco Play 0.6%、Berkeley Cable Routing 0.3%、Austin Buds/CMU Stretch 各 0.2%、UCSD Kitchen/DLR EDAN 各 <0.1%。
- 真机微调数据:Realman 机械臂——“Pick”(48 条)、“Stack”(67 条)、“Place”(79 条)+ 其他任务 197 条,合计 391 条演示(其中部分评测任务如”把香蕉放黄色盘子”仅有 2 条同款演示,考验小样本泛化)。Franka 机械臂——4 个任务各采集 100 条,合计 400 条。
- 采集方式:Meta Quest 2 触控手柄遥操作,Realman 记录 30Hz,Franka 记录 5~6Hz;图像裁剪缩放到 224×224,旋转量转 Euler 角,Realman 数据训练时随机降采样到 5Hz(帧间隔 0.2s)。
- 增强与归一化:随机裁剪/亮度/对比度/饱和度/色相增强;超出演示长度的未来动作用静止动作填充;动作归一化到 [-1, 1](论文提到也试过归一化到高斯分布 N(0,1),未见提升)。
- 底座 VLM 的预训练数据(继承自 Prismatic,非 CogACT 自采):DINOv2 用 12 亿图像、SigLIP 用 400 亿图文对预训练,Llama-2 预训练 2 万亿 token,外加 120 万条多模态指令微调样本。
- 纯真实机器人数据,不含仿真数据做预训练。
训练方法
- 训练目标:标准扩散模型的 MSE 噪声预测损失
L_MSE = E[||ε̂ - ε||²],即预测噪声与真实高斯噪声之间的均方误差,视觉/语言/动作三模块端到端联合训练。 - 初始化:从 openvla 发布的
openvla-7b-prismatic检查点初始化视觉+语言模块(也可直接从 Prismatic VLM 初始化,收敛更慢)。 - 优化超参:batch size 256,恒定学习率 2e-5,训练 135K+ 迭代,每个训练样本按 8 个扩散时间步重复采样计算损失(论文 Implementation Details 原话”8 diffusion steps per sample”,GitHub 训练脚本中对应
--repeated_diffusion_steps 8,用于降低扩散损失估计的方差)。 - 多步动作预测:训练时同时监督当前步 + 未来 N 步噪声预测,消融显示
N=15最优(见评测部分)。 - 推理侧:CFG(classifier-free guidance,默认 1.5)+ DDIM 采样(10 步)+ Adaptive Action Ensemble 联合使用。
- 下游微调:GitHub 仓库建议全量微调(full fine-tuning)优于 LoRA,约 30 epoch 即可取得良好效果,训练脚本(全量微调与从零训练共用)同样设置
--repeated_diffusion_steps 8、--future_action_window_size 15、--action_model_type DiT-B,单节点 8×A100 示例配置。
Infra(训练 / 推理工程)
- 预训练:16 张 NVIDIA A100,约 5 天,PyTorch Fully Sharded Data Parallel(FSDP)。
- 下游微调(GitHub 示例):单节点 8 张 A100,
torchrun --nproc-per-node 8,global batch 256(per-device 32)。 - 精度:训练用 FSDP 默认精度;推理可选 bf16(
model.vlm.to(torch.bfloat16)),fp32 加载约需 30GB 显存。 - 推理延迟/频率(单张 A6000 GPU,bf16,CogACT-Base,连续调用 100 次取平均):181ms/次,配合 Adaptive Action Ensemble 的动作生成频率约 5.5Hz;若用 action chunking 一次输出 k 个动作(k 最多 16),频率线性提升为 k 倍,但开环预测步数越长精度越降。
- 对比 openvla(同硬件、同精度):OpenVLA 推理 307ms/次,且每次推理只能生成 1 个动作(离散 token 需逐维自回归生成 7 个);CogACT 每次推理生成 16 步动作——这是”单认知 token 条件化 DiT 一次性出整段动作序列”相对”7 个动作 token 逐个自回归解码”的直接工程收益。
评测 benchmark
SIMPLER 仿真 - Google Robot(Table 1,四任务:Pick Coke Can / Move Near / Open-Close Drawer / Open Top Drawer & Place Apple):
| 方法 | 参数量 | Visual Matching 平均 | Variant Aggregation 平均 |
|---|---|---|---|
| RT-1 | — | 52.4 | 43.7 |
| RT-1-X | 35M | 42.4 | 30.2 |
| RT-2-X | 55B | 46.3 | 54.4 |
| Octo-Base | 93M | 11.0 | 1.2 |
| OpenVLA | 7B | 34.3 | 39.3 |
| CogACT(本作) | 7.6B | 74.8 | 61.3 |
CogACT 在 Google Robot VM 单项上比同规模 OpenVLA(7B)高 40.5 个百分点。论文摘要给出的是跨设置汇总口径:相比 OpenVLA,在模拟评测(GR-VM + GR-VA + WR-VM 三项均值)上高出约 36.5 个百分点(摘要表述”over 35%”),在真实机器人实验(Realman + Franka 均值)上高出约 56.9 个百分点(摘要表述”55%”);相比 55B 的 RT-2-X,在 Google Robot 的 VM+VA 均值上高出约 17.7 个绝对百分点(摘要表述”18%“,注意 RT-2-X 未报告 WidowX 结果,故该项对比只含 Google Robot)。
SIMPLER 仿真 - WidowX Robot(Table 2,Visual Matching,四任务:Put Spoon on Towel / Put Carrot on Plate / Stack Green on Yellow Block / Put Eggplant in Basket):CogACT 平均 51.3%,对比 RT-1-X 1.1%、Octo-Base 17.5%、Octo-Small 26.7%、OpenVLA 4.2%。
真实 Realman 机械臂(Table 3,Pick/Stack/Place 三任务,预训练+微调 391 条演示后):CogACT 总平均 71.2%,对比 Octo-Base 4.9%、OpenVLA 12.1%(超 OpenVLA 59.1 个百分点)。
- 泛化测试(未见桌面+未见干扰物,Table 4):CogACT 58.4% vs OpenVLA 9.7%。
- 泛化测试(未见颜色/形状/类别,Table 5):CogACT 64.6% vs OpenVLA 6.3%。
真实 Franka 机械臂(Table 6,Close/Open Oven、Pick Bowl、Pick Brush 四任务,微调 400 条演示):CogACT 平均 61.4%,对比 Octo-Base 5.8%、OpenVLA 6.8%。
消融研究(均在 SIMPLER 上做,GR=Google Robot VM/VA,WR=WidowX VM,取三者平均):
| 消融维度 | 设置 | 平均成功率 |
|---|---|---|
| 动作模型架构(Table 7) | MLP-3层(3M) | 50.6 |
| MLP-7层(89M) | 52.5 | |
| DiT-Small(13M) | 58.5 | |
| DiT-Base(89M,默认) | 62.5 | |
| DiT-Large(308M) | 64.8(最优) | |
| 未来步数 N(Table 8) | N=0(无多步) | 42.8 |
| N=3 | 55.5 | |
| N=15(默认) | 62.5(最优) | |
| N=31 | 51.2(过长反而下降) | |
| 动作集成策略(Table 9) | Action Chunking | 50.7 |
| Temporal Ensemble | 58.9 | |
| Adaptive Ensemble(本作) | 62.5(最优) | |
| CFG scale(Table IV) | 1.0 | 55.7 |
| 1.5(默认) | 62.5 | |
| 3.0 | 62.7(与 1.5 相近) |
关键结论:DiT 结构在同参数量下显著优于 MLP;动作模块的平均成功率与其参数量对数近似线性关系,呈现良好扩展规律;未来动作步数并非越多越好(N=31 反而下降,推测过长的开环预测降低精度);Adaptive Ensemble 优于 ACT 提出的两种基线集成策略。
创新点与影响
贡献:
- 首次把扩散生成过程系统性地整合进大规模 VLA 模型,提出组件化架构(认知/动作分离,VLM 只出一个条件 token,动作模块专职生成),区别于 RT-2/OpenVLA 的离散 token 自回归路线与 Octo 的小型 diffusion head 路线。
- 系统研究了动作模块的骨干选型与规模效应,发现 DiT 相比 MLP 有结构性优势,且动作模块参数量与成功率呈对数线性的良好扩展规律——仅增加几百 M 参数(相对 7B VLM 很小)即可带来显著性能提升,提示了一条比”整体放大 VLM”更高效的 VLA 扩展路径。
- 提出 Adaptive Action Ensemble,用预测间余弦相似度自适应加权融合历史动作预测,是一个可独立复用于其他 VLA/策略模型的推理时技巧。
- 实证上,以 7.6B 参数在 SIMPLER 与真实 Realman/Franka 机械臂上大幅超过同规模 OpenVLA(7B)与更大的闭源 RT-2-X(55B),并因为”单 token 条件化、一次性出整段动作序列”的设计,推理延迟低于同硬件下的 OpenVLA(181ms vs 307ms),且单次推理产出的动作步数更多(16 vs 1)。
论文表述的边界(原文未设独立 Limitations 小节,以下是论文正文/消融中明确写出的约束,而非编者外推):训练数据限定为单臂末端执行器控制 + 至少一个第三人称相机的 OXE 子集,不含双臂/移动底盘等动作空间;动作模块虽有良好扩展规律,但消融显示未来预测步数并非越大越好(N=31 相比 N=15 掉点),说明多步预测存在最优窗口而非单调收益;仿真与真实评测的机器人本体(Google Robot、WidowX、Realman、Franka)均为单臂夹爪,未测试更复杂末端执行器或移动操作场景。
原始链接
- arXiv 论文:https://arxiv.org/abs/2411.19650
- PDF:https://arxiv.org/pdf/2411.19650
- 项目页 & 视频:https://cogact.github.io/
- GitHub(训练/微调/部署代码):https://github.com/microsoft/CogACT
- HuggingFace 模型(CogACT-Small / CogACT-Base / CogACT-Large):https://huggingface.co/CogACT
一手源存档(sources/)
- cogact—github-readme — GitHub README(安装、推理示例、全量微调/从零训练脚本、SIMPLER 评测接入、真实部署 server/client、推理速度对比表),https://github.com/microsoft/CogACT
- cogact—hf-card — HuggingFace 模型卡(CogACT-Base),https://huggingface.co/CogACT/CogACT-Base
- cogact—project-page — 项目主页文本快照(架构图说明、视频样例描述、评测结果图表说明),https://cogact.github.io/
- arXiv 全文 PDF(2411.19650,arXiv 原文 PDF,不入 git):https://arxiv.org/pdf/2411.19650