跳转至

OpenVLA-OFT: Fine-Tuning Vision-Language-Action Models — Optimizing Speed and Success

论文阅读笔记 — 用于后续讨论的概览


1. 基础信息

  • 题目: Fine-Tuning Vision-Language-Action Models: Optimizing Speed and Success
  • 作者: Moo Jin Kim, Chelsea Finn, Percy Liang — Stanford University
  • arXiv 编号: 2502.19645 (submitted 2025-02)
  • 项目页: https://openvla-oft.github.io
  • 关键词: VLA finetuning, parallel decoding, action chunking, L1 regression, FiLM, ALOHA bimanual, LIBERO

OpenVLA-OFT+ on ALOHA Figure 1:OpenVLA-OFT+ 用 OFT 配方(parallel decoding + action chunking + 连续动作 + L1 regression + FiLM)把单臂 7B OpenVLA 适配到双臂 ALOHA 上跑 25 Hz 高频控制——折衣物、长程灵巧任务、语言 grounding 全过关,且性能超过专门用 bimanual 数据预训练的 π₀ 和 RDT-1B。

2. 文章介绍

2.1 解决的领域和问题

VLA 的 finetune 配方。OpenVLA / π₀ / RDT 这些大 VLA 在 OXE 之类的混合数据集上预训练之后,下游用户必须 finetune 到自己的机器人/任务上才能用。但 finetune 时到底该用什么 action decoding 方式、什么 action 表示、什么 loss——这个 design space 几乎没人系统对比过,大多数工作直接沿用 base model 的预训练配方(OpenVLA 用 discrete-token autoregressive、π₀ 用 flow matching),但这未必是 finetune 阶段最优。

OFT 想做的事:以 OpenVLA 为 base,系统对照 3 个轴——decoding strategy(autoregressive vs parallel)× action representation(discrete vs continuous)× learning objective(next-token vs L1 regression vs diffusion)——得到一个新的 finetune 配方,让 OpenVLA 不仅速度快 26×,性能也反超 π₀ 和 RDT-1B(用别人的 base model 跑别人擅长的任务)。

2.2 Motivation

OpenVLA 的根本短板:autoregressive 离散 token 生成太慢(3-5 Hz),没法上 25-50 Hz 的双臂高频控制;而且 chunk 一次 7K 个 token(K=action chunk size)的延迟在双臂上接近 1 秒,根本不能用。

之前的 fix(FAST 等更好的 tokenizer)能加速 2-13×,但 chunk 间延迟仍然 ~750ms,对 25Hz 双臂仍不够。

OFT 的洞察:不要修补 autoregressive,直接换成 parallel decoding。把因果 mask 改双向、把 7D 动作的输入位置全填空 embedding、一次 forward 出整个 action chunk。这条路的代价是失去 autoregressive 的「next-token 概率链」表达能力,但作者用实验证明在 finetune 场景下毫无性能损失,反而更好

2.3 之前工作的问题

类别 代表工作 缺陷
Autoregressive discrete VLA finetune OpenVLA (LoRA / full FT) 3-5 Hz 推理;双臂任务表现不可靠
Better tokenizer FAST、MiniVLA 加速 2-13× 但 chunk 间仍 750ms 延迟
Diffusion VLA π₀、RDT-1B 多步去噪,部署成本高;configure 复杂
Diffusion Policy (scratch) DP 没用 VLM 先验,对多任务/语言 grounding 弱

2.4 论文解决方案(一句话)

把 OpenVLA 的 autoregressive 离散 token + next-token CE 配方换成 parallel decoding(双向 attention 一次出整个 chunk)+ continuous action(MLP head 直接出连续值)+ L1 regression loss(再可选叠 FiLM 加强语言 grounding),LIBERO 平均 76.5%→97.1%、推理速度 26× 提升、ALOHA 双臂上反超 π₀ 和 RDT-1B 最多 15 个点(绝对)。

