2. VLA模型基础
VLA(Vision-Language-Action)模型是近年来机器人操作领域最具变革性的技术方向之一。其核心思想是将视觉感知、语言理解和动作生成统一到一个端到端的神经网络中,使机器人能够直接根据高层的自然语言指令和当前的视觉观测,输出可执行的低层动作指令。与传统的“感知-规划-控制”模块化流水线不同,VLA模型试图通过大规模预训练和跨模态对齐,让模型学习到“看到什么、理解什么、该做什么”的联合表征。理解VLA模型的基础架构、典型代表以及输入输出表示,是后续学习模型压缩与边缘部署的前提——因为压缩策略的选择,本质上取决于模型的模态融合方式、参数量分布和计算瓶颈所在。
2.1 VLA模型的核心架构范式
VLA模型并非一种单一的网络结构,而是一类将视觉、语言和动作三种模态统一建模的架构范式。从工程实现的角度看,当前主流的VLA架构可以归纳为三种范式:“视觉-语言模型+动作头”、“统一序列”和“多模态编码器-融合-解码”。理解这三种范式的差异,对于后续选择压缩策略至关重要。
范式一:视觉-语言模型+动作头(VLM+Action Head)。这种架构直接复用预训练好的视觉-语言模型(如PaLM-E、Flamingo等),在其之上添加一个轻量级的动作解码头。视觉和语言输入先经过VLM的跨模态编码器,得到融合后的特征向量,然后动作头将该特征映射为具体的动作参数。这种方式的优点是实现简单、能充分利用VLM的语义理解能力;缺点是动作头通常较浅,难以表达复杂的操作策略,且VLM的推理延迟较高。
范式二:统一序列(Unified Sequence)。这是RT-2等模型采用的方案。它将图像、文本和动作都离散化为,然后拼接成一个统一的序列,输入到Transformer中进行自回归建模。模型的任务是预测下一个——无论是文本还是动作。这种范式的优势在于架构简洁、训练目标统一,且能利用大规模语言模型的预训练权重;但缺点是动作的离散化会带来精度损失,且序列长度较长时计算开销显著增加。
范式三:多模态编码器-融合-解码(Encoder-Fusion-Decoder)。这种架构为每种模态配备独立的编码器,然后通过交叉注意力或门控机制进行融合,最后用自回归或扩散模型解码动作。例如,一些基于扩散策略的VLA模型(如Diffusion Policy的扩展版本)就采用这种结构。其优势是各模态的特征提取更充分,动作输出可以是连续的、高精度的;缺点是结构复杂、训练难度大,且推理时需要多次迭代采样。
| 架构范式 | 代表模型 | 模态融合方式 | 动作输出类型 | 压缩关注点 |
|---|---|---|---|---|
| VLM+动作头 | PaLM-E、RT-1 | VLM编码后接MLP | 连续向量 / 离散 | VLM主干剪枝、动作头量化 |
| 统一序列 | RT-2、RT-2-X | 全序列自注意力 | 离散动作 | 数量压缩、KV-Cache优化 |
| 编码器-融合-解码 | Diffusion VLA、π0 | 交叉注意力 / 门控 | 连续动作序列 | 扩散步数减少、编码器蒸馏 |
核心原理提示:无论采用哪种范式,VLA模型的本质都是学习一个条件概率分布 P(动作 | 视觉观测, 语言指令)。压缩的目标是在尽量不改变这个条件分布的前提下,减少模型的参数量、计算量或内存占用。因此,压缩策略的选择必须与架构范式相匹配——例如,对于统一序列模型,减少视觉数量比单纯剪枝更有效;而对于扩散型VLA,减少去噪步数则是最直接的加速手段。
2.2 典型代表模型深度拆解
在VLA模型的发展历程中,RT-2和PaLM-E是两个里程碑式的代表。它们分别体现了“统一序列”和“VLM+动作头”两种范式的极致形态。深入理解这两个模型的内部机制,有助于我们把握VLA模型的设计哲学和压缩潜力。
RT-2(Robotic Transformer 2)由Google DeepMind于2023年发布。RT-2的核心创新在于将机器人的动作输出转化为“语言模型可以理解的”。具体来说,RT-2将动作表示为8个离散的(对应6-DoF末端位姿的平移、旋转和 gripper 开合),每个从256个候选值中选取。这些动作被添加到模型的词表中,与文本一起参与自回归生成。RT-2的基座模型是PaLI-X(一个55B参数的视觉-语言模型),经过Co-Fine-Tuning(协同微调)后,模型既保留了互联网级别的视觉-语言知识,又学会了将语义理解映射为具体的机器人动作。
从压缩角度看,RT-2的挑战非常明显:55B参数规模在边缘设备上几乎无法部署。其计算瓶颈主要集中在两个地方:一是视觉编码器(ViT)处理高分辨率图像时产生的196~256个视觉;二是55B的Transformer主干在自回归解码时的KV-Cache占用。因此,针对RT-2的压缩通常需要组合拳:视觉剪枝(将256个减少到64个)、模型量化(INT8/INT4)、以及知识蒸馏(用大模型指导小模型)。
PaLM-E(Embodied Language Model)由Google于2023年提出,是一个参数量高达562B的多模态具身模型。PaLM-E的创新之处在于将机器人的连续传感器数据(如图像、状态向量)直接“投影”为与文本同维度的嵌入向量,然后与文本拼接输入到PaLM模型中。PaLM-E不需要为动作单独设计,而是直接输出文本形式的动作描述或低层控制指令。这种设计使得PaLM-E能够利用PaLM强大的推理能力,实现复杂的长期任务规划。
PaLM-E的压缩难度比RT-2更大,因为562B的参数量意味着即使使用INT4量化,模型权重仍需要约280GB的存储空间。在实际边缘部署中,PaLM-E通常不被直接使用,而是作为“教师模型”来蒸馏出小规模的专用VLA模型。例如,可以用PaLM-E生成大量“视觉-语言-动作”三元组数据,然后用这些数据训练一个1B~3B参数的轻量级VLA模型。
实战经验:在选择VLA基座模型时,不要盲目追求最大参数规模。对于边缘部署场景,建议优先考虑RT-2类模型(因为其动作机制更适合量化压缩),或者直接选择开源的小规模VLA(如OpenVLA,7B参数)。OpenVLA基于Prismatic-ViT和Llama-2-7B构建,在保持较好操作性能的同时,为模型压缩留下了更大的空间。
2.3 输入输出表示:从原始数据到模型张量
VLA模型的输入输出表示是连接物理世界与神经网络的桥梁。在实际工程中,输入输出的格式设计直接影响模型的训练效率、推理速度和压缩效果。下面从输入侧和输出侧分别展开。
输入侧:视觉观测的表示。视觉输入通常来自RGB相机或RGB-D相机。在送入模型之前,需要经过以下处理:(1)图像裁剪与缩放——将原始图像(如1280×720)裁剪为模型输入尺寸(如224×224或336×336);(2)归一化——将像素值从[0,255]映射到[-1,1]或[0,1];(3)化——ViT将图像切分为16×16的Patch,每个Patch经过线性投影变为一个。对于224×224的输入,会生成196个视觉;对于336×336的输入,则生成256个。这些的数量直接决定了Transformer的计算复杂度。
输入侧:语言指令的表示。语言指令通过分词器(Tokenizer)转换为 ID序列。常用的分词器包括BERT的WordPiece和T5的SentencePiece。指令长度通常在10~50个之间。在VLA模型中,语言和视觉会被拼接在一起,形成一个混合序列。需要注意的是,语言的数量远少于视觉,因此在压缩时,视觉是主要的优化对象。
输入侧:本体感受的表示。部分VLA模型(如RT-1)还会输入机器人的本体感受数据,包括关节角度、关节速度、末端执行器的力/力矩等。这些连续值通常通过一个MLP编码为固定维度的向量(如32维或64维),然后与视觉拼接。本体感受数据的维度较低,对计算量的影响可以忽略,但在某些任务中(如力控装配)至关重要。
输出侧:动作表示的三种主流形式。
- 连续动作向量(Regression):直接输出一个实数向量,例如7维向量(3维位置+3维姿态+1维夹爪开合)。这种表示精度高,但训练时需要使用L1或L2损失,且输出范围需要归一化。代表模型:RT-1、ACT(Action Chunking with Transformers)。
- 离散动作(Classification):将每个动作维度离散化为若干个区间(如256个bin),模型输出每个区间的概率分布。这种表示与语言模型的交叉熵损失天然兼容,但会引入量化误差。代表模型:RT-2。
- 动作轨迹序列(Sequence):输出未来一段时间内的动作序列(如未来16步的关节位置),而不是单步动作。这种表示有利于平滑控制和多步规划,但增加了输出维度。代表模型:ACT、Diffusion Policy。
# 以RT-2为例的动作化伪代码
def discretize_action(action_7d, num_bins=256, min_val=-1.0, max_val=1.0):
"""
将7维连续动作离散化为8个(每个维度1个,夹爪开合额外1个)
action_7d: [dx, dy, dz, droll, dpitch, dyaw, gripper]
"""
tokens = []
for i in range(6): # 6-DoF位姿增量
normalized = (action_7d[i] - min_val) / (max_val - min_val)
bin_idx = int(normalized * (num_bins - 1))
tokens.append(bin_idx)
# 夹爪开合离散为2个bin(开/关)
gripper_ = 1 if action_7d[6] > 0.5 else 0
tokens.append(gripper_)
return tokens # 共7个,RT-2实际使用8个(含终止符)
2.4 案例拆解:从RT-2到边缘部署的输入输出适配
为了更好地理解VLA模型的输入输出表示在实际工程中的影响,我们以一个具体的边缘部署案例来展开分析。假设我们要将RT-2模型部署到一台配备Jetson Orin NX(16GB内存)的移动机器人上,执行“将红色杯子放到托盘上”的任务。
初始现象与目标:在PC工作站上,RT-2模型(55B参数)的推理延迟约为1.2秒/步,GPU显存占用约110GB。目标是在Jetson Orin NX上实现延迟小于500ms/步、内存占用小于12GB的实时推理。
关键输入数据与参数:
- 视觉输入:单目RGB相机,分辨率1280×720,裁剪后为224×224,ViT生成196个视觉。
- 语言指令:“put the red cup on the tray”,分词后为9个。
- 动作输出:8个离散(6-DoF位姿增量+夹爪+终止符),每个从256个候选值中选取。
- 模型参数:55B,其中视觉编码器约4B,Transformer主干约50B,动作头约1B。
分析判断过程:
首先,55B参数即使使用INT4量化,权重也需要约28GB存储,远超Jetson Orin NX的16GB内存。因此,直接部署RT-2不可行。我们需要采用“知识蒸馏+剪枝”的组合策略。具体分析如下:
- 计算瓶颈定位:通过Profiling发现,Transformer主干的注意力计算占总延迟的78%,视觉编码器占15%,动作头占7%。因此,压缩重点应放在Transformer主干上。
- 数量分析:196个视觉 + 9个语言 = 205个。注意力复杂度为O(n²),即约42K次注意力计算。如果将视觉剪枝到64个,则总数降为73个,注意力计算量降为原来的12.7%。
- 蒸馏方案设计:使用完整的RT-2作为教师模型,在100K条机器人操作数据上蒸馏一个3B参数的Student模型(基于Llama-2-3B)。Student模型保留RT-2的视觉编码器结构(但使用更小的ViT-B/16),并采用相同的动作化方案。
实际操作步骤:
# 步骤1:数据准备——使用教师模型生成软标签
python generate_soft_labels.py \
--teacher_model rt2-55b \
--dataset robot_act_100k \
--output_dir soft_labels/ \
--batch_size 8 \
--temperature 2.0
# 步骤2:训练学生模型(3B参数)
python train_student.py \
--model_name llama2-3b \
--vision_encoder vit_base_patch16 \
--train_data soft_labels/ \
--action_vocab_size 256 \
--max_seq_len 128 \
--learning_rate 1e-4 \
--epochs 5
# 步骤3:INT8量化 + 剪枝
python quantize_and_prune.py \
--model_path student_3b.pt \
--quant_method int8 \
--prune_visual_tokens 64 \
--output_path student_3b_int8.pt
结果对比:
| 指标 | RT-2 (55B) | 蒸馏后 (3B) | 蒸馏+INT8+剪枝 |
|---|---|---|---|
| 参数量 | 55B | 3B | 3B (INT8) |
| 显存占用 | 110GB | 6.2GB | 3.1GB |
| 推理延迟 | 1.2s | 380ms | 210ms |
| 操作成功率 | 82% | 76% | 74% |
风险与代价:操作成功率从82%下降到74%,主要原因是剪枝丢失了部分视觉细节信息(如杯子边缘的精确位置)。为缓解这一问题,我们可以在剪枝时保留注意力得分最高的64个(即“重要保留”策略),而不是均匀采样。此外,INT8量化对动作的预测精度有一定影响,可以通过量化感知训练(QAT)来补偿。
复盘经验:VLA模型的压缩不是简单的“模型变小”,而是需要从输入输出表示层面重新设计。在本案例中,视觉剪枝带来的收益远大于单纯的参数剪枝,因为数量直接决定了注意力计算的复杂度。同时,动作的离散化方案在压缩后需要重新校准——如果离散bin数从256减少到128,模型精度会进一步下降,但计算量也会减少。在实际项目中,需要根据任务精度要求和硬件算力进行权衡。
常见误区提醒:很多初学者在压缩VLA模型时,只关注模型权重的量化(如从FP16到INT8),而忽略了输入输出表示层面的优化。实际上,对于VLA模型而言,视觉数量和动作表示方式对推理延迟的影响往往比权重精度更大。例如,将视觉从196减少到64,计算量可以减少87%,而INT8量化只能减少约50%的计算量(且受限于内存带宽)。因此,在压缩VLA模型时,应优先考虑级优化,其次才是权重级优化。
2.5 输入输出表示对压缩策略的约束分析
输入输出表示不仅影响模型的性能上限,还直接决定了哪些压缩技术是可行的。以下从三个维度分析这种约束关系。
维度一:视觉的稀疏化潜力。视觉并非同等重要。研究表明,在机器人操作任务中,图像中心区域和物体边缘对应的通常具有更高的注意力权重。因此,可以采用动态剪枝——在推理时根据注意力得分动态丢弃低分。这种方法的压缩比可以达到4~8倍,且精度损失控制在2%以内。但需要注意的是,动态剪枝会导致计算图的不规则性,对边缘推理引擎(如TensorRT)的优化提出了挑战。
维度二:动作表示的离散化粒度。动作的离散化bin数量直接影响模型输出层的计算量。例如,RT-2使用256个bin,输出层是一个256维的Softmax。如果我们将bin数量减少到64,输出层的计算量可以减少75%,但动作精度会下降。对于高精度装配任务(如插入USB接口),建议保留至少128个bin;对于粗粒度抓取任务,64个bin即可满足要求。此外,还可以采用分层离散化——先预测粗粒度区间,再预测细粒度偏移,这样可以在不增加输出维度的情况下提高精度。
维度三:序列长度与KV-Cache的权衡。在自回归解码时,Transformer需要缓存所有历史的Key和Value(即KV-Cache)。对于VLA模型,视觉通常只参与一次前向计算(作为前缀),而动作是逐步生成的。因此,KV-Cache的大小主要由视觉数量决定。如果视觉为196个,每个的KV缓存为2×hidden_size×num_layers×2字节(FP16),对于3B模型(hidden_size=2560,num_layers=32),KV-Cache约为196×2×2560×32×2 = 205MB。如果剪枝到64个,KV-Cache降至67MB。在内存受限的边缘设备上,这种差异是显著的。
总结:VLA模型的输入输出表示是压缩工作的“第一性原理”。在制定压缩方案之前,必须明确以下问题:(1)视觉数量是多少?能否剪枝?(2)动作是离散还是连续?离散bin数能否减少?(3)序列长度是多少?KV-Cache占用是否可接受?只有回答了这些问题,才能选择正确的压缩技术组合。在后续章节中,我们将深入探讨针对VLA模型的量化、剪枝、蒸馏和优化等具体技术。