技术博客
VLA论文解读

VLA-Adapter 详解(下):Bridge Attention 如何让 0.5B 骨干追平 7B VLA?

coffee co.2026-08-06 11:15
VLA-Adapter 详解(下):Bridge Attention 如何让 0.5B 骨干追平 7B VLA?

本文是 VLA-Adapter 系列解读的下篇。上篇已经说明:Raw features 与 ActionQuery 在不同层呈现不同规律,最优方案并不是简单二选一,而是让全层两类条件互补。本篇继续深入 Bridge Attention、L1 Policy、训练目标、消融、实验结果和方法局限。本文仍不涉及项目代码,代码实现留待后续单独讲解。

如果只用一句话概括 VLA-Adapter 的结构,它并不复杂:

用 ActionQuery 汇聚动作相关的多模态信息,用 Raw features 补充没有被查询 token 完整保留的细节,再通过 Bridge Attention 控制两者进入动作空间的方式和强度。

真正值得研究的是这句话中的三个动词:汇聚、补充、控制。它们分别对应 ActionQuery、Raw features 和可学习门控,也是 VLA-Adapter 能够使用 0.5B 骨干而不依赖机器人数据预训练的原因。

论文与补充结果见论文页面官方项目主页


一、先把 Policy 的输入说清楚

在时间步 t,VLA-Adapter 的 L1 Policy 接收四类输入:

Policy 输入:{Cₜᴿ, CₜᴬQ, Aₜ⁰, Pₜ}

其中:

  • Cₜᴿ:VLM 各层的 Raw features;

  • CₜᴬQ:VLM 各层的 ActionQuery features;

  • Aₜ⁰:长度为 H 的全零初始动作序列;

  • Pₜ:机器人 proprioception,即关节、夹爪等本体状态。

默认动作块长度 H = 8。全零动作先经过 LayerNorm 与 MLP,被映射成 Policy 的初始动作 latent。随后,它依次通过 24 层 Policy;每一层都与 VLM 对应层的条件发生交互。最后再经过 LayerNorm 和 MLP,一次输出未来 8 步动作。

这里有两个常被忽略的细节。

第一,Policy 的“24 层”不是又复制了一个 0.5B 语言模型。它采用更轻量的注意力与前馈结构,默认 Policy 约 97.3M 参数。层数对齐的目的,是让第 i 层动作 latent 能吸收第 i 层 VLM 表征,而不是复刻完整 VLM。

第二,Aₜ⁰ 全零并不表示模型“预测零动作”。它只是给固定长度的动作槽位提供初始载体,类似一排待填写的动作查询。动作内容由后续条件注意力逐层写入。

二、Bridge Attention:两次跨注意力,一次自注意力

每层 Bridge Attention 包含三个分支:

  1. Raw cross-attention:动作 latent 查询 Raw features;

  2. ActionQuery cross-attention:动作 latent 查询 ActionQuery 与本体状态;

  3. Action self-attention:动作槽位彼此交互,建模动作 chunk 内部的时序关系。

设第 τ 层的动作 latent 为 Ãₜ^τ。在第一条分支中,Raw features 经过 MLP 投影成 Key 和 Value,动作 latent 作为 Query:

CA₁(Ãₜ^τ, σ₁(Cₜᴿ))

这条分支回答的是:“根据 VLM 原始图文表征,当前 8 个动作槽位分别应该关注哪些视觉和语言证据?”

第二条分支先将 ActionQuery features 与本体状态 embedding 拼接,再投影成 Key 和 Value:

CA₂(Ãₜ^τ, σ₂[CₜᴬQ, σ₀(Pₜ)])

它回答的是:“已经由 ActionQuery 汇聚的任务信息,在机器人当前状态下应如何转化为动作?”把 proprioception 与 ActionQuery 放在同一路径很合理,因为同一条语言指令和同一个视觉目标,在不同关节状态下对应的瞬时控制量并不相同。

第三条分支是动作 latent 自注意力:

SA(Ãₜ^τ, Ãₜ^τ)