2.5 与前序工作的关系

  • Base model 是 OpenVLA(同一作者 Moo Jin Kim)——本质上是同一作者自我修订之前的设计。
  • Parallel decoding 思路来自 NLP(BERT/BART 那类 non-autoregressive 生成),但 VLA 里第一个系统验证。
  • Action chunking 从 ACT(Zhao et al. 2023)借;L1 regression 也是 ACT 的目标函数。
  • Diffusion 对照 复刻 Diffusion Policy(Chi et al. 2023),50 步训练,inference 时 DDIM 可调步数。
  • FiLM 用 Perez et al. 2018 的 feature-wise linear modulation,把语言 embedding 投成 (γ, β) 调制视觉特征。
  • ALOHA 实验和 ACT 原 setup 一致(25Hz 控制频率从原 50Hz 降一半为了加速训练)。

3. 方法介绍

3.1 三个 design 维度的实验对照

AR vs parallel, discrete vs continuous Figure 2:OFT 研究的两个核心维度。:autoregressive(每 token 依赖前一个 token,causal mask,D 次串行 forward)vs parallel decoding(bidirectional attention,单 forward 出全部 action)。:discrete action token(256-bin 离散 + softmax + next-token CE)vs continuous action(MLP head 直接出连续值 + L1 / diffusion loss)。原 OpenVLA 配方 = 左侧 + 右上。

三轴: 1. Action generation strategy:autoregressive vs parallel decoding; 2. Action representation:discrete (256 bins) vs continuous(连续值); 3. Learning objective:next-token CE / L1 regression / conditional diffusion。

3.2 Parallel decoding + action chunking

具体实现: - 输入:把 K 个时间步的「空 action embedding」插进 decoder 输入序列里; - mask:causal mask 改成 bidirectional(这些 empty embeddings 之间相互看,也看到 image + language); - 输出:一次 forward 出全部 KD 个 action 值(D=7 单臂或 14 双臂,K=8 LIBERO / 25 ALOHA)。

额外好处:parallel decoding 不只让 generation 加速 4×(不用 7 次 sequential pass),加上 chunking 后吞吐量 26×;且 chunking 本身已被证明(liu2024bidirectional, ross2011reduction)能捕捉时序依赖、减少 compounding error,所以速度和性能双赢

3.3 连续动作头 + L1 regression

把 decoder 最后一层 hidden state 直接过一个 MLP action head 出 K×D 维连续动作,loss 是 L1:

L = mean |a_pred - a_gt|

(替代离散 256-bin + softmax + CE)

也对照了 conditional diffusion(DDPM 50 步训练 + DDIM 推理):性能持平 L1(LIBERO-Long 91.1% vs 90.7%),但 inference 慢非常多(50 步 DDIM latency 1.9 秒 / 1 步 0.07 秒但成功率掉到 0%)。

结论:在 7B OpenVLA 这种大主干上,L1 regression 就够,diffusion 的多模态表达能力收益边际

3.4 额外输入处理

为了上 ALOHA(3 个相机、14D 关节状态),加了: - 腕部相机 + 顶部相机 + 左 wrist:每个走 OpenVLA 原 DINOv2+SigLIP,patch embedding 共享 projector(256 patch × 3 view = 768 patch token); - Proprioception:14D 关节角过单独 MLP 投到 1 个 embedding; - 所有 token 按序列拼接送入 Llama 2。

3.5 FiLM 加强语言 grounding(OFT+)

ALOHA 上 OpenVLA-OFT 单独跑发现语言 grounding 失效——"scoop raisins" vs "scoop almonds" 在视觉相似时会忽略语言指令。原因是多视角输入下视觉 token 数量爆炸(768 个 patch),语言 token 被淹没。

FiLM 修复: - 把语言 token 平均成 mean embedding x; - 投影成 (γ, β); - 在每个 ViT block 的 self-attention 之后、FFN 之前,对 patch embedding 做 F̂ = (1+γ) ⊙ F + β

关键细节:γ, β 是 D_ViT 维(hidden-dim 级别)而非 token-level——每个 hidden unit 一个 scale/shift,跨所有 patch 共享(类似 CNN 里 FiLM 跨空间共享 channel-wise 参数)。这一选择实证比 token-level FiLM 强很多。

OFT + FiLM = OFT+

3.x Implementation Details

