OpenVLA & OpenVLA-OFT 技术讲解

1. 理解

OpenVLA 是一个开源的机器人 Vision-Language-Action 模型:输入图像和自然语言指令,直接输出机器人动作。

OpenVLA-OFT 是在 OpenVLA 基础上的 优化微调方案:重点解决原版 OpenVLA 推理慢、动作离散化精度有限、多相机/本体状态接入不够灵活的问题。


2. OpenVLA 解决痛点

传统机器人策略通常是:

text 复制代码
相机图像 / 状态
    ↓
感知模型
    ↓
任务规划
    ↓
动作策略
    ↓
机器人控制

问题是每个任务、每种机器人、每个场景都要单独训练或调参。

OpenVLA 的目标是把它压成一个统一模型:

text 复制代码
图像 + 语言指令
    ↓
VLA 大模型
    ↓
机器人动作

例如:

text 复制代码
输入:
  图像:桌面场景
  指令:"put the corn into the pot"

输出:
  机器人末端执行器动作:
  Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper

OpenVLA 官方介绍它是 7B 参数开源 VLA ,基于 Open X-Embodiment 数据集中的 970k 机器人轨迹训练,可以控制多种机器人,并支持通过参数高效微调适配新机器人。(OpenVLA1)


3. OpenVLA 架构

OpenVLA 可以理解成:

text 复制代码
RGB 图像
   ↓
视觉编码器:SigLIP + DINOv2
   ↓
视觉特征 projector
   ↓
Llama-2 7B 语言模型
   ↓
动作 token
   ↓
反归一化为机器人动作

官方说明中,OpenVLA 由三个核心部分组成:融合视觉编码器,包含 SigLIP 和 DINOv2;把视觉特征映射到语言模型输入空间的 projector;以及用于预测 tokenized actions 的 Llama-2 7B backbone。(OpenVLA1)

3.1 输入

典型输入包括:

text 复制代码
image: 当前相机图像
prompt: "In: What action should the robot take to {instruction}?\n Out:"

官方示例里,模型通过 HuggingFace AutoProcessorAutoModelForVision2Seq 加载,输入图像和 prompt 后调用 predict_action() 输出动作。(GitHub2)

3.2 输出

原版 OpenVLA 输出的是 离散动作 token

大致流程是:

text 复制代码
连续动作
   ↓
归一化
   ↓
每个动作维度离散成 256 个 bin
   ↓
作为语言 token 预测
   ↓
解码回连续动作

OpenVLA-OFT 论文明确指出,原版 OpenVLA 会把每个动作维度归一化后均匀离散到 256 bins,这种方式方便复用 VLM 的 token 预测机制,但会损失细粒度动作信息。(arXiv3)


4. OpenVLA 的训练方式

OpenVLA 本质上是把机器人动作学习改造成类似语言模型的预测问题:

text 复制代码
图像 patch embedding + 语言 token
    ↓
Transformer decoder
    ↓
动作 token 序列

训练目标类似:

text 复制代码
给定图像和指令,预测专家示范动作 token

可以理解为大规模行为克隆:

text 复制代码
robot demonstration dataset
    ↓
(image, instruction, action)
    ↓
supervised fine-tuning / behavior cloning

OpenVLA 官方代码支持 RLDS 数据格式、Open X-Embodiment 数据混合、FSDP、Flash-Attention,以及 full / partial / LoRA 等微调方式。(GitHub2)


5. OpenVLA 的主要问题

原版 OpenVLA 很有意义,但工程落地有几个明显问题。

5.1 自回归动作生成慢

原版 OpenVLA 像语言模型一样一个 token 一个 token 地生成动作。

例如 7-DoF 动作:

text 复制代码
a1 → a2 → a3 → a4 → a5 → a6 → a7

这意味着一次动作预测需要多次 decoder 计算。

对机器人高频控制来说,这很不友好。

5.2 离散动作精度有限

连续动作被压成 256-bin token:

text 复制代码
真实动作:0.03742
离散 bin:第 k 档
还原动作:0.036xx 或 0.038xx

对桌面抓取、双臂操作、精细插入等任务,动作量化误差会影响成功率。

5.3 单图像输入不够

很多真实机器人需要:

text 复制代码
第三视角相机
腕部相机
机器人关节状态
夹爪状态
历史状态