它不再查询 VLM,而是让 8 个动作位置彼此协调。动作 chunk 不是 8 个互不相关的控制点;前后动作需要连续、方向需要一致、夹爪闭合时机也需要与机械臂轨迹配合。自注意力承担的正是 chunk 内部建模。

三条分支的输出最终拼接:

Âₜ^τ = [CA₁ · tanh(g), CA₂, SA]

再通过残差 FFN,形成下一层动作 latent。逐层重复后,得到最终动作块。

三、最关键的一笔:为什么只有 Raw 分支乘 tanh(g)?

门控参数 g 从 0 初始化,并经过 tanh 限制在 [-1, 1]。训练开始时,tanh(0) = 0,Raw 分支相当于暂时关闭;随着训练进行,模型只在确实有帮助时逐渐打开它。

这不是一个纯粹为了“稳定训练”而添加的小技巧,而是由上篇的条件实验直接推导出来的结构选择:

  • ActionQuery 从头学习,本身就是动作导向的信息接口,可以完整注入;

  • Raw features 是为视觉—语言理解形成的通用表示,既有有用细节,也有与动作无关的语义和冗余,因此需要选择性注入。

值得注意的是,tanh(g) 不是常见的 [0, 1] sigmoid 门。它允许负值,所以理论上不只能“开大或关小”Raw 分支,还能对其贡献反向调制。这使“Ratio”更接近一个带符号的可学习缩放系数。

论文的注入强度消融非常有说服力:

Raw features 注入

ActionQuery 注入

LIBERO-Long 成功率

tanh(g)

1

95.0%

1

1

91.4%

1

tanh(g)

91.0%

tanh(g)

tanh(g)

92.6%

这张表支持两个结论:

  1. Raw features 全量注入会伤害性能,说明通用 VLM 表征不能不加选择地灌入 Policy;

  2. ActionQuery 被门控后也会掉点,说明它聚合的信息应当充分提供给动作生成器。

官方主页把它归纳为关键发现 6:ActionQuery 可以全量注入,Raw features 需要受控注入。

从架构设计方法论看,这比“用了 cross-attention”更重要。Cross-attention、查询 token、零初始化门控都不是第一次出现;VLA-Adapter 的创新性主要来自先用统一实验找出条件规律,再把规律固化成一套有非对称信息流的 Bridge Attention。

四、为什么是 64 个 ActionQuery?

ActionQuery 数量决定了从 VLM 向 Policy 传递信息的接口容量。过少时,少量 token 必须同时压缩物体、空间关系、任务阶段等多种信息;过多时,token 之间会产生冗余,注意力资源被稀释,训练也更困难。

论文测试了 1、4、8、16、64、128、256 和 512 个 ActionQuery。仅使用最后一层 ActionQuery 时,性能随数量增加先上升后下降;完整 VLA-Adapter 在 64 个查询时达到 95.0%,在 256 个查询时为 93.0%。因此默认选择 64。

这对应官方主页的关键发现 5:

  • Query 太少,多模态信息聚合不足;

  • Query 太多,引入冗余并干扰性能;

  • 64 在该模型和基准上取得性能与效率的平衡。

需要强调,“64”是实验得到的默认值,不应被理解成跨机器人、跨骨干都成立的理论常数。换成长视频输入、双臂高维动作或更长任务上下文后,最优接口容量可能改变。更可迁移的结论是:ActionQuery 数量是桥接带宽,而不是无关紧要的超参数。

五、为什么最终使用 L1 Policy,而不是扩散或 Flow Matching?

VLA-Adapter 主要采用直接回归式 L1 Policy。给定真值动作轨迹 Aₜ,模型最小化预测动作与真值之间的 L1 距离:

minθ E[‖πθ(Aₜ^τ, Cₜᴿ, CₜᴬQ, σ₀(Pₜ), τ) − Aₜ‖₁]

直观来说,模型直接学习“在当前视觉、指令和本体状态下,这 8 步动作应该是什么”。它不需要从高斯噪声多步去噪,也不需要在推理时进行多次采样,因此速度更快。

论文附录还实现了 DiT-based Policy:从带噪动作开始,用 AdaLN-Zero、条件注意力和扩散目标预测噪声。但在 LIBERO-Long 上:

