设想你家厨房来了一位只背过菜谱、从没下过厨的学徒:他清楚“红烧肉要炒糖色”,却看不见锅里肉的颜色,听不懂你“少放点盐”的嘱咐,更不会挥动锅铲。要让机器人在真实世界里帮人干活,就得让它同时具备三样本事——看见、听懂、动手。这正是“具身大模型”想解决的问题,而 VLA(视觉-语言-动作模型)就是这一思路的典型代表。OpenVLA 是目前最值得学习的开源 VLA:它用约 70 亿参数的“大脑”,把相机画面和自然语言直接翻译成机械臂的动作指令,并曾在 22 种不同机器人“身上”练过手。本文会带你从零认识这位“厨艺学徒”:看它如何用眼睛观察、用语言理解、用手执行,如何从近百万条示范里学习,如何被部署到陌生厨房,以及它目前还端不稳的“锅”。

岗位关联

对 AI 从业者来说,OpenVLA 是具身智能领域少有的“看得见、拿得到、改得动”的完整开源系统——理解它,你就掌握了从模型选型到数据组织、再到微调落地的一整条工程链路。

目录
  1. 可视化演示
  2. 概念起源:从看菜谱到会做菜
  3. 模型架构:眼睛头脑与双手
  4. 数据工程:跟二十二位师傅学艺
  5. 训练流程:先学说话再学动手
  6. 推理部署:新厨房的临场发挥
  7. 微调适配:五十条示范定制动
  8. 局限展望:还端不稳的那口锅
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示OpenVLA开源具身大模型三大核心:VLA架构(IMG视觉+TXT语言双模态输入→7B VLM骨干→7DOF动作输出端到端)、三阶段训练(PRE预训练→TUN动作微调→FT机器人领域适配损失收敛)、推理闭环(OBS观测→OpenVLA推理→7DOF动作→ROB执行→新观测循环),三模式切换理解VLA全貌。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+C1+'

概念起源:从看菜谱到会做菜

后厨的学徒第一天上班,老板递给他三样东西:一副眼镜、一张顾客留言条、一双新厨具。老板说:“你要看着锅里的菜,听懂客人的要求,然后亲手把它做好。”在机器人世界里,“眼镜”是相机,“留言条”是自然语言指令,“厨具”是机械臂的关节电机。把这三样东西打通,让同一个模型既看又听还会动手,这样的模型在学术界就叫 VLA(Vision-Language-Action)。

传统机器人是怎么“做菜”的呢?工程师把流程拆成感知、规划、控制三段,分别写代码:先用目标检测找出锅的位置,再用路径规划算出铲子轨迹,最后用控制算法追轨迹。这套“三段式”在固定场景里很可靠,但每换一个厨房,锅碗瓢盆的位置变了,代码就要重写。VLA 的思路是端到端:让模型自己从海量示范里学会“看到什么就该做什么”,不再人为拆阶段。

OpenVLA 于 2024 年由加州大学伯克利分校等机构开源,参数量约 7B。它由三部分构成:SigLIP 视觉编码器负责看懂图像,Prismatic(基于 Llama-2 7B)语言基座负责理解指令,动作头负责输出 7 自由度的机械臂动作。它在 Open X-Embodiment 数据集上训练,集合了 22 种机器人本体、近百万条真实示范。开源意味着权重、训练配方、推理代码全部公开,任何人都可以把它领回自家“厨房”。

打个比方:如果 Google 的 RT-2 是米其林总厨密不外传的独门酱料,那么 OpenVLA 就是公开印刷的菜谱——你不仅能照着做菜,还能在页边写下自己的批注,把它改成自家的招牌菜。这正是很多团队选择 OpenVLA 而不是闭源模型的原因。

at=πθ(It, L)a_t = \pi_\theta(I_t,\, L)
这个公式是 VLA 的“总纲”:给它当前画面和语言指令,它就吐出一个动作。简单到像“看到客人举手就上菜”。
  1. 输入图像机器人“眼睛”当前看到的这一帧相机画面,是决策的事实依据。
    ItI_t
  2. 语言指令人用自然语言下达的任务描述,比如“把苹果放进碗里”。
    LL
  3. 策略网络一个参数为 θ 的神经网络,相当于学徒受过训练的“大脑加双手”。
    πθ\pi_\theta
  4. 输出动作机器人此刻该怎样运动的一组指令,包括末端位移、旋转与夹爪开合。
    ata_t

