一句话定位

OpenVLA-OFT 不是一个新模型,而是一套**“优化微调”(Optimized Fine-Tuning, OFT)配方**:把自回归离散动作的 openvla 改造成”并行解码 + 动作分块 + 连续动作 + L1 回归”,一次前向就吐出整段动作 chunk。同样的 7B 底座、同样的 LoRA,仅靠换微调方式,就把 libero 四套件平均成功率从 76.5% 拉到 97.1%、动作生成吞吐提高 26×(8 步 chunk)到 43×(ALOHA 25 步 chunk),并在真实双臂 ALOHA 机器人上以 25 Hz 高频控制超过 pi0rdt-1b 等在双臂数据上预训练过的更”先进”的 VLA。作者的核心论断:微调配方本身可能比预训练数据覆盖更决定下游表现

背景与定位

范式:面向部署的 VLA 微调方法学。这篇论文属于”不动预训练、只优化 adaptation”的一支,与做新底座模型(openvlaoctopi0)的工作正交。作者 Moo Jin Kim(也是 openvla 一作)、Chelsea Finn、Percy Liang 想回答一个被忽视的实证问题:给定一个现成 VLA,把它迁到新机器人/新任务时,到底该怎么微调最好?

论文点名两条现实痛点:(1) openvla 原生的自回归离散 token 生成太慢(单臂 3–5 Hz),远低于高频双臂控制需要的 25–50+ Hz;(2) 自回归 VLA(无论 LoRA 还是全量微调)在双臂灵巧操作上表现不佳。此前的提速路线(MiniVLA 的向量量化、openvla 团队的 FAST DCT 压缩 tokenization)虽拿到 2–13× 加速,但仍受限于自回归的”逐 token 迭代”本质,chunk 间延迟大(FAST 约 750 ms)。另一条路是扩散/流匹配 VLA(rdt-1bpi0、TinyVLA),吞吐更高但训练慢、推理要多步去噪,且架构五花八门、说不清哪个设计真正起作用。

OFT 的定位是在这两条路之外,做受控消融:把 VLA 微调拆成三个正交设计维度——动作解码方式(自回归 vs 并行)、动作表示(离散 vs 连续)、学习目标(next-token vs L1 回归 vs 扩散)——逐一测其对成功率、推理效率、输入输出灵活性的影响,最后把最优组合固化成配方。它是继 openvla 之后被社区当作 VLA 微调基线广泛复现的工作(GitHub 1.3k star)。相关工作:动作分块思想来自 ACT,L1 回归借鉴 ACT,扩散变体对标 diffusion-policy,基准用 libero,预训练数据源 open-x-embodiment,大规模真机验证用 BridgeData V2

模型架构

Policy backbone = openvla 7B(约 7.5B 参数),底座沿用 Prismatic VLM:融合视觉编码器(SigLIP ViT-So400M + DINOv2 ViT-L,每张图各出 256 个 patch embedding 沿 channel 拼接)+ Llama-2 7B decoder + 3 层 MLP(GELU)视觉投影器。原生 OpenVLA 只吃单张第三人称图,输出 7 维(3 位置 + 3 姿态 + 1 夹爪)delta 末端位姿,表示为离散 token 串。

OFT 在不改预训练的前提下,对微调阶段做六处改造:

  1. 并行解码(parallel decoding):把因果注意力掩码换成双向注意力,输入换成”空动作 embedding”(仅位置编码不同),一次前向直接映射出整段动作,把 D 次串行 decoder 前向压成 1 次。
  2. 动作分块(action chunking):在 decoder 输入里多插空 embedding,chunk 大小 K 时一次前向出 KD 个动作。LIBERO 用 K=8,ALOHA 用 K=25,测试时执行完整 chunk 再重新查询(open-loop)。
  3. 连续动作表示:把 decoder 输出层换成 4 层 MLP(ReLU)动作头,直接把最后一层 hidden state 映射为归一化连续动作,绕开 256-bin 离散化的精度损失。
  4. 多视角 + 本体状态输入:多张相机图共享 SigLIP-DINOv2 编码器(第三人称 + 腕部相机,patch 从 256 翻到 512);低维本体状态(关节角、夹爪)过一个 2 层 MLP(GELU) 投影成 1 个额外 embedding。视觉/状态/语言 embedding 沿序列维拼接后一起进 decoder。
  5. 学习目标:主推 L1 回归(最小化预测与真值动作的平均 L1 距离);对照的扩散变体用 DDIM 采样、50 个扩散步、squared-cosine beta schedule、4 层噪声预测器(与 L1 头同架构),但推理要 50 步去噪,延迟高。
  6. (仅 OFT+)FiLM 语言接地:把任务语言 embedding 取平均,投影出 γ、β,对 SigLIP 与 DINOv2 两个 ViT 每个 block 的视觉特征做仿射调制 F̂ = (1+γ)⊙F + β。关键实现细节:γ、β 是 D_ViT 维(按 hidden 维、跨所有 patch 空间无关地调制),而非逐 patch 调制——逐 patch 会导致语言接地变差;插在自注意力之后、FFN 之前,每个 block 独立投影器。用 (1+γ) 而非 γ 是因为初始化时 γ、β 近零,保护预训练视觉激活。