项目 LIBERO ALOHA
Action chunk K 8 25
Action dim D 7(单臂) 14(双臂)
输入相机 1 第三视角(+ optional wrist) 1 顶部 + 2 腕部
Proprio optional 14D 关节
Finetune LoRA LoRA
训练步 50-150K(L1)/ 100-250K(diffusion) 50-150K
Batch 64-128 (8 A100/H100) 32 (8 A100/H100-80GB)
推理 throughput 109.7 Hz (LIBERO L1) / 71.4 Hz (LIBERO+wrist) 77.9 Hz
推理 latency 0.073s 0.321s(3 相机更长)
控制频率 25 Hz

4. 结果对比

4.1 LIBERO 主表(96.1%-97.1% SOTA)

输入 / 设定 方法 Spatial Object Goal Long 平均
第三视角 + 语言 Diffusion Policy (scratch) 78.3 92.5 68.3 50.5 72.4
Octo (FT) 78.9 85.7 84.6 51.1 75.1
OpenVLA (FT) 84.7 88.4 79.2 53.7 76.5
OpenVLA + PD+AC 91.3 92.7 90.5 86.5 90.2 (+13.7)
OpenVLA + PD+AC + Cont-Diffusion 96.9 98.1 95.5 91.1 95.4
OpenVLA-OFT (PD+AC+Cont-L1) 96.2 98.3 96.2 90.7 95.3
3-view + wrist + proprio π₀ + FAST (FT) 96.4 96.8 88.6 60.2 85.5
π₀ (FT) 96.8 98.8 95.8 85.2 94.2
OpenVLA-OFT (Cont-L1 + wrist+proprio) 97.6 98.4 97.9 94.5 97.1

核心读法: - 单独加 PD+AC 就把 OpenVLA 从 76.5% 拉到 90.2%(+13.7pp)——chunking 是大头; - 连续动作(L1 或 diffusion)再加 5pp; - L1 vs Diffusion 几乎打平(95.3 vs 95.4); - 加 wrist 相机 + proprio 再 +2pp; - 97.1% 完全反超 π₀ 的 94.2%——而 π₀ 是更新更大 base 模型 + flow matching 训练。

4.2 LIBERO 推理效率

方法 Throughput (Hz) Latency (s) LIBERO-Long SR
OpenVLA (原) 4.2 0.240 53.7
+ PD only 15.9 0.063
+ PD+AC 108.8 0.074 86.5
+ PD+AC, Cont-L1 109.7 0.073 90.7
+ PD+AC, Diffusion (T=50) 4.2 1.907 91.1
+ PD+AC, Diffusion (T=10) 19.3 0.415 91.0
+ PD+AC, Diffusion (T=5) 35.1 0.228 90.0
+ PD+AC, Diffusion (T=1) 109.4 0.073 0.0

Diffusion T=10 时仍能保住 91%,但 latency 是 L1 的 5.7×。L1 在 7B 主干上是 Pareto 最优——速度匹敌 + 性能持平。Diffusion T=1 直接崩到 0,说明它的多步去噪是真必要不能省。

4.3 ALOHA 双臂

ALOHA results Figure 3:ALOHA 上四个任务(fold shorts、fold shirt、scoop X into bowl、put X into pot)。OpenVLA-OFT+(最右橙色)最高,超过专门双臂预训过的 RDT-1B 和 π₀。fold shirt 这个长程接触丰富任务上优势最明显。

ALOHA language grounding Figure 4:语言 grounding(接近正确目标物体的成功率)。ACT/DP 接近随机猜(~33%),RDT/π₀ 中等,OpenVLA-OFT+ 最强。但去掉 FiLM 后 OFT 也掉到 33% — FiLM 是必须的。

方法 平均聚合分数 备注
ACT (scratch) 最低 动作不精细
Diffusion Policy (scratch) 中等 put X into pot 上 scaling 差
RDT-1B (FT) 中等 语言好但 closed-loop 反馈差(不会修错)
π₀ (FT) 较强 动作流畅、能 recover from grasp failure
OpenVLA-OFT+ 最高 + 15pp over best baseline

ALOHA 推理:OFT+ 77.9 Hz、π₀ 291.6 Hz、ACT 432.8 Hz——OFT+ 比 ACT/DP/π₀ 慢但仍远超 25Hz 控制要求,所以这点速度差异不重要。

4.4 关键消融