模型架构:眼睛头脑与双手

学徒的“手艺”从哪来?先看清他身上的三件装备。OpenVLA 的大脑可以拆成三层:眼睛、头脑、双手。眼睛是 SigLIP 视觉编码器,能把 720p 的相机画面变成一串紧凑的视觉特征;头脑是 7B 参数的语言基座,它像一本巨大的百科词典,装满了从互联网学来的世界知识;双手是动作解码头,把头脑里的“主意”变成实实在在的关节指令。

这三层不是各干各的。图像先被切成许多视觉 patch 并转成 token,文字指令也转成 token,两者拼接后一起喂进语言基座。模型像一个一边看视频一边读菜谱的学徒,把画面里的锅和菜谱里的“翻炒”对应起来,然后输出下一个 token——不过这里 token 不再是文字,而是动作。

动作怎么变成 token?OpenVLA 把机械臂的 7 个自由度(末端位置、旋转、夹爪开合等)分别量化成 256 个离散格子,每个格子对应一个 token id。这样,预测“下一步动作”就变成了和预测下一个单词一模一样的自回归问题,可以原封不动地复用语言模型的训练与推理基础设施。

所以 OpenVLA 的厉害之处不在发明了新网络,而在于“把炒菜翻译成说话”——一旦动作变成了语言,语言模型几十年来积累的工程红利就全部为机器人所用。眼睛负责看,头脑负责想,手负责做,三者被同一个自回归框架拧成了一股绳。

a^t=softmax⁡(W⋅h),h=LLM⁡(Ev(It), L)\hat{a}_t = \operatorname{softmax}\big(W \cdot h\big), \qquad h = \operatorname{LLM}\big(E_v(I_t),\, L\big)
这条公式是“动作翻译机”的内部构造:眼睛先把画面浓缩成特征,头脑把画面和指令融合成“想法”,最后动作头把想法翻译成动作 token 的概率。
  1. 视觉编码器SigLIP 把高分辨率图像压缩成紧凑的视觉特征向量,相当于“看”这一步。
    Ev(It)E_v(I_t)
  2. 语言基座7B 的 LLM 同时消化视觉特征与文字指令,输出融合后的隐状态,相当于“想”。
    LLM⁡(⋅)\operatorname{LLM}(\cdot)
  3. 权重矩阵动作头的线性权重,把“想法”映射到 7×256 个动作 token 的得分上。
    WW
  4. softmax 归一化把得分变成概率分布,再挑出最可能的动作 token,相当于“做”。
    softmax⁡(⋅)\operatorname{softmax}(\cdot)

数据工程:跟二十二位师傅学艺

学徒要练手艺,得先看师傅们怎么做。OpenVLA 的“师父团”来自一个开源数据集 Open X-Embodiment:它聚合了 22 种不同型号的机器人本体,带来近百万条示范轨迹。这些机器人有的长着两只手臂,有的带轮子,相机装在左边或右边,视角千差万别,就像不同菜系的师傅,手法各有习惯。

为什么要这么杂?因为“看过足够多不一样的厨房,进了新厨房才不会慌”。如果只在一个机器人上训练,模型会记住某个相机角度下的特例;而在多本体数据上训练,模型被迫学会本质的“抓取”规律,而不是背下某个画面的特征。这正是 VLA 跨本体泛化的关键——它见过一百种摆放方式,就知道“把杯子拿起来”这件事在陌生视角下也成立。

但数据不是堆在一起就完事。OpenVLA 团队专门做了数据配比实验:不同数据集在训练中的采样权重需要精心调节,某些数据太多会让模型偏爱某一类任务;另外,还要过滤掉低质量、成功标志缺失的轨迹。数据配比和质量清洗,和模型结构一样决定最终效果,甚至更隐蔽地影响着泛化边界。