原版 OpenVLA 主要是单图像输入形式,扩展到多相机和 proprioception 不够自然。OFT 论文也指出,原始 OpenVLA 处理单相机视角,而一些机器人需要多视角和额外机器人状态。(arXiv3)


6. OpenVLA-OFT 意义

OpenVLA-OFT = OpenVLA + Optimized Fine-Tuning recipe

它不是简单 LoRA,也不是单纯量化,而是围绕 VLA 微调设计的一套优化方案。

核心目标:

text 复制代码
更快推理
更高成功率
更适合连续机器人控制
更容易接入多相机 / proprioception

论文中总结 OFT 包含三个关键组件:

text 复制代码
1. parallel decoding + action chunking
2. continuous action representation
3. L1 regression objective

这些组件共同提升了推理效率、任务表现和输入输出灵活性。(arXiv3)


7. OpenVLA-OFT 核心创新

7.1 Parallel Decoding:并行动作解码

原版 OpenVLA:

text 复制代码
token1 → token2 → token3 → token4 → token5 → token6 → token7

OpenVLA-OFT:

text 复制代码
[action slot 1, action slot 2, ..., action slot N]
        ↓
一次 forward 同时预测

OFT 论文说明,parallel decoding 会让模型接收空 action embeddings,并把 causal attention mask 换成 bidirectional attention,从而一次 forward 同时预测所有动作。(arXiv3)

工程意义很直接:

text 复制代码
原版:
  一个动作维度一个动作维度生成

OFT:
  一次 forward 出完整动作,甚至一整段动作 chunk

7.2 Action Chunking:动作块预测

原版:

text 复制代码
t 时刻输入图像 → 输出 t 时刻动作
t+1 时刻输入图像 → 输出 t+1 时刻动作

OpenVLA-OFT:

text 复制代码
t 时刻输入图像
    ↓
一次输出未来 K 步动作
    ↓
[a_t, a_t+1, a_t+2, ..., a_t+K-1]

这叫 action chunking

例如 chunk size = 8:

text 复制代码
一次模型推理 → 输出未来 8 步动作

OFT 论文指出,parallel decoding 可以自然扩展到 action chunking:插入更多空 action embeddings 后,模型可以一次 forward 预测多个未来时间步动作。(arXiv3)

这对机器人很重要:

text 复制代码
模型不用每个控制周期都跑一次
控制器可以缓存未来动作序列
推理延迟对控制频率影响变小

7.3 Continuous Action:连续动作输出

原版 OpenVLA:

text 复制代码
连续动作 → 256-bin 离散 token → 预测 token → 还原连续动作

OpenVLA-OFT:

text 复制代码
Transformer hidden state
    ↓
MLP action head
    ↓
连续动作值

论文中说,OFT 用 MLP action head 替代 decoder 的输出 embedding 层,直接把最后一层 hidden states 映射成连续动作,并用 L1 loss 训练。(arXiv3)

这对精细控制更友好:

text 复制代码
离散 token:
  适合复用 LLM 生成机制

连续动作:
  更适合机器人控制

7.4 L1 Regression:简单但有效的动作回归目标

OFT 没有默认采用复杂 diffusion policy,而是使用:

text 复制代码
loss = |pred_action - gt_action|

也就是 L1 回归。

论文对比了 L1 regression 和 diffusion objective,指出 L1 回归在保持并行解码效率的同时能提升动作精度;diffusion 更复杂,需要多步去噪,推理延迟更高。(arXiv3)

在 LIBERO 测试中,OFT 的 continuous action + L1 regression 版本达到 109.7 Hz action generation throughput ,而原始 OpenVLA 是 4.2 Hz;这是 A100 上针对 7D 动作的测量结果。(arXiv3)


7.5 多图像 + Proprioception 输入

OpenVLA-OFT 支持更复杂的输入:

text 复制代码
第三视角图像
腕部相机图像
机器人 proprioception
语言指令

OFT 论文描述了它的统一输入方式:每个相机视角经过 OpenVLA dual vision encoder 提取 patch embeddings,再映射到语言 embedding 空间;机器人状态也通过 projector 映射,然后与视觉特征和语言 token 一起拼接输入 decoder。(arXiv3)

这对真实机器人非常关键。

例如双臂 ALOHA:

text 复制代码
cam_3rd_person
cam_left_wrist
cam_right_wrist
joint_state
gripper_state
language_instruction
    ↓
OpenVLA-OFT+
    ↓