Configuration LIBERO-Long 备注
Full OFT recipe 94.5 wrist+proprio version
- 去 OpenVLA pretrain(直接 FT Prismatic) -5.2pp base model 预训仍有用
- 去 FiLM(ALOHA scoop/put 任务) 语言 grounding 掉到 33% FiLM 必需

5. 引申问题 / 讨论

5.1 做得好的地方

  1. 三轴清晰的 ablation 设计(decoding × representation × objective)+ 逐步累积消融(PD+AC +13.7 → +Cont-L1 +5 → +inputs +2),让每个 design 选择的贡献定量可见。这种「先沿着主轴扫,再合成最优配方」的论文结构是 finetune 类研究的范式。
  2. Parallel decoding 是真本事:单独 PD(不加 chunking)就让 latency 从 240ms 降到 63ms(4×),且不掉点。这反驳了「autoregressive 表达能力更强所以应该串行」的直觉——在大模型 + 短序列 + finetune 场景下,bidirectional 一次出全部完全够用。
  3. L1 vs diffusion 在 7B 主干上几乎打平(95.3 vs 95.4)——挑战了 Octo / π₀ 的「VLA 必须用 diffusion」共识。原因是主干容量足够大时,简单 loss 就能模出多任务分布,diffusion 的多模态表达力收益边际。这是论文最重要的「common belief 被推翻」的实证发现。
  4. OpenVLA-OFT+ 反超 π₀ 和 RDT-1B——而后两者都用了 bimanual 预训数据,OpenVLA base 完全没见过双臂。这证明 「good finetune 配方 > 更大 / 更对齐的预训数据」,对工业部署是个重要信号(不一定要追最新最贵的 base model)。
  5. FiLM 的实现细节(hidden-dim level 而非 token-level)是一个真细节——naive 实现会失败。把这个细节写到方法里且实证消融了,比很多论文藏在 appendix 强。
  6. 诊断 RDT-1B 失败原因很犀利:rollout 显示 RDT 错过 bowl 后继续往空中倒——over-rely on proprio over visual。π₀ 反而能 recover from grasp failure。这种质性失败模式分析对理解 VLA 行为很有价值,超越了「平均成功率」一张数字图。
  7. 诚实承认 limitation:discrete vs continuous 在大主干上的优势可能依赖容量,pretrain 阶段是否能换成 OFT 配方未验证,多模态 demo 数据下 L1 可能不如 diffusion。

5.2 做得不够好的地方 / 值得质疑的地方

  1. "反超 π₀ 14.6%" 的 base model 比较不严格:π₀ 用 flow matching 训练、用更大更新的预训数据,OFT 用 OpenVLA(更老 base)+ 更优 finetune 配方。这两个变量纠缠——不能简单说"OFT 配方 > π₀ 配方",更准确的说法是"在 finetune 阶段 OFT 配方很强、能把弱 base 拉到反超强 base"。如果把 OFT 配方直接套到 π₀ 上呢?没做。
  2. LIBERO 是 simulation benchmark,且任务是分散单任务 finetune:每个 task suite 独立 finetune 50-150K 步,500 demo——这是 per-suite finetune 而非真 multi-task。π₀ / RDT 的多任务 generalist 优势在这种 setup 下被中和。LIBERO 96% 是真高但不是 generalist 上限。
  3. ALOHA 只 4 个任务,且评估用主观 rubric 部分完成度评分:fold shorts / shirt 这种长程任务靠 rubric scoring 而非二元 success。论文承认有这个细节但没贴 rubric 设计的 inter-rater agreement,分数差距 15pp 的统计显著性偏弱。
  4. FiLM 失效模式分析有限:去 FiLM → 33% 语言 grounding(=随机选)证明 FiLM 在 ALOHA 必须,但LIBERO 上不用 FiLM 也 95%+。这个差异作者只在 Limitation 部分承认「源头不明」——但其实是因为 LIBERO 单一第三视角 vs ALOHA 三视角导致 visual token 数量差异,patch token 增多导致语言信号被稀释。这是个值得做 dedicated ablation 的发现,但论文没深挖。
  5. L1 vs Diffusion 的「打平」结论可能跟训练步数有关:diffusion 训了 100-250K 步("converge slower"),L1 只训 50-150K。两者比较的 budget 不匹配——如果 diffusion 训更久会不会再涨?没确认。
  6. 没和 FAST/MiniVLA 同台比较 throughput:论文反复说"OpenVLA-OFT 26× faster than OpenVLA",但 FAST 自身也号称对 OpenVLA 加速 5×、且保持 token-level VLA 的能力。OFT 把 throughput 跟原版 OpenVLA 比是低 bar——和 FAST 同台对比的话差距会缩窄。
  7. ALOHA 训练量被夸大成「fine-tuning」:fold shirt 30 demos、put X into pot 300 demos——后者已经是中等规模数据集了。把这叫 finetune 有点宽泛,更像 small-scale supervised learning + good initialization。
  8. L1 regression 对多模态 demo 的 limitation 是真问题但被淡化:作者在 Limitations 提了一句,但所有实验都是 focused single-strategy demo(人为收集),所以这个 limitation 在 benchmark 上看不到。实际部署里 demo 来自不同标注员/不同策略时,L1 的 mean-collapse 可能成为瓶颈。
  9. 27 epoch 训练数 + 50-150K 步 finetune:放在一起,OFT 总训练量并不小。论文标榜的「simpler than diffusion」主要是算法 simpler,训练成本并没省
  10. PD+AC 单独 +13.7pp 这个增益里 chunking 的贡献被低估:原 OpenVLA 没 chunking,加上 chunking 哪怕保留 autoregressive 也会大幅提升(因为减少 compounding error)。表里没有「autoregressive + chunking」这个中间格子来分离两个贡献。

