3. VLA模型架构解析
视觉语言动作模型(Vision-Language-Action, VLA)的核心思想,是把图像观测、自然语言指令与机器人动作统一到同一个可微分的网络中,让模型直接从“看到什么、听到什么”映射到“该怎么做”。理解 VLA 的架构,关键要抓住三段式主线:多模态编码器负责把异构输入变成语义向量,融合机制负责让视觉、语言、本体状态在共享空间中对齐,动作解码器负责把融合表示转成可执行的动作序列。本节围绕这条主线,拆解典型结构、训练范式与常见误区。
一、典型多模态编码器:把三种模态变成同一种“语言”
VLA 的输入通常包含三类信息:视觉观测(RGB、深度、多视角)、语言指令(任务描述、目标物体)、机器人本体状态(关节角、末端位姿、夹爪开合)。编码器的任务是把它们投影到统一的嵌入空间。
- 视觉编码器:常用 ViT、SigLIP、DINOv2 或 ResNet。ViT 类模型把图像切成 patch,输出 patch token 序列,天然适合与语言 token 拼接。多视角场景下,每个相机独立编码后再加视角嵌入。
- 语言编码器:常用预训练 LLM 的 tokenizer 与嵌入层,如 LLaMA、T5、PaLM 的词表。语言 token 与视觉 token 共享同一 Transformer 主干,是当前主流做法。
- 状态编码器:本体状态维度低、数值连续,通常用 MLP 或线性层投影成若干 state token,再与视觉、语言 token 拼接。
编码阶段最重要的设计选择是是否共享主干。共享主干(如 RT-2、OpenVLA)让视觉与语言在同一个注意力空间里交互,参数效率高;分离主干(如早期 CLIP+策略网络)则更易模块化调试,但跨模态对齐能力弱。实践中,共享主干 + 轻量适配器是主流折中。
二、融合机制:从“拼接”到“交叉注意力”
融合机制决定多模态信息如何交互。常见方案有三类:
- 早期拼接融合:把视觉 token、语言 token、state token 直接拼成一条长序列送入 Transformer。实现简单,但序列长、注意力开销大,且不同模态的 token 数量差异会带来偏置。
- 交叉注意力融合:语言作为 query,视觉作为 key/value,或双向交叉。适合视觉 token 多、语言 token 少的场景,能显著降低计算量。
- 适配器/投影融合:用 Q-Former、Perceiver Resampler 或 MLP 把视觉特征压缩成固定数量的“视觉摘要 token”,再与语言拼接。这是当前 VLA 最常用的方案,兼顾效率与表达力。
三、动作解码器:连续动作的生成方式
动作解码器把融合表示映射为动作。按输出形式可分为:
| 解码方式 | 输出形式 | 典型代表 | 适用场景 |
|---|---|---|---|
| 离散 token 解码 | 把动作离散成 token,自回归生成 | RT-2、OpenVLA | 复用 LLM 词表,适合语言-动作统一建模 |
| 连续回归解码 | MLP 直接回归动作向量 | BC-Z、Diffusion Policy 早期 | 动作维度低、实时性要求高 |
| 扩散/流匹配解码 | 从噪声逐步去噪生成动作序列 | Diffusion Policy、π0 | 多模态动作分布、精细操作 |
| 动作 chunk 解码 | 一次输出未来 H 步动作 | ACT、OpenVLA-OFT | 降低推理频率、提升平滑性 |
动作 chunk 是近年最重要的工程改进之一:模型一次预测未来若干步动作,机器人执行时按时间展开,既减少推理次数,又缓解单步抖动。代价是 chunk 边界处可能出现不连续,需要重叠执行或时间集成(temporal ensemble)来平滑。
四、端到端训练范式:从预训练到微调
VLA 的训练通常分两阶段:大规模预训练与任务微调。预训练阶段用互联网图文数据、机器人演示数据、仿真数据混合训练,让模型学会视觉-语言对齐与基础操作先验;微调阶段用目标机器人的少量演示数据,把动作空间、相机标定、本体动力学适配到具体硬件。
# 典型微调配置(示意)
model: openvla-7b
vision_encoder: siglip-so400m
action_dim: 7 # 6D位姿 + 1D夹爪
action_chunk: 8
batch_size: 16
lr: 2e-5
epochs: 30
lora_rank: 32 # 低秩适配,降低显存
dataset: demo_pick_place # 200条演示
端到端训练的核心挑战是动作空间对齐:不同机器人的关节数、单位、坐标系不同,直接混合训练会让模型学到“平均动作”。常见做法是统一到末端位姿增量空间,或为每个机器人加一个本体嵌入(embodiment token)。另一个挑战是因果混淆:模型可能记住场景背景而非任务本身,需要通过随机化背景、光照、物体位置来增强泛化。
五、案例与复盘:一次抓取任务的架构走查
以“把红色方块放进蓝色盒子”为例:RGB 图像经 ViT 编码为 256 个 patch token;指令经 tokenizer 变为 12 个语言 token;关节状态经 MLP 变为 4 个 state token。三者拼接后送入 7B Transformer,融合层输出 272 个 token 的上下文表示。动作解码器取最后一个 token 的隐状态,经线性头输出 8 步动作 chunk,每步 7 维。机器人执行前 4 步后重新推理,形成闭环。
总结来看,VLA 架构的解析可以归纳为一张“输入—编码—融合—解码—执行”的链路图。多模态编码器解决“怎么表示”,融合机制解决“怎么对齐”,动作解码器解决“怎么生成”,端到端训练解决“怎么学”。四者缺一不可,而工程上最容易被忽视的,往往是融合层的 token 设计与动作 chunk 的边界处理。