可训练参数量(LoRA rank 32):LIBERO 配置约 279M(111M LoRA adapter + 151M 动作头 + 17M 本体投影器);ALOHA OFT+ 配置约 853M(111M LoRA + 269M 动作头 + 17M 本体 + 456M FiLM 投影器)。

数据

这是微调方法论文,用的是现成数据集,规模都不大(相对 openvla 预训练的 100 万条轨迹):

  • libero 仿真基准:四套件 LIBERO-Spatial / Object / Goal / Long,各 10 个任务、500 条专家示范(Franka Panda 单臂,含相机图、机器人状态、任务标注、delta 末端位姿动作)。按 openvla 做法过滤失败示范 + 剔除近零幅度动作(论文表中”modified dataset”),每套件独立 LoRA 微调。
  • 真实 ALOHA 双臂机器人:四个自采任务,示范量刻意很小——“fold shorts” 20 条、“fold shirt” 30 条、“scoop X into bowl” 45 条(每种配料 15 条)、“put X into pot” 300 条(每物 100 条)。episode 长 400–1250 步(16–50 秒)。动作是 14 维目标绝对关节角,25 Hz(从原生 50 Hz 降频以加速训练)。作者坦言 “put X into pot” 的 300 条是早期为排查语言接地问题堆的,实际不必这么多。
  • BridgeData V2 大规模真机 scaling 验证50,365 条真实 WidowX 示范(是四套 LIBERO 合起来的 25×),验证 OFT 能否吃更大更杂的真机数据。

作者刻意用”小数据 + LoRA”来对标真实从业者迁移场景,而非拼数据规模。

训练方法

目标函数:连续动作用 L1 回归(median-mode 回归,天然对示范噪声有正则/平滑作用);离散对照用 next-token 交叉熵;扩散对照用条件去噪。三者在受控实验里逐一比较。

微调策略:一律 LoRA(rank 32),因为下游数据集小(500 条 vs 预训练 1M)。不做模型分片,直接 DDP 把 batch 切到多卡。收敛判据统一为归一化 L1 loss < 0.01

关键超参(LIBERO):8×A100/H100(80GB),LR 5e-4(100K 步后降到 5e-5),总 batch 64(每卡 8),训练 50K–150K 步(除 LIBERO-Goal 用 50K,其余用 150K),图像 224×224,无观测历史,图像增强用 90% random crop + color jitter。ALOHA OFT+:总 batch 32(每卡 4),50K 步后降 LR(因 ALOHA 数据更小),chunk K=25,开 FiLM。

核心消融结论(LIBERO,绝对成功率):

  • 并行解码 + 动作分块(PD&AC):相比自回归 OpenVLA +14%,其中 LIBERO-Long 提升最猛(动作分块捕捉时序依赖、减少复合误差)。
  • 连续动作相比离散:再 +5%(预测更精细)。
  • L1 回归 ≈ 扩散(95.3 vs 95.4 平均):高容量 OpenVLA 即便用简单 L1 也能建模多任务动作分布,而 L1 训练收敛更快、推理更省。
  • 消融 OpenVLA 机器人预训练表征(直接拿 Prismatic VLM 上 OFT):掉 5.2%,证明 OXE 预训练表征即便换了架构/算法仍有用。
  • FiLM 在 ALOHA 是刚需:去掉 FiLM,两个语言依赖任务的语言遵循率跌到 33%(等于随机猜三选一);但在 LIBERO 差别很小(微调策略本身已有较好语言接地)。

Infra(训练 / 推理工程)

  • 训练硬件:每个训练 job 用 8× A100 或 H100(80GB),跑 50K–150K 步,耗时 1–2 天(视数据集大小)。用 LoRA 而非全量微调,故无需模型分片,纯 DDP。卡少可用梯度累积,只是更慢,官方推荐 4 或 8 卡。GPU 时数量级:单个训练 job 约 8 卡 × 1–2 天 = 8–16 GPU·天 ≈ 192–384 GPU·小时(论文未直接给 GPU-hours,此为按披露推算)。
  • 训练显存(bfloat16,官方 FAQ):最小 25.6 GB(LIBERO 单图、chunk 8、batch 1)/ 38.6 GB(ALOHA 三图 + FiLM、chunk 25、batch 1);推荐 44.1 GB(LIBERO 单图 batch 8/卡)/ 62.5 GB(LIBERO 双图 + 本体 batch 8/卡)/ 73.5 GB(ALOHA batch 4/卡)。
  • 推理硬件 / 显存:单卡即可——LIBERO 单图 15.9 GB、双图 + 本体 16.2 GB、ALOHA 三图 + FiLM 18.0 GB
  • 推理吞吐 / 延迟(A100,100 次查询平均,7 维动作):base OpenVLA 4.2 Hz / 0.24 s → +PD 15.9 Hz → +PD&AC 108.8 Hz → +PD&AC+Cont-L1 109.7 Hz / 0.073 s26× 加速);加腕部图 + 本体后 71.4 Hz / 0.112 s。扩散变体因 50 步去噪,延迟高,但靠并行解码 + 分块,整段 episode 完成速度仍与自回归基线相当。
  • ALOHA 推理(A100,三张 224×224 图 + 14 维状态,K=25):OpenVLA 原生仅 1.8 Hz / 0.543 s → OpenVLA-OFT+ 77.9 Hz / 0.321 s43× 吞吐)。对照模型体量/速度:ACT 84M @ 432.8 Hz、Diffusion Policy 157M @ 267.4 Hz、RDT-1B 1.2B @ 84.1 Hz、π0 3.3B @ 291.6 Hz(JAX 实现,其余 PyTorch)、OpenVLA 7.5B。OFT+ 虽比 RDT-1B 大 7×,吞吐(77.9)却逼近它(84.1),因为它单次前向出动作、无需多步去噪。