一句话概括:这位学徒不是只跟一个师傅学,而是跟二十二位师傅打过下手。每位师傅习惯不同、灶台不同,他才能真正练出“到哪都能上手”的通用手艺——这就是 Open X-Embodiment 存在的意义。

D=⋃e=122{(I(e), L(e), A(e))}\mathcal{D} = \bigcup_{e=1}^{22} \left\{(I^{(e)},\, L^{(e)},\, A^{(e)})\right\}
数据集是所有“师徒经验”的并集:22 种机器人,每一种都贡献自己的“画面—指令—动作”三元组,合起来就是学徒的课外读物大全。
  1. 数据集学徒翻阅的全部示范资料合集,是所有训练样本的仓库。
    D\mathcal{D}
  2. 并集符号把 22 种不同机器人本体的数据合并在一起,记号 e 从 1 取到 22。
    ⋃e=122\bigcup_{e=1}^{22}
  3. 三元组每一条示范都包含“看到的画面、听懂的话、做出的动作”三样信息。
    (I(e), L(e), A(e))(I^{(e)},\, L^{(e)},\, A^{(e)})
  4. 上标标记小括号中的 e 标明这条数据来自哪一位“师傅”,防止不同本体的数据混淆。
    (e)^{(e)}

训练流程:先学说话再学动手

学徒的培训分两步走。第一步叫“对齐”,也叫“想清楚再动手”:模型先被要求对当前画面写一句推理——“桌上有一只红色马克杯,用户要的是把它放到托盘里”——然后再给出动作。这就像师傅逼着学徒先说出计划,再动手切菜,避免他莽撞犯错。这种“先推理后行动”的结构在论文里叫 CoT(思维链)对齐。

第二步是“动作预测”。训练时把真实动作也转成 token 序列,让模型在给定图像、指令和已经输出的动作 token 的条件下,预测下一个动作 token 的概率。优化的目标和语言模型一样,是标准的交叉熵损失;不过为了不让“说话”喧宾夺主,动作 token 的损失在总损失中占有更高权重,确保模型把主要精力放在“动手”上。

训练规模并不夸张。OpenVLA 在约 64 张 A100 GPU 上训练了约 15 天,迭代约 25 万步——相比千亿参数的纯文本模型,这个成本已经相当亲民。训练中还用到标签平滑、动作分块等技巧来提升稳定性,让损失曲线平稳下降,而不是剧烈震荡。

说白了,这是把“学徒期”拆成了两门课:先练“边看边说”,再练“说了就做”。等两门课都及格了,这位学徒才算正式出师,拥有了进入真实世界厨房的资格证。

L=−∑t=1Tlog⁡pθ(at ∣ I, L, a<t)\mathcal{L} = -\sum_{t=1}^{T} \log p_\theta\big(a_t \,\big|\, I,\, L,\, a_{<t}\big)
训练目标就是“猜下一招”:给定画面、指令和已经做过的动作,模型预测下一个动作的概率要尽量大。猜得越准,损失越小。
  1. 总损失整个训练要最小化的目标函数,数值越小代表预测越准。
    L\mathcal{L}
  2. 对时刻求和把一段动作序列里每个时刻的预测误差都加起来,一个都不放过。
    ∑t=1T\sum_{t=1}^{T}
  3. 条件概率在已知画面、指令和先前动作的前提下,模型认为下一步做动作 a_t 的概率。
    pθ(at∣I, L, a<t)p_\theta(a_t \mid I,\, L,\, a_{<t})
  4. 负对数把连乘的概率变成连加的误差,既方便计算,也避免数值下溢。
    −log⁡(⋅)-\log(\cdot)

推理部署:新厨房的临场发挥

学徒出师后第一次独立上灶,流程是怎样的?主厨(部署系统)把相机对准灶台,拍下当前这一幕,再递上顾客的要求(一句自然语言指令),OpenVLA 一次性输出未来若干步(比如 8 步)的动作块,机械臂边执行边重新拍摄、重新推理。这种“走一步看一步”的方式叫闭环控制,能抵抗位置误差和意外碰撞。