Policy

平均成功率

L1-based

95.0%

DiT-based

91.6%

作者据此选择 L1 Policy,并引用 OpenVLA-OFT 的观察:扩散式策略可能更适合大规模预训练,而在具体任务微调中,动作分布冗余较小,直接回归反而更有效、更快。

这里可以再做一步理解。扩散或 Flow Matching 的优势通常是描述多峰动作分布:同一场景可能存在多条合理轨迹。但 LIBERO 的示范和任务往往提供较明确的操作路径,动作块又只有 8 步,局部未来的多模态性没有长时规划那么强。此时,L1 的简单性成为优势。反过来,如果面对高度多模态的双臂操作、灵巧手或人类示范风格差异,L1 是否仍占优,不能仅凭本文实验推断。

六、训练配置:0.5B、97M 和 197.2M 不要混为一谈

论文默认配置如下:

项目

默认值

VLM 语言骨干

Qwen2.5-0.5B

VLM / Policy 层数

24

ActionQuery 数量

64

Policy hidden size

896

注意力头数

8

动作块长度 H

8

Policy 参数量

97.3M

VLA-Adapter 总可训练参数

197.2M

batch size

16

最大训练步数

150,000

学习率

10⁻⁴

warmup

总步数的 10%

优化器为 AdamW,学习率使用带 warmup 的 cosine annealing;VLM 采用 LoRA 微调,Policy 与 ActionQuery 从头训练。

这里必须区分三种“大小”:

  1. 0.5B 指默认语言骨干的规模,不是整套系统的全部参数;

  2. 97.3M 指基础版 Policy 参数;

  3. 197.2M 指论文配置下所有可训练参数总量,包括 Policy、ActionQuery、LoRA 等可学习部分。

所以更准确的说法不是“整个 VLA 只有 0.5B”,而是“VLA 使用 0.5B 级语言骨干,Policy 约 97M,总可训练参数约 197M”。即便如此,它相比 7B 级 VLA 仍然显著轻量。

论文摘要和项目主页还强调“单张消费级 GPU 约 8 小时训练”。与此同时,论文实验章节说明主实验在 4 张 NVIDIA H100 上运行。两句话并不必然矛盾:前者强调最低可用训练方案,后者说明论文大规模对比实验采用的硬件。但写博客时不应把二者混成“论文所有实验都在单卡 8 小时完成”。更严谨的表述是:该方法的显存与训练配方允许单消费级 GPU 训练,而论文报告的系统实验使用了 4 张 H100。

七、LIBERO:0.5B 骨干能做到什么程度?

LIBERO 包含 Spatial、Object、Goal 和 Long 四类任务。论文对每个子任务重复 50 次;四个套件共 40 个子任务,因此 VLA-Adapter 的完整评估相当于 2,000 次回合。

基础版结果为:

方法

Backbone

Spatial

Object

Goal

Long

平均

OpenVLA

7B

84.7

88.4

79.2

53.7

76.5

OpenVLA-OFT

7B

97.6

98.4

97.9

94.5

97.1

π0

3B

96.8

98.8

95.8

85.2

94.2

SmolVLA

2.2B

93.0

94.0

91.0

77.0

88.8

VLA-OS

0.5B

87.0

96.5

92.7

66.0

85.6

VLA-Adapter

0.5B

97.8

99.2

97.2

95.0

97.3

VLA-Adapter-Pro

0.5B

99.6

99.6

98.2

96.4

98.5

基础版以 0.5B 骨干取得 97.3% 平均成功率,与 7B OpenVLA-OFT 的 97.1% 相当;Long 套件上达到 95.0%,比同为 0.5B 骨干的 VLA-OS 高 29 个百分点。这个结果支撑了论文最重要的经验结论:在具体机器人任务微调中,桥接效率可以在很大程度上弥补 backbone 规模差距。

不过,表格也要谨慎看待。论文说明许多基线结果来自原论文或其他公开复现,并非全部在完全相同代码、数据处理和硬件环境下重新训练。LIBERO 结果很强,但“超过所有大模型”的结论仍然局限在对应基准和评测协议中,不能直接外推到开放世界泛化能力。