left_arm_action_chunk + right_arm_action_chunk

7.6 OFT+:加入 FiLM 增强语言 grounding

OpenVLA-OFT+ 是在 OFT 基础上加入 FiLM

FiLM 的作用是让语言指令更强地调制视觉特征。

例如桌上有多个物体:

text 复制代码
"put the green pepper into the pot"
"put the yellow corn into the pot"

如果模型视觉能力强但语言 grounding 不够,就可能抓错目标。

OFT 论文中说明,FiLM 会把任务描述的语言 embedding 投影成 scale / shift 向量,对视觉特征做仿射调制,从而增强模型对语言输入的注意。(arXiv3)

官方项目页也说明,OFT+ 在双臂 ALOHA 上用于高频语言驱动控制,并与 π₀、RDT-1B、ACT、Diffusion Policy 等方法进行了对比。(Fine-Tuning Models4)


8. OpenVLA vs OpenVLA-OFT 对比

维度 OpenVLA OpenVLA-OFT
定位 开源 VLA 基座模型 OpenVLA 的优化微调方案
模型规模 7B 基于 OpenVLA 7B
动作表示 离散 action tokens 连续动作
动作生成 自回归生成 并行解码
控制方式 单步动作预测为主 动作 chunk 预测
损失函数 next-token / cross entropy L1 regression
多相机输入 原生较弱 支持多图像输入
proprioception 需要额外适配 支持 proprio projector
推理速度 较慢 显著更快
适合场景 研究、零样本/少样本机器人控制 高频控制、双臂操作、真实机器人微调

OpenVLA-OFT 论文报告:在 LIBERO 四个任务套件上,OpenVLA 平均成功率从 76.5% 提升到 97.1% ,动作生成吞吐提升 26x。(arXiv3)


9. 工程部署视角

9.1 推荐系统架构

对真实机器人,不建议把 OpenVLA 直接塞进低层控制循环。

更合理的是:

text 复制代码
ROS2 / Robot Runtime
    │
    ├── camera node
    ├── proprioception node
    ├── language command node
    │
    ▼
VLA policy server
    │
    ├── OpenVLA / OpenVLA-OFT
    ├── GPU inference
    └── action chunk output
    │
    ▼
action smoother / safety filter
    │
    ▼
robot controller

也就是:

text 复制代码
Jetson / Orin:
  负责相机采集、ROS2、传感器同步、安全控制

GPU server:
  跑 OpenVLA / OpenVLA-OFT 推理或微调

官方 OpenVLA 仓库也提供了 REST API serving 脚本,便于把模型接入已有机器人控制栈,从而避免强制要求机器人本体具备高算力。(GitHub2)


9.2 显存要求

OpenVLA-OFT 官方仓库给出的系统要求是:

text 复制代码
Inference:
  LIBERO 仿真任务约 16GB VRAM
  ALOHA 机器人任务约 18GB VRAM

Training:
  1~8 张 GPU
  27GB~80GB VRAM,取决于训练设置

(GitHub5)

OpenVLA 原版 LoRA 微调示例使用单张 A100 80GB;官方也说明可以在更小 GPU 上微调,但至少大约需要 27GB 显存并调整 batch size。(GitHub2)

所以对你的 Jetson Orin NX 16GB 场景,建议是:

text 复制代码
不推荐:
  Orin NX 单机直接跑完整 OpenVLA-OFT 高频控制

推荐:
  Orin NX 跑 ROS2 / 感知 / 安全控制
  远端 4090 / 5090 / A100 / L40S 跑 VLA policy server

10. 和 ACT / Diffusion Policy / π₀ / RDT 的关系

可以这样理解:

text 复制代码
ACT:
  小模型、模仿学习、动作 chunk,适合特定任务

Diffusion Policy:
  连续动作分布建模强,但多步采样慢

OpenVLA:
  VLM + 机器人动作,语义泛化强,但原版推理慢

OpenVLA-OFT:
  保留 OpenVLA 的语义能力,同时吸收 ACT 的 action chunk 思路,
  用连续动作 + L1 回归提升速度和控制精度

π₀:
  更偏新一代通用机器人策略,使用 flow matching

RDT:
  机器人 diffusion transformer 路线,偏大规模机器人策略建模