5.3 值得继续探讨的方向

  • 把 OFT 配方反过来用到 π₀ 上:当前 π₀ 用 flow matching 训整套——如果把 finetune 阶段换成 OFT 的 PD+AC+L1,是不是 π₀ 性能再涨?这是 OFT 论文回避了的最大问题。
  • OFT 配方用于 pretraining:作者在 Limitations 承认这是未验证的。如果 pretrain 也用 L1 而非 flow matching/diffusion,能 scale 到 OXE 这种异构混合数据吗?我的直觉是不行(多模态需要 expressive head),但需要实证。
  • FAST + OFT 是否互补:FAST tokenizer 是 token-level 的加速,OFT 是 decoding-level 的加速——两个方向正交,理论上可以叠加?
  • L1 失效模式的实证:故意收集多模态 demo(同任务两种策略),看 L1 vs diffusion 的表现差距——这是论文该做但没做的硬实验。
  • 大规模 multi-task generalist:当前 per-suite finetune,能否在 OXE 全集上重新 multi-task pretrain?需要重新 launch base run,工程量大。
  • OFT 配方 + 双臂预训:OpenVLA-OFT+ 在 ALOHA 上反超 π₀ 是「弱 base + 强 finetune」赢「强 base + 弱 finetune」——如果把 OpenVLA base 也加上 bimanual 数据预训呢?大概率再加几个点。
  • FiLM 跟 cross-attention / language-attention 的对比:FiLM 是 multiplicative gating 的 cheap 实现,但 cross-attention 才是 LLM 标准。后续工作(π₀.₆ 的 advantage conditioning 是某种 FiLM 类似物)值得对照。

参考资源

  • 论文 PDF: paper.pdf
  • LaTeX 源码: source/
  • 项目页: openvla-oft.github.io
  • 关键相关论文:
    • OpenVLA (kim2024openvla) — base model,同作者前作;本库有 OpenVLA 笔记
    • ACT (zhao2023learning) — action chunking + L1 regression 的源头;ALOHA setup 来源
    • Diffusion Policy (chi2023diffusion) — 主要 baseline,连续动作 + diffusion 对照
    • π₀ / π₀-FAST (black2024pi0 / pertsch2025fast) — 主要竞争者;本库有 π₀ 笔记FAST 笔记
    • RDT-1B (liu2024rdt) — ALOHA 上的 bimanual 预训 baseline
    • FiLM (perez2018film) — 语言 grounding 模块
    • Octo (team2024octo) — 早期 baseline;本库有 Octo 笔记
    • MDT / Seer / DiT Policy — LIBERO 上的其他 SOTA