八、CALVIN ABC→D:不仅看单任务,还看连续完成五步

CALVIN ABC→D 在环境 A、B、C 上训练,在未见过的环境 D 上测试。每个评测序列包含五个连续子任务,只有完成当前任务才能继续下一个。指标既统计至少连续完成 1—5 个任务的比例,也统计平均完成长度。

方法

≥1 个

≥2 个

≥3 个

≥4 个

5 个全完成

平均长度

OpenVLA-OFT

96.3

89.1

82.4

75.8

66.5

4.10

VPP

95.7

91.2

86.3

81.0

75.0

4.33

VLA-Adapter

99.1

94.6

88.8

82.8

76.5

4.42

VLA-Adapter-Pro

98.5

95.0

90.5

85.3

80.0

4.50

基础版平均完成 4.42 个任务,Pro 版达到 4.50。相比只看单次抓取,这个基准更能检验动作连续性和环境变化下的鲁棒性。

但“ABC→D zero-shot”中的 zero-shot 指没有在环境 D 训练,不是没有使用 CALVIN 任务数据,也不是开放世界零样本控制。准确说法应是“对未见环境布局的零样本迁移”。

九、真实机器人:结果令人鼓舞,但证据规模仍有限

真实实验使用 6-DoF Synria Alicia-D 机械臂和 1-DoF 夹爪,配备 Logitech C920e 第三视角相机与 RealSense D405 夹爪相机。任务分四类:

  1. 不同材质、形状物体的简单抓取放置;

  2. 左右移动物体;

  3. 积木堆叠;

  4. “先把勺子放到杯子上,再把杯子放到盘子上”的长时序任务。

测试时还会随机改变物体位置以制造分布偏移。论文图 7 显示,VLA-Adapter 在四类任务上都优于 ACT 与 0.5B+OFT 风格基线,平均成功率优势明显。这说明桥接机制不只在仿真 benchmark 上有效。

但真实实验每个结果只取 10 次执行的平均值,硬件平台也只有一种。对于机器人研究,这可以证明“能落地”和初步泛化,却还不足以证明跨机器人、跨场景的普适性。尤其是长时序任务仅有少量类型,任务失败的原因、恢复能力以及接触丰富操作都没有被充分展开。

因此,比较合适的评价是:真实实验为方法提供了积极证据,但主要结论仍由 LIBERO 与 CALVIN 支撑。

十、速度为什么能到 219.2 Hz?

论文报告:

方法

吞吐

单次前向延迟

OpenVLA

4.2 Hz

0.2396 s

OpenVLA-OFT

71.4 Hz

0.1120 s

VLA-Adapter

219.2 Hz

0.0365 s

VLA-Adapter 相比 OpenVLA-OFT 吞吐约 3 倍,延迟约三分之一。项目主页还给出 batch size 8 时训练显存约 24.7GB,而 OpenVLA-OFT 约为 62GB。

需要理解“219.2 Hz”的计算方式。默认动作块 H = 8,一次前向耗时 0.0365 秒,一次产生 8 个动作,因此:

8 ÷ 0.0365 ≈ 219.2 actions/s

它不意味着控制器每 4.56 毫秒重新观察一次环境;模型仍是约 36.5 毫秒生成一个 8 步 chunk。吞吐量描述单位时间生成多少动作点,闭环观测频率则取决于 chunk 执行与重规划方式。对部署而言,两者都重要,不能把 action throughput 直接等同于控制回路频率。

速度优势主要来自三点:

  • 0.5B 骨干显著小于 7B;

  • 一次并行生成动作 chunk,而不是逐 token 自回归;

  • 使用单次 L1 回归,而不是多步扩散采样。

十一、冻结 VLM 仍能工作,说明了什么?

当 VLM backbone 完全冻结,仅训练 ActionQuery 与 Policy 时,LIBERO-Long 结果为:

方法

冻结 VLM 后成功率

OpenVLA-OFT

0.0%

SmolVLA

77.0%

VLA-Adapter

86.4%

