1. OpenVLA-OFT:具身智能微调的革命性突破

最近在具身智能领域,OpenVLA-OFT技术引起了广泛关注。这项技术通过三大创新设计——并行解码架构、连续动作表示和L1回归目标,显著提升了视觉-语言-动作(VLA)模型的微调效率。作为一个长期关注机器人控制技术的从业者,我第一次看到这项技术时就被它的性能数据震惊了:在ALOHA双臂机器人上的任务成功率达到了97.1%,同时实现了26倍的推理速度提升。

OpenVLA-OFT的核心价值在于解决了传统VLA模型的两个痛点:推理速度慢和任务成功率不稳定。传统的自回归VLA模型,比如OpenVLA和π0,通常只能达到3-5Hz的动作生成频率,这对于需要25-50Hz高频控制的机器人操作任务来说远远不够。我在实际项目中就遇到过这种情况——当机器人需要快速响应环境变化时,模型推理速度成了性能瓶颈。

这项技术特别适合三类开发者:一是从事机器人控制算法研发的工程师,二是研究具身智能落地的技术团队,三是需要将VLA模型适配到新机器人平台的研究人员。OpenVLA-OFT提供了一个高效的微调框架,让开发者能够快速将预训练好的VLA模型部署到不同的机器人系统上。

2. 并行解码架构:打破自回归瓶颈

2.1 传统自回归解码的局限性

在深入OpenVLA-OFT之前,我们需要理解传统VLA模型的动作生成方式。以OpenVLA为例,它采用自回归方式生成动作:先预测第一个动作token,然后用这个token作为输入预测第二个token,依此类推。这种串行处理方式就像一个人一个字一个字地写文章,速度自然快不起来。

我在测试OpenVLA原始模型时做过一个实验:在NVIDIA A100 GPU上,生成单个时间步的7维动作需要0.33秒。如果要生成8个时间步的动作块,就需要进行56次顺序解码(7维×8步),耗时约18.48秒。这种延迟使得自回归模型根本无法满足实时控制的需求。

2.2 并行解码的工作原理

OpenVLA-OFT的创新之处在于用并行解码取代了自回归解码。具体实现上,它做了两个关键修改:

  1. 将因果注意力(causal attention)替换为双向注意力(bidirectional attention)
  2. 用空动作嵌入替代真实的动作token作为解码器输入

这种设计允许模型在一次前向传播中同时预测所有动作token,将动作生成从D次顺序传递减少到单次传递。我曾在项目中尝试实现这个机制,代码大致如下:

# 传统自回归解码
for i in range(action_dim):
    action_token = model.predict_next_token(previous_tokens)
    
# OpenVLA-OFT并行解码
all_actions = model.parallel_predict(empty_embeddings)

并行解码还天然支持动作分块(chunking)。通过向解码器输入K个空动作嵌入,模型可以一次性预测未来K个时间步的动作。实验数据显示,在块大小K=8时,吞吐量提升了26倍;当K=14时,吞吐量提升可达45.5倍。

2.3 并行解码的实际效果

在实际机器人控制场景中,并行解码带来了两个意想不到的好处:

首先,它不仅提高了速度,还提升了任务成功率。在LIBERO基准测试中,采用并行解码的OpenVLA策略平均成功率提升了14%。特别是在LIBERO-Long任务套件中,动作分块帮助模型更好地捕捉时间依赖性,减少了复合错误。

其次,并行解码为处理多模态输入创造了条件。传统自回归模型在处理额外输入(如多视角图像、机器人状态)时会显著增加延迟。而OpenVLA-OFT即使输入序列长度增加一倍(从256到512个视觉patch嵌入),仍能保持71.4Hz的高吞吐量和0.112秒的低延迟。

3. 连续动作表示:从离散到连续的飞跃

3.1 离散动作表示的局限性

传统VLA模型如OpenVLA使用离散动作token表示,将每个动作维度归一化到[-1, +1]范围后均匀离散化为256个区间。这种方法虽然实现简单,但存在明显缺陷:

  1. 离散化过程丢失了动作的细粒度细节
  2. 增加分箱数量可以提高精度,但会降低单个token的出现频率,影响泛化能力

我在调试机器人抓取任务时就发现,离散动作经常导致机械臂末端出现"阶梯式"移动,动作不够平滑,影响操作精度。

3.2 连续动作表示的优势