为什么要一次预测 K 步而不是一步?因为只预测一步容易“短视”:像新手司机只盯着眼前一米,方向盘会来回哆嗦。一次预测一小段动作(action chunk)能让轨迹更平滑,减少抖动,也给底层控制器更多时间去执行。这相当于学徒在心里把接下来八铲子怎么炒都预演了一遍,而不是切一刀想一刀。

代价是计算量。7B 模型在 A100 显卡上推理速度大约 6-7 Hz,也就是说每秒能做 6 到 7 次“看—想—动”的循环。对慢速的抓取任务足够,但对需要高频反馈的任务还偏慢。工程上可以用量化、批处理、动作块复用等手段把有效频率提上去,甚至可以切成“粗动作由大模型出、细控制由小模型补”的分层结构。

你会发现,这位学徒动起来并不像电影里那样敏捷——他更像一位谨慎的新厨师,每炒几秒就停下来看一眼火候,再继续。虽然不够快,但胜在每一步都“有依据”,这就是闭环控制给它的底气。

at:t+K=πθ(It, L)a_{t:t+K} = \pi_\theta(I_t,\, L)
部署时模型不看历史、只看当前一眼,一次吐出未来 K 步的“动作剧本”,机器人照剧本演完一小段再重新要剧本。
  1. 动作块从当前时刻起连续 K 个动作的打包预测,是执行的最小单位。
    at:t+Ka_{t:t+K}
  2. 未来窗口一次“心中预演”多少步。K 越大轨迹越平滑,但计算负担也越大。
    KK
  3. 当前帧只看现在这一眼相机画面,不依赖历史状态,简化了部署时的状态管理。
    ItI_t
  4. 策略函数同一个训练好的大脑,每次调用都给出整块动作方案,然后滚动更新。
    πθ\pi_\theta

微调适配:五十条示范定制动

新餐厅来挖人,老板的厨房完全不一样:灶台换成了防爆炉,锅铲换成了长柄勺。学徒需要重新适应吗?需要,但不用重新学三年。OpenVLA 的亮点在于:只需采集几十条新场景的示范轨迹(比如 50 条),用 LoRA 做参数高效微调,就能让模型适配新的机器人本体或新任务。

LoRA 的原理很巧妙:在预训练模型每个线性层旁边挂上两个低秩小矩阵,微调时冻结原有全部参数,只训练这两个小矩阵,其乘积 BA 就是参数的“增量”ΔW。因为小矩阵的秩 r 远小于原始维度 d,可训练参数量只占全部参数的极小比例,一台消费级 GPU 就能跑完,而且因为改动幅度小,不容易把预训练学到的通用能力“冲掉”。

数据从哪来?最常见的是遥操作示教:人握住机械臂做几遍正确动作,系统记录下图像和关节角度。评测则分两层:先用 LIBERO 等仿真基准做快速筛选,再上真实机器人统计任务成功率。OpenVLA 论文报告,在全新本体上只用几十条示范微调,成功率就能从近乎为零提升到可用水平。

这就是开源菜谱的好处——总厨的底子在,任何小店只要请师傅示范几遍自家的招牌动作,就能低成本培养出一个“本帮菜特供版”学徒。LoRA 就像给学徒开的小灶:不重读三年书,只补几道本地菜。

θ′=θ0+BA,r≪d\theta' = \theta_0 + B A, \qquad r \ll d
微调不是重训整个大脑,而是“加一张便签”:原参数 θ₀ 冻结不动,新学的经验全存在两个小矩阵 B 和 A 的乘积里。
  1. 原参数预训练好的通用大脑参数,微调时冻结不动,相当于学徒的三年基本功。
    θ0\theta_0
  2. 低秩增量两个小矩阵相乘的结果,代表“本帮菜经验”这一小份新增知识。
    BABA
  3. 秩远小于维度r 远小于 d,说明新增参数量极小,训练快且不易过拟合。
    r≪dr \ll d
  4. 微调后参数原参数加上低秩增量,就是定制完成的新模型,可以在新厨房直接上岗。
    θ′\theta'

局限展望:还端不稳的那口锅