论文附录解释了 OpenVLA-OFT 冻结后失败的一个实现层原因:其 L1 结构中的动作位置以零值/掩码形式进入冻结 VLM,这些位置本身没有可学习内容;VLA-Adapter 则插入真正可训练的 ActionQuery embedding。即使 Transformer 主体冻结,梯度仍可以更新查询 token,让它们学会如何利用冻结 VLM 的注意力通路收集 VL 信息。

这个实验非常能说明 ActionQuery 的身份:它不是普通占位符,而是可训练的接口状态。冻结骨干后仍有 86.4%,也证明 VLM 的通用视觉—语言知识本身已经很有价值,问题在于如何读出。

但“冻结后有效”不等于“完全不用训练”。ActionQuery 与约 97M Policy 仍需目标机器人数据训练;86.4% 也低于正常微调的 95.0%。VLA-Adapter 降低的是 VLM 适配成本,而不是消除下游示范数据需求。

十二、VLA-Adapter-Pro 改了什么?

论文 v2 附录和项目主页还展示了 VLA-Adapter-Pro。基础版为了极致轻量,在三种注意力分支之间共享部分投影;Pro 版为 self-attention、ActionQuery 条件和 Raw 条件使用分离投影,让不同通道学习更有针对性的 Key/Value 表示,并向 Q/K 加入 Rotary Position Embedding(RoPE),增强注意力对位置的敏感性。

可以把它理解成一组很自然的容量—性能交换:

  • 基础版强调共享与轻量;

  • Pro 版减少参数共享,让三类信息拥有更独立的表示空间,并显式强化位置信息。

Pro 在 LIBERO 的平均成功率从 97.3% 提升到 98.5%,CALVIN 平均长度从 4.42 提升到 4.50。Long 套件也从 95.0% 提升到 96.4%。这说明基础 Bridge Attention 框架还有容量扩展空间。

不过,Pro 版本性能提升并不意味着基础版设计失效:它们的 Policy 总体结构相同,变化主要是投影解耦和位置编码。论文的主体贡献仍然是条件选择与桥接范式,而不是 Pro 的增量优化。

十三、这篇工作的创新到底在哪里?

评价 VLA-Adapter,最好把“组件创新”和“研究贡献”分开。

单看组件:

  • cross-attention 不是新的;

  • 可学习 Query 不是新的;

  • 零初始化门控和 tanh 缩放也已有类似做法;

  • 动作 chunk、L1 回归同样是成熟技术。

但论文仍然有清晰的创新,因为它解决的是这些组件如何围绕 VL→A 接口组合的问题。

13.1 系统研究了长期被默认的桥接条件

论文把层级与特征类型拆开,得到 Raw 中层更强、ActionQuery 深层更强、全层更优等结论。即使不采用 VLA-Adapter,这些发现也能指导其他 VLA 设计。

13.2 把经验结论转化为非对称结构

不是简单把 Raw 与 ActionQuery 拼起来,而是让两者走不同 cross-attention,并采用“Raw 门控、ActionQuery 全量”的注入规则。结构与消融结论一一对应。

13.3 证明桥接效率可以替代一部分规模与预训练

0.5B 无机器人预训练骨干在 LIBERO 上达到 7B 级结果,冻结骨干仍能保持较强性能。这是对“高性能 VLA 必须依赖大骨干 + 大规模机器人预训练”的有效反例。

因此,更准确的评价是:VLA-Adapter 的创新不在发明一种全新注意力算子,而在提出并验证了一套面向小型 VLA 的桥接设计原则。

十四、论文仍有哪些局限?

论文自己在 Limitations 中承认三点:

  1. 没有大规模具身数据预训练,模型又较小,真实世界泛化仍需提升;

  2. Policy 输出质量依赖 VLM 条件及其使用方式;

  3. 训练流程仍较简单,强化学习等后训练方法尚未探索。

结合实验,还可以补充几个阅读时必须保留的边界。

14.1 “不需要机器人预训练”不等于“没有预训练”

VLA 使用的 Prismatic/Qwen 与视觉编码器本身仍有大规模视觉—语言预训练。论文减少的是机器人轨迹预训练,并非从随机初始化训练整个感知系统。

14.2 Benchmark 高分不等于开放世界通用机器人