OpenVLA-OFT 项目页称,在 ALOHA 真实机器人实验中,fine-tuned VLAs 整体优于从零训练的 ACT 和 Diffusion Policy,其中 OpenVLA-OFT+ 平均表现最高。(Fine-Tuning Models4)


11. 针对做具身机器人 / Jetson Orin 最小 VLA 的启示

如果要做一个最小可运行 VLA 系统,不建议一开始就全量复现 OpenVLA-OFT。

更合理路线是:

阶段 1:先做 ACT / Diffusion Policy 基线

text 复制代码
输入:
  RGB 图像 + proprioception

输出:
  action chunk

目标:
  跑通数据采集、动作同步、ROS2 控制闭环

阶段 2:接入 OpenVLA 做离线 policy server

text 复制代码
相机图像 + 指令
    ↓
OpenVLA / OpenVLA-OFT server
    ↓
动作 chunk
    ↓
ROS2 action bridge

阶段 3:做任务级微调

数据格式建议设计成:

json 复制代码
{
  "image_primary": "cam_front/000001.jpg",
  "image_wrist": "cam_wrist/000001.jpg",
  "instruction": "pick up the red block and place it into the box",
  "proprio": [0.1, 0.2, 0.3, "..."],
  "action": [dx, dy, dz, droll, dpitch, dyaw, gripper]
}

阶段 4:引入 OFT 思路

重点实现:

text 复制代码
1. action chunk
2. continuous action head
3. L1 loss
4. multi-view image input
5. proprio projector
6. safety filter

12. 总结

OpenVLA 的价值是:

text 复制代码
把 VLM 的语义理解能力迁移到机器人动作控制

OpenVLA-OFT 的价值是:

text 复制代码
把 OpenVLA 从"能生成动作"优化成"更适合真实机器人高频控制"

最核心差异:

text 复制代码
OpenVLA = 图像 + 语言 → 自回归动作 token
OpenVLA-OFT = 图像/多图像 + 语言 + proprioception → 并行连续动作 chunk

对工程落地来说,OpenVLA-OFT 比原版 OpenVLA 更值得参考,尤其是它的:

text 复制代码
parallel decoding
action chunking
continuous action head
L1 regression
multi-camera input
proprioception projector
FiLM language grounding

参考链接:

1: https://openvla.github.io/ "OpenVLA: An Open-Source Vision-Language-Action Model"

2: https://github.com/openvla/openvla "GitHub - openvla/openvla: OpenVLA: An open-source vision-language-action model for robotic manipulation. · GitHub"

3: https://arxiv.org/html/2502.19645v1 "Fine-Tuning Vision-Language-Action Models: Optimizing Speed and Success"

4: https://openvla-oft.github.io/ "Fine-Tuning Vision-Language-Action Models: Optimizing Speed and Success"

5: https://github.com/moojink/openvla-oft "GitHub - moojink/openvla-oft: Fine-Tuning Vision-Language-Action Models: Optimizing Speed and Success · GitHub"

相关推荐
挖坑的张师傅1 小时前
方便 Mac 本机运行 e2b 的沙箱方案 e2b-local
人工智能·后端
生成论实验室1 小时前
认知芯片:让判断力在物理定律上运行——AI芯片的第三条路
人工智能·语言模型·机器人·自动驾驶·安全架构
浦信仿真大讲堂1 小时前
达索系统SIMULIA Abaqus 2026接触和约束的增强新功能介绍
人工智能·python·算法·仿真软件·达索软件
文艺倾年1 小时前
【强化学习】MDP、贝尔曼方程与CartPole 编程,20W字总结(二)
人工智能·软件工程·强化学习
ttt606_1 小时前
门店业绩上报系统功能拆解:门店业绩上报如何提高数据精确度与时效性?
大数据·人工智能
phltxy1 小时前
Spring AI 可观测性与 Zipkin 实战
java·人工智能·spring
ACP广源盛139246256731 小时前
GSV2221@ACP#DP 1.4 MST 多屏转换芯片,物理 AI 多模态交互的视觉中枢
大数据·人工智能·嵌入式硬件·gpt·spark
HIT_Weston1 小时前
117、【Agent】【OpenCode】项目配置(根目录&子包配置)
人工智能·agent·opencode
多年小白1 小时前
【周末消息汇总】2026年6月12日-14日——放量突破,明日开盘策略
人工智能·ai
RSTJ_16251 小时前
PYTHON+AI LLM DAY SEVENTY-SIX
人工智能