枢纽
机器人OpenX 本体
上真机
实时
输入模态vision,language

TinyVLA:把 VLA 从「大模型」拉回「小而快」

Junjie Wen, Yichen Zhu 等(华东师大 + 美的 AI Lab + 北京人形机器人创新中心 + 等)。IEEE RA-L 2025(accepted Feb 2025);arXiv:2409.12514v5。 项目页 · foundation modelsVLA 轻量化diffusion policy

🧠 一句话心智模型:OpenVLA / RT-2 这代 VLA 像一个「一边查字典一边写字」的胖子——7B+ 参数、自回归吐动作 token,每步动作 292ms。TinyVLA 说:把大模型换成 <1B 的小 VLM(继承语言/视觉先验),再把动作生成从「自回归 token」换成 diffusion policy(一次成块出动作)——结果 20× 加速、5.5× 瘦身,性能反而更高

🎯 为什么重要:VLA 的「两个老大难」被同时治了

RT-2 / OpenVLA 跑通了「VLM 当机器人脑」,但留下两个让人头疼的副作用:

OpenVLA / RT-2 范式 7B+ 大 VLM + 自回归 token · 视觉→token→LLM 逐 token 生成 · 7 个 DoF 要循环 7 次解码 · 单步推理 ~292 ms(A6000) · 必须在 970K OpenX 上预训练 ❌ 慢 + 贵 + 数据饥渴 TinyVLA 范式 <1B 小 VLM + Diffusion 动作头 · 小 VLM 出条件嵌入(一次) · diffusion head 一次出动作块 · 单步推理 ~14 ms(A6000) · 不需 OpenX 预训练,VL 先验就够 ✅ 20× 快 + 5.5× 小 + 更准
图 1(依论文 Fig.1 重绘):横轴参数量、纵轴成功率、气泡大小=推理延迟。TinyVLA-H(1.3B)在 OpenVLA(7.2B)左上角——更小、更快、更高。
核心矛盾:「动作不是语言」。语言模型用「下一个 token」天生合适,但机器人动作是连续的高维向量,硬把它切碎成 token 逐个吐——既慢又损失精度,而且需要海量机器人数据才能学会。TinyVLA 的方案:语言归语言(VLM 处理),动作归动作(diffusion head 处理)

💡 核心思想:VLM 出「条件」,Diffusion 出「动作」

TinyVLA 把 VLA 拆成两个各司其职的模块。VLM 部分冻结 + LoRA(保留预训练的视语先验),diffusion head 全参数训。整条前向只有三步:

图像 (2视角) 语言指令 本体状态 小 VLM (<1B) — 冻结 + LoRA ViT 视觉编码(LoRA 5%) Adapter / Tokenizer LLM 主体(Pythia 70M~1.4B) + LoRA on Q,K,V Adapter + Adaptive Pool + 3-layer MLP Diffusion Policy Head (全参数训练) 从噪声 a_0 ~ N(0,I) → K 步条件去噪 → 干净 7-DoF 动作 一次出动作块(action chunk) 本体状态拼接(proprioception concat) VLM 输出一次「条件向量」,整段动作去噪共享它——不重复跑 VLM
图 2(依论文 Fig.2 重绘):VLM 像一个翻译官,把图+话翻成一个「条件向量」;diffusion head 像一个画师,从噪声出发,根据这个条件画出 7-DoF 动作。VLM 只跑一次,因此速度极快。

这正是 OpenVLA 慢的根源:它把动作变 token,让 7B LLM 自回归地一个个吐。TinyVLA 改成「VLM 算一次条件 + diffusion 出整段动作」,省去了昂贵的自回归循环。

🛠️ 怎么做:四步搭出 TinyVLA

步骤具体操作为什么这么设计
① 训一个小 VLM用 Pythia(70M~1.4B)当语言后端,套 LLaVA 训练流程,在公开视语数据上预训练(不碰机器人数据)保留视语先验,参数量压到 1B 以下;避免 OpenVLA 那样必须吃 970K OpenX
② LoRA 微调冻结所有 VLM 权重,只在 attention 的 Q/K/V 上加 LoRA;可训参数只占 5%在少量机器人数据上不把 VLM 「冲坏」,保留语言/视觉理解力
③ 接 Diffusion HeadVLM 输出 → adaptive pooling + LayerNorm → 拼接 proprio → 3-layer MLP → 条件向量;diffusion head 全参数训避免动作 token 化的精度损失;diffusion 天然支持多模态动作分布
④ 推理时合并 LoRA训练完做 re-parametrization,把 LoRA 矩阵并入主干消除额外算子,进一步提速
🔮 直觉:为什么「换头」比「换身」更重要?
论文 §V-C 做了关键实验:把 OpenVLA 的 7B VLM 换成 1B(同样自回归 token),单步延迟只从 292ms → 140ms(2× 提速);但 TinyVLA-1B(1B VLM + diffusion head)只要 14ms——再提速 10×。结论:「自回归 token」才是延迟瓶颈,不是 VLM 大小。换掉动作头比换 VLM 更划算。