LIBERO 任务定义、场景和动作空间相对固定;CALVIN 的环境迁移也仍属于同一 benchmark。97%—98% 的成功率证明模型对这些任务很强,但不能直接推导出跨物体、跨相机、跨机器人形态的同等表现。

14.3 真实实验统计量较小

每类任务 10 次执行足以做初步展示,却不足以稳定刻画小概率失败、长尾干扰和硬件磨损等真实部署问题。

14.4 L1 Policy 的适用范围仍待检验

在动作分布较集中、chunk 较短的任务上,L1 快且有效;在强多峰轨迹、灵巧操作或复杂接触任务中,扩散与 Flow Matching 可能重新占优。

14.5 层对齐增加了结构绑定

Policy 层数与 VLM 层数相同,带来清晰的逐层桥接,但也使 Policy 架构与 backbone 深度耦合。换用更深或异构 VLM 时,怎样保持轻量和复用性仍值得研究。

14.6 条件传输不等于长期规划

Bridge Attention 改善的是感知条件进入局部动作生成的质量。它没有显式世界模型、任务记忆或错误恢复机制。面对很长的操作流程,模型仍可能因为局部误差积累而失败。

十五、VLA-Adapter 对后续研究最有价值的启示

启示 1:不要把 VLM 最后一层当成默认答案

动作需要的空间细节可能存在于中间层。以后设计 VLA,应该先分析信息在哪一层,而不是沿用分类或语言生成中的最后层习惯。

启示 2:条件接口本身也是模型容量

模型参数量只描述“存了多少知识”,桥接模块决定“Policy 能读出多少知识”。接口带宽不足时,扩大 VLM 可能只是昂贵地储存无法被动作头利用的信息。

启示 3:不同条件应采用不同注入策略

通用 Raw features 与动作导向 Query 不是同质信息。以后接入深度、触觉、力觉或历史状态时,也不应默认统一拼接,而应研究每类条件的可信度、粒度与注入强度。

启示 4:小模型路线不一定从蒸馏开始

在机器人场景中,重新设计感知—动作接口,可能比先训练一个超大 VLA 再压缩更直接。对于只有单卡或少量示范数据的实验室,这条路线尤其有吸引力。

启示 5:冻结骨干值得认真研究

如果通用 VLM 已包含足够感知知识,可训练 Query + 轻量 Policy 可能成为低成本适配不同机器人平台的标准范式。VLA-Adapter 的 86.4% 结果说明方向可行,但离“即插即用”仍有距离。

十六、结语:VLA-Adapter 真正适配的,是信息流

VLA-Adapter 最容易传播的标签是“0.5B 小模型”“单卡 8 小时”“219.2 Hz”。这些数字确实亮眼,但如果只记住数字,就会错过论文真正有价值的部分。

它重新提醒我们:VLA 不是 VLM 与动作头的机械拼接。VLM 的不同层保存着不同粒度的信息,Raw features 与 ActionQuery 也承担不同角色。Policy 能否获得正确条件,取决于取哪一层、取什么类型、以何种注意力交互、注入多少强度。

VLA-Adapter 的答案是:

  • 全层读取,而不是只拿最后一层;

  • Raw 与 ActionQuery 并用,而不是二选一;

  • Query 条件充分注入,Raw 条件从零门控;

  • 动作槽位通过 self-attention 协调,再一次并行输出 chunk;

  • 用更好的桥,降低对大骨干与机器人预训练的依赖。

这套答案未必是所有 VLA 的最终形式,但它证明了一个很重要的方向:当模型变大越来越昂贵时,研究信息怎样流动,可能比继续增加参数更有价值。

后续如果继续讲项目代码,最值得追踪的就不只是某个类或某行实现,而是论文中的四条信息流如何落到真实张量上:VLM 各层 hidden states 如何取出、ActionQuery 如何插入序列、Raw 门控如何更新、8 步 action chunk 又如何从 24 层 Policy 中生成。理解了本文的机制,代码就不再是一堆模块,而是这套桥接思想的具体实现。


点赞收藏
// 评论0
0 / 500
还没有评论,快来抢沙发