评测 benchmark

libero 四套件成功率(%),OpenVLA-OFT 均为本文实测,每套件 500 试次(10 任务 × 50 episode):

方法(输入=第三人称图 + 语言)SpatialObjectGoalLong平均
diffusion-policy(scratch)78.392.568.350.572.4
octo(fine-tuned)78.985.784.651.175.1
DiT Policy84.296.385.463.882.4
openvla(fine-tuned)84.788.479.253.776.5
OpenVLA + PD&AC91.392.790.586.590.2
OpenVLA + PD&AC, Cont-Diffusion96.998.195.591.195.4
OpenVLA-OFT(PD&AC, Cont-L1)96.298.396.290.795.3

加”腕部图 + 本体状态”后(modified dataset):

方法SpatialObjectGoalLong平均
π0 + FAST96.496.888.660.285.5
pi0(fine-tuned)96.898.895.885.294.2
OpenVLA-OFT(+额外输入)97.698.497.994.597.1

即用更弱底座(比 pi0 预训练数据少、无流匹配),OpenVLA-OFT 仍刷到 97.1% 的 LIBERO 新 SOTA,超过 pi0、MDT、Seer、DiT Policy、octodiffusion-policy

真实 ALOHA 四任务(部分完成度评分,图示):微调 VLA 全面胜过从头训练基线;OpenVLA-OFT+ 平均分最高。定性观察:RDT-1B 语言遵循好但闭环纠错弱(漏放碗后仍往空处倒料);π0 反应性最好、能重试抓取,是最强基线;OpenVLA-OFT+ 任务执行与语言遵循双第一。这尤其反直觉——OpenVLA 底座只见过单臂数据,RDT-1B/π0 分别在 6K 条 / 8K 小时双臂数据上预训练过。

BridgeData V2 scaling:5 万条真机数据上,OpenVLA-OFT 平均 69.2% vs 公开 OpenVLA checkpoint 65.8%,证明 OFT 能吃更大更杂的真机数据。单策略同时拟合 LIBERO 四套件也不掉点。

创新点与影响

贡献:把”VLA 怎么微调”从工程直觉变成受控消融结论,提出并验证 PD + AC + 连续动作 + L1 回归四件套配方(可选 FiLM),一举同时改善速度、成功率、输入输出灵活性且保持算法简单。核心洞见有二:(1) 并行解码 + 动作分块不只是提速,还实打实涨成功率(+14%),因为分块能捕捉时序依赖、抑制复合误差;(2) 简单 L1 回归配高容量底座 ≈ 扩散,而训练/推理都更快——项目页进一步用”扩散会忠实复现次优示范、L1 靠有限表达力天然滤噪committing 到 median mode”来解释为何 L1 反而更鲁棒(π0 扩散把勺子插太深复现坏示范,OFT+ 用 L1 插到理想深度 100% 成功)。

改变了什么:给社区一个便宜、可复现、单卡可推理(16–18 GB)的强 VLA 微调基线,把”迁移一个现成 VLA 到新机器人”的门槛拉低,并提供一个反直觉的经验证据——微调配方可能比预训练数据覆盖更决定下游表现。成为后续大量 VLA 工作的对照基线。

作者自陈的局限

  • 多模态示范建模弱:L1 回归趋向学 median mode,面对”同一输入有多个合法动作”的真多模态分布可能吃亏;扩散能建模多模态但会过拟合次优模式。
  • 只研究了微调,没碰预训练:OFT 的优势能否外推到大规模预训练、或大规模训练是否仍需扩散这类更强算法,未验证。
  • 语言接地不一致:ALOHA 上不加 FiLM 就语言接地崩(33%),但 LIBERO 上没这问题;这种差异(是否源于预训练缺双臂数据)成因不明。

原始链接

一手源存档(sources/)

  • openvla-oft—github-readme — GitHub README(含系统需求、Quick Start、checkpoint 列表、citation)
  • openvla-oft—project-page — 项目主页(TLDR、结果小结、L1 vs 扩散深挖、含训练/推理显存与耗时的 FAQ)
  • arXiv 原文 PDF(2502.19645)未入 git,引用见上「原始链接」