学徒当然也有短板。第一块短板是“阅片量”不足:互联网上有海量文本和图片,但机器人真实示范数据稀少且昂贵,Open X-Embodiment 的近百万条数据相比语言模型的万亿 token 只是九牛一毛。数据的上线就决定了模型能力的上限,这也是 VLA 领域“有多少数据办多少事”的铁律。

第二块短板是“走神”。因为继承了语言模型的概率生成习惯,OpenVLA 偶尔也会“幻觉”——明明桌上没有杯子,它却推理出杯子并做出抓取动作。此外,7B 模型的推理延迟限制了高频精细操作,比如穿针引线这类需要毫秒级反馈的任务,它目前还做不利索。

未来方向也随之清晰:一是世界模型——让模型学会预测“如果这样做,锅里会发生什么”,用想象力补足数据稀缺;二是更大的统一数据集与跨本体预训练,把成功率随数据增长的规律继续推高;三是模型压缩与边缘部署,让机器人把大脑装进身体里,而不是连着一台 GPU 服务器。

就像一位刚出师的学徒,OpenVLA 能帮你做出一桌像样的家常菜,但离米其林三星还有距离。它的价值在于:把“厨艺”从少数大厨的私藏变成公开教材,而接下来每一次示范数据的积累、每一轮微调的尝试,都在把这个行业往前推一步。

S(D)∝DαS(D) \propto D^{\alpha}
这条“经验法则”说的是:任务成功率 S 随示范数据量 D 按幂律增长。多一份数据,就多一分本事——这也是整个领域拼命收集数据的原因。
  1. 成功率机器人完成任务并获得肯定的概率,是衡量模型能力的最终指标。
    SS
  2. 数据量可用于训练的示范轨迹条数,是决定能力上限的“燃料”。
    DD
  3. 幂指数数据每翻一倍,效果提升的“加速度”有多大,不同任务各不相同。
    α\alpha
  4. 正比符号表示两边同向变化——数据越多,成功率越高,但增长会逐渐放缓。
    ∝\propto

AI 应用场景

智能仓储的抓取分拣

阶段:数据采集与模型微调

解决的问题:传统视觉分拣系统针对每种新商品都要靠工程师调参、手写抓取规则,遇到圆瓶、软袋等长尾商品就失效。OpenVLA 只需录制几十条新商品的人为示教轨迹,用 LoRA 微调后即可泛化到新的摆放位置和光照条件,把“每种商品写一套规则”变成“每种商品示范几遍”。

具体案例:某电商仓的机械臂原本只负责搬运固定规格纸箱。引入 OpenVLA 后,面对圆瓶、软袋等非标商品,操作员用遥操作手柄示范 50 条拿取轨迹,微调一晚后成功率从不足 50% 提升到 85% 以上,且换了托盘位置也不用重新编程。

科研实验台的灵巧操作

阶段:模型推理与场景适配

解决的问题:化学、生物实验室需要机械臂完成移液、夹取培养皿等操作,传统脚本要求器具位置精确固定,稍有偏差就抓空。OpenVLA 的视觉—语言联合理解让机器人能响应“把左侧的红色试管移到架子上”这类指令,即使器具位置随机变化也能根据画面实时调整。

具体案例:某高校合成化学实验室用 OpenVLA 配合低成本机械臂,研究人员用自然语言下达任务,机器人自主完成试管转移、摇晃、滴加等操作。学生只需自然语言就能操作实验台,实验效率明显提升。

家庭服务机器人的指令跟随

阶段:多模态指令理解与闭环控制

解决的问题:家庭环境物体种类多、语言指令口语化,传统规则系统无法覆盖“把沙发上那个蓝色的靠垫放到卧室床上”这种长尾表达。OpenVLA 借助互联网规模的语言知识,能准确解析模糊指代,再用视觉定位完成操作。

具体案例:开源社区将 OpenVLA 部署到移动操作机器人上,用户随口说出家务指令,机器人通过相机识别目标、预测动作块、边走边看地完成搬运。开发者在 GitHub 上共享微调数据,机器人每学会一个新家的布局,社区就多一份经验。

Python 演示