OpenVLA-OFT改用4层MLP(使用ReLU激活)作为动作头,直接将语言模型解码器的隐藏状态映射为连续动作值。这种设计带来了多方面改进:

  1. 动作预测精度更高:避免了离散化的信息损失
  2. 模型更紧凑:不再需要维护大型的离散动作词汇表
  3. 训练更稳定:连续目标的梯度信号更丰富

在实际部署中,连续动作表示使任务成功率进一步提升了5%。特别是在需要精细操作的任务中,比如将小物件放入特定位置,连续动作的优势更加明显。

3.3 实现细节

OpenVLA-OFT的连续动作MLP头结构如下:

ContinuousActionHead(
    (layers): Sequential(
        (0): Linear(in_dim, hidden_dim)
        (1): ReLU()
        (2): Linear(hidden_dim, hidden_dim) 
        (3): ReLU()
        (4): Linear(hidden_dim, action_dim)
    )
)

这个相对简单的结构却能有效建模连续动作空间,证明了大规模预训练VLA模型强大的表征能力。我在复现这个设计时发现,预训练阶段学习到的丰富视觉-语言表征,使得微调阶段只需要一个轻量级MLP就能实现精确的动作预测。

4. L1回归目标:简单却高效的优化策略

4.1 三种学习目标的对比

OpenVLA-OFT论文中比较了三种微调目标:

  1. 下一个token预测(传统方法):使用交叉熵损失优化离散动作token
  2. L1回归:最小化预测动作与真实动作之间的平均绝对误差
  3. 条件去噪扩散:通过50步扩散过程建模动作分布

令人惊讶的是,实验结果显示L1回归这种简单方法在任务成功率上与更复杂的扩散方法相当,同时训练收敛速度和推理速度都更快。

4.2 L1回归的优势

L1回归之所以表现优异,我认为主要有三个原因:

  1. 计算效率高:只需要单次前向传播,不像扩散方法需要50步去噪
  2. 训练稳定:L1损失对异常值不如L2损失敏感
  3. 与大规模预训练模型配合良好:OpenVLA的7B参数已经具备强大表征能力

在实际应用中,L1回归的收敛速度比扩散方法快2-3倍。这意味着开发者可以用更少的计算资源完成模型微调,大大降低了实验成本。

4.3 实现要点

OpenVLA-OFT的L1回归实现有几个关键细节值得注意:

  1. 动作归一化:将所有动作维度标准化到[-1,1]范围
  2. 损失加权:对不同动作维度可能采用不同权重
  3. 梯度裁剪:防止大梯度影响训练稳定性

代码实现大致如下:

def l1_loss(pred_actions, gt_actions):
    # pred_actions: [batch_size, action_dim]
    # gt_actions: [batch_size, action_dim] 
    abs_error = torch.abs(pred_actions - gt_actions)
    return torch.mean(abs_error)

5. 实际应用与性能表现

5.1 LIBERO基准测试结果

在LIBERO模拟基准测试中,OpenVLA-OFT创下了97.1%的平均成功率记录,显著超过了微调后的OpenVLA策略(76.5%)和π0策略(94.2%)。具体到各个任务套件:

  • LIBERO-Spatial:98.3%
  • LIBERO-Object:96.7%
  • LIBERO-Goal:96.5%
  • LIBERO-Long:97.0%

这些结果证明了OpenVLA-OFT在不同空间布局、物体类型和任务目标上的强大泛化能力。

5.2 ALOHA真实机器人实验

在更具挑战性的ALOHA双臂机器人实验中,OpenVLA-OFT+(加入了FiLM模块)展现了卓越的性能:

  1. 折叠短裤任务:92%成功率
  2. 折叠T恤任务:88%成功率
  3. 将X舀入碗中:85%成功率
  4. 将X放入锅中:83%成功率

特别值得注意的是,尽管OpenVLA的预训练数据仅包含单臂机器人演示,但通过OpenVLA-OFT微调后,它能成功适应双臂操作任务,这体现了该方法的强大适应能力。

5.3 推理效率对比

模型推理效率是工业应用的关键指标。在ALOHA实验配置下(处理三张224×224图像和14维机器人状态),各方法的性能对比:

方法参数量吞吐量(Hz)延迟(ms)
OpenVLA(原始)7.5B1.8543
OpenVLA-OFT+7.5B77.9321
RDT-1B1.2B84.1297
π03.3B91.5273

虽然OpenVLA-OFT+的参数量最大,但得益于并行解码设计,其吞吐量接近轻量级的RDT-1B,远高于原始OpenVLA。这证明算法创新可以弥补模型规模的劣势。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