📊 关键结果:小而快,反而更准

模型预训练数据总参数可训参数单步延迟真机 5 任务均成功率
Diffusion Policy111M111M35.3%
Multimodal Diffusion230M230M18.0%
OpenVLA970K OpenX7.2B195M292 ms68.3%
TinyVLA-S无(仅 VL)422M101M23.3%
TinyVLA-B无(仅 VL)740M138M77.4%
TinyVLA-H无(仅 VL)1.3B143M14 ms94.0%
维度结论(PDF 溯源)
速度TinyVLA-H (14ms) vs OpenVLA-7B (292ms) = 20× 加速(论文 Fig.1 / Table IV)
参数1.3B vs 7.2B = 5.5× 瘦身,可训参数 143M vs 195M(TinyVLA 还略少)
真机单臂5 任务平均:94.0% vs OpenVLA 68.3%(+25.7%)。FlipMug / StackCubes 双双 98.3%
真机双臂 (UR5)3 任务平均:TinyVLA-H 47.8%(76.7 / 36.7 / 30)vs DP 38.2% vs OpenVLA 0%(OpenX 只有单臂数据,OpenVLA 完全失效)
仿真 (MetaWorld 50 任务)TinyVLA-H 平均 31.6 vs DP 10.5(+21.1%)。Hard 任务 6× 提升(11.4 vs 1.9)
Scaling LawS → B → H 性能单调上升;小 VLM 失败主因是「误读指令」(语言理解力不够)
泛化视角位移、背景、光照、干扰物、位置、外观、未见物体 7 个维度上接近或超过 OpenVLA——尽管没在 OpenX 上预训练
关键洞察:OpenVLA 的 970K OpenX 预训练看起来「必需」,但 TinyVLA 证明只要保留 VLM 的视语先验(哪怕只有 1.3B),配合 diffusion head,不需要机器人数据预训练 也能达到更高性能。数据效率 + 速度 + 精度三者可以同时拿下。

🌐 在领域中的位置

RT-2(VLM 端到端联合微调,55B 私有) OpenVLA(开源 7B VLA,970K OpenX 预训练) TinyVLA(<1B VLM + diffusion head,不预训练机器人数据)⭐ π0 / RDT-1B(继续走「小 VLM + diffusion/flow 动作头」路线)

TinyVLA 在 VLA 演化中代表一个方向转折:从「越大越好」(RT-2 → OpenVLA → π0-Mini)转向「越小越快越好」。它继承了 RoboFlamingo 的「VLM + 独立动作头」解耦思路,又把动作头换成 Diffusion Policy——一次拿下了「快」和「准」。

❓ 常见误区

TinyVLA 是 OpenVLA 的精简版吗?

不只是。OpenVLA 把动作当 token 自回归生成;TinyVLA 把动作交给 diffusion head。论文 §V-C 的延迟分解证明:主要提速来自换头,不是换 VLM。架构范式不同。

它不做 OpenX 预训练,真的能泛化吗?

能,而且 7 个泛化维度(视角/背景/光照/干扰物/位置/物体/外观)多数情况下不输 OpenVLA。原因:VLM 在视语数据上的预训练已经带来了「世界知识」,diffusion head 只是适配器;OpenX 不是必需的。

为什么 OpenVLA 在双臂任务上完全失效?

因为 OpenX 只包含单臂数据,OpenVLA 的预训练先验对双臂无效。TinyVLA 不依赖 OpenX,反而避开了这个陷阱——双臂 UR5 三任务 47.8% vs OpenVLA 的 0%。

diffusion head 不会让推理变慢吗?

会,但远比「自回归 7 次」便宜。diffusion head 只有 ~10 步去噪,且 VLM 只跑一次出条件;OpenVLA 是每 token 都要过一次 7B LLM。TinyVLA-H 14ms vs OpenVLA 292ms(A6000)。

1.3B 的 VLM 够用吗?

论文 §V-A 失败模式分析:0.4B 版本主要失败在「误读指令」(语言理解不够);1.3B 版本解决了这个问题。再往 3B 升级主要改善「定位精度」(PaliGemma 有定位数据先验)。1.3B 是性价比拐点。