python78 行
"""OpenVLA 动作分词与训练最小演示(教学简化版) OpenVLA 把机械臂 7 个自由度的连续动作量化成 256 个离散 token,再用语言模型做"下一个动作 token"的条件预测。本脚本用 NumPy模拟这一流程:有一个极小的动作头,在合成数据上训练后,能把新的场景特征映射为 7 维动作 token。"""import numpy as np  class ActionTokenizer:    """动作分词器:把 [-1, 1] 的连续动作值离散为 token id"""     def __init__(self, n_bins=256, low=-1.0, high=1.0):        self.n_bins = n_bins        self.low = low        self.high = high     def discretize(self, value):        """单个连续值 -> 0..255 的格子编号"""        ratio = (value - self.low) / (self.high - self.low)        ratio = min(1.0, max(0.0, ratio))        return int(round(ratio * (self.n_bins - 1)))     def tokenize(self, action_7d):        """7 维动作 -> 7 个 token"""        return np.array([self.discretize(v) for v in action_7d], dtype=int)  class TinyActionHead:    """迷你动作头:线性层 + softmax,模拟 OpenVLA 的动作解码头"""     def __init__(self, feat_dim, n_dims=7, n_bins=256, seed=0):        rng = np.random.default_rng(seed)        # 形状: [自由度, 格子数, 特征维度]        self.weight = rng.normal(0.0, 0.1, (n_dims, n_bins, feat_dim))     def predict_proba(self, feat):        """给定场景特征,输出每个自由度的 token 概率分布"""        logits = np.einsum('dbf,d->db', self.weight, feat)        exp = np.exp(logits - logits.max(axis=1, keepdims=True))        return exp / exp.sum(axis=1, keepdims=True)     def train_on_demo(self, feat, target_tokens, lr=0.05):        """用交叉熵梯度更新一次(简化版,未加正则)"""        prob = self.predict_proba(feat)        grad = prob.copy()        grad[np.arange(7), target_tokens] -= 1.0        self.weight -= lr * np.einsum('db,d->dbf', grad, feat)  def main():    tokenizer = ActionTokenizer()    # 合成训练数据:3 个场景特征各对应一组示范动作    demos = [        (np.array([0.2, 0.8]), np.array([0.4, -0.7, 0.3, 0.0, 0.1, 0.2, -0.1])),        (np.array([0.9, 0.1]), np.array([-0.5, 0.6, -0.2, 0.8, 0.3, -0.4, 0.2])),        (np.array([0.5, 0.5]), np.array([0.0, 0.1, 0.9, -0.3, -0.6, 0.7, 0.5])),    ]    targets = [(feat, tokenizer.tokenize(act)) for feat, act in demos]    head = TinyActionHead(feat_dim=2)     for epoch in range(300):        for feat, tokens in targets:            head.train_on_demo(feat, tokens, lr=0.05)     for feat, tokens in targets:        pred = head.predict_proba(feat).argmax(axis=1)        acc = np.mean(pred == tokens)        print("场景特征 %s 的 token 命中率: %.2f" % (feat.tolist(), acc))     new_feat = np.array([0.3, 0.7])  # 模拟一个没见过的新场景    pred_tokens = head.predict_proba(new_feat).argmax(axis=1)    print("新场景预测动作 token:", pred_tokens.tolist())  if __name__ == "__main__":    main()
目的:用纯 NumPy 复刻 OpenVLA 的两大核心机制——连续动作离散化与动作 token 的条件预测,展示“看特征、出动作”的最简闭环。
  1. ratio = (value - self.low) / (self.high - self.low)把连续动作值归一化到 0 到 1 之间,为量化做准备。
  2. return int(round(ratio * (self.n_bins - 1)))按比例落到 0..255 的某个格子,这就是“动作分词”。
  3. np.einsum('dbf,d->db', self.weight, feat)用特征向量给每个自由度的 256 个格子打分,得到 logits。
  4. exp / exp.sum(axis=1, keepdims=True)softmax 归一化,把分数变成“下一个动作 token”的概率分布。
  5. grad[np.arange(7), target_tokens] -= 1.0构造交叉熵梯度:正确 token 处减去 1,其余保持概率值。
  6. self.weight -= lr * np.einsum('db,d->dbf', grad, feat)沿梯度方向更新动作头参数,等价于“看了示范后长记性”。

常见误区

误区以为 OpenVLA 只是给大语言模型加一个机械臂的 API,模型本质上还是只会“说话”,动作由另外的代码生成。

正解VLA 是端到端训练的统一模型,输出层直接产生动作 token,视觉、语言、动作对齐在同一套参数里。虽然语言基座源自 Llama-2,但经过近百万条示范对齐后,它“想”的不再是下一句话,而是下一步动作——就像学徒被训练后,看到锅里的变化,脑子里冒出的不是形容词而是“该颠勺了”。

为何常见:ChatGPT 太深入人心,人们容易用“会说话的机器人”去套一切大模型应用,忽略了机器人需要的是动作输出而非文本输出。

误区只要加载权重,任何机器人装上相机就能立刻干活,仿佛开源模型就是万能插件。

正解OpenVLA 预训练在 22 种本体上,但你的机械臂关节角度范围、相机内外参、夹爪型号都可能不在训练分布内。正确姿势是先做域适配:录制少量示范,用 LoRA 微调,再在真机上评估。就像学徒会做川菜,不代表他第一次进粤菜厨房就能颠好锅。

为何常见:开源大模型“下载即用”的体验被迁移到机器人领域,忽视了硬件异构性这一物理世界的硬约束。

误区以为把 Open X-Embodiment 全量数据加上自己的数据一起训,效果必然最好,不需要做任何筛选。

正解数据配比、质量筛选、去重和任务均衡一样重要。OpenVLA 论文专门做了数据混合实验:某些低质量或与本体重合度低的数据比例过高,反而会拖累目标任务性能。增加数据时要考虑分布匹配,而不是盲目堆量——就像看一百个小时切菜视频,不如看十个针对性的颠勺示范。

为何常见:大模型时代“大力出奇迹”的传说让人忽视数据质量工程,以为规模自动解决一切。

误区低秩更新信息量少,肯定打不过全量微调,所以宁愿花大价钱重训全部参数。

正解在少量示范(50 条以内)场景下,LoRA 往往优于全量微调。因为全量微调容易灾难性遗忘预训练学到的通用视觉语言知识,而 LoRA 把更新限制在低秩子空间,相当于只补“本帮菜经验”,不推翻“基本功”。实验也证明 LoRA 微调后的 VLA 在新本体上成功率更高且训练成本低一个数量级。

为何常见:直觉上“改得越多越灵活”,但少样本下正则化的力量被低估了,人的直觉在超高维参数空间里经常失效。

面试题

Q1. OpenVLA 将机械臂每个自由度的连续动作量化为多少个离散 token?

单选题 · easy

  • A.128 个
  • B.256 个← 正确答案
  • C.512 个
  • D.1024 个

答案:B。OpenVLA 的动作分词器把每个自由度映射到 256 个格子,7 个自由度共 7×256 个动作 token。256 个格子是精度与词表大小的折中:128 太小会损失动作精度,512 或 1024 会不必要地膨胀词表,增加计算负担。

Q2. OpenVLA 的语言基座源自哪一族模型?

单选题 · easy

  • A.GPT-4 系列
  • B.Llama 2 基座← 正确答案
  • C.BERT 编码器
  • D.T5 文本模型

答案:B。OpenVLA 构建于 Prismatic 视觉语言模型之上,而 Prismatic 以 Llama-2 7B 为骨干。GPT-4 闭源不可用,BERT 是纯编码器不能自回归生成动作 token,T5 的编解码结构也与 OpenVLA 的自回归设计不符。

Q3. OpenVLA 预训练使用的主要数据集是?

单选题 · mid

  • A.COCO 目标检测数据集
  • B.Open X-Embodiment 具身数据集← 正确答案
  • C.ImageNet 静态图像集
  • D.Common Crawl 网页数据集

答案:B。OpenVLA 的“课堂”是 Open X-Embodiment,它聚合了 22 种机器人本体的近百万条真实操作示范。COCO 和 ImageNet 只有静态图像没有动作,Common Crawl 只有网页文本,都无法提供“看到—听懂—动手”的三元组训练信号。

Q4. OpenVLA 的参数量约为多少?

单选题 · easy

  • A.约 10 亿参数
  • B.约 30 亿参数
  • C.约 70 亿参数← 正确答案
  • D.约 130 亿参数

答案:C。OpenVLA 整体约 7B 参数,核心来自 Llama-2 7B 语言基座,加上视觉编码器与动作头后总体量略超 7B。10B 和 30B 不是 OpenVLA 的规模档位,130B 则对应 RT-2 等更大但闭源的模型。

Q5. 为什么 OpenVLA 一次预测未来 K 步动作块(action chunking)?

单选题 · mid

  • A.让轨迹更平滑并减少抖动← 正确答案
  • B.为了把图像分辨率减半
  • C.为了减少训练数据的数量
  • D.为了省去视觉编码器

答案:A。只预测一步会让控制器“短视”,像新手司机盯着眼前一米,方向盘来回哆嗦。一次预测一小段动作块能给出连贯的轨迹,减少控制抖动,也给底层执行留出时间。它与图像分辨率、数据量、视觉编码器无关。

Q6. 在 OpenVLA 基础上适配全新机器人本体,最推荐的参数高效方法是?

单选题 · mid

  • A.冻结全部参数不训练
  • B.仅重训视觉编码器
  • C.LoRA 低秩适配主干← 正确答案
  • D.更换整个语言基座

答案:C。OpenVLA 官方推荐在新本体上采集少量示范后用 LoRA 微调:冻结原参数,只训练低秩增量,既省钱又能保留通用能力。冻结全部参数无法适应新动作空间,只训视觉编码器解决了不了动作分布偏移,换语言基座等于重训整个模型。

Q7. 关于 OpenVLA 在 A100 上的推理速度,正确说法是?

单选题 · hard

  • A.A100 上约 6-7Hz← 正确答案
  • B.嵌入式 MCU 实时运行
  • C.推理速度与模型无关
  • D.必须使用云 TPU 集群

答案:A。7B 模型在 A100 上大约每秒推理 6-7 次,能满足慢速抓取任务,但达不到高频精细操作的要求。MCU 算力远不足以运行 7B 模型,推理速度显然取决于模型与硬件,而 TPU 只是加速选项之一而非必需品,工程上常用量化和动作块复用提速。

Q8. OpenVLA 的三大核心组件包括?

多选题 · mid

  • A.视觉编码器模块← 正确答案
  • B.语言基座模块← 正确答案
  • C.动作解码模块← 正确答案
  • D.视觉 SLAM 定位

答案:ABC。OpenVLA 的三件套是 SigLIP 视觉编码器(眼睛)、Llama-2 语言基座(头脑)、动作解码头(双手)。视觉 SLAM 负责建图定位,属于传统机器人感知模块,OpenVLA 并不包含 SLAM,它直接从图像端到端输出动作。

Q9. 以下哪些是当前 VLA 模型面临的共性挑战?

多选题 · mid

  • A.机器人示范数据稀缺← 正确答案
  • B.语言幻觉引发错动作← 正确答案
  • C.实时推理速度不足← 正确答案
  • D.无法理解自然语言

答案:ABC。VLA 的三大痛点正是数据瓶颈(真实示范昂贵稀少)、幻觉问题(语言基座会臆想出场景中不存在的物体)和实时性不足(7B 模型推理延迟高)。理解自然语言恰恰是 VLA 的强项,不是短板。

Q10. 关于 Open X-Embodiment 数据集,正确的是?

多选题 · hard

  • A.涵盖多种机器人本体← 正确答案
  • B.只含单一任务类型
  • C.支持跨本体泛化← 正确答案
  • D.数据全部来自仿真

答案:AC。Open X-Embodiment 聚合了 22 种真实机器人本体,覆盖数百种技能,多样性正是 VLA 跨本体泛化的基础。它既有真实世界数据也有部分仿真数据,且任务类型非常丰富,因此 B 和 D 都不成立。