想象你走进一家餐厅的后厨,想请主厨“把苹果放进篮子里”。只见主厨目光一扫,看清苹果在砧板的哪个位置(视觉);他听清你的要求,在脑中翻译成“走过去、伸手、托住、平移、放下”(语言理解);随后手腕一沉、虎口发力,稳稳把苹果托起放进篮子(动作执行)。传统机器人像一台只会播放固定录像的“自动炒菜机”——换一种苹果、换一句指令就手足无措。而 Pi0 要打造的,是一位“全能主厨”:它把眼睛看到的、耳朵听到的、手上做到的,统统融进同一个大脑里统一思考。这个大脑,就是本文的主角——VLA(视觉-语言-动作)机器人基础模型。本文会用“主厨成长记”这条故事线,带你拆解 Pi0 如何看懂世界、听懂人话、做出动作,以及它凭什么比前辈 RT-2 更灵巧。
理解 Pi0 的 VLA 设计,是机器人算法与具身智能从业者看懂“大模型如何落地物理世界”的第一块敲门砖——它直接关系到下一代通用机器人该长什么样。
可视化演示
在加权无向图上展示Dijkstra算法从源点A出发逐步求解各节点最短路径的过程,直观观察距离松弛与节点访问顺序。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Dijkstra最短路径算法 青色为已访问节点,橙色为当前处理节点 绿色边表示发生松弛的路径 dist[v] = min(dist[v], dist[u] + w(u,v))
VLA核心概念
想象后厨里的主厨为何能“眼疾手快”?因为他的眼睛、耳朵和手由一个大脑统一指挥:看到食材的位置(视觉),听懂客人的要求(语言),随即手腕发力完成动作(动作)。传统机器人则是“三权分立”——感知模块、规划模块、控制模块各干各的,像三个各怀心思的帮厨,配合稍有不慎就把菜做砸。VLA 模型的野心,就是打破这种割裂,让“看、听、做”在一个神经网络里同步完成。
VLA 是 Vision-Language-Action(视觉-语言-动作)的缩写,Pi0 正是这类模型的代表。它接收两路输入:摄像头拍下的画面,以及自然语言指令(比如“把苹果放进篮子”);输出则是机器人的动作指令。整个模型中,视觉特征与语言特征会被对齐到同一个表示空间,就像主厨在脑中把“红彤彤的圆形物体”和“苹果”这个词对应起来,再把“放”这个动词翻译成手臂的轨迹。
从概率角度看,VLA 模型学习的正是一个条件概率:在给定的视觉画面和语言指令下,什么样的动作最合适。
有了这个统一的概率模型,机器人不再需要为每种操作手写规则。就像主厨不需要每做一道新菜就重新学一遍“怎么看、怎么听、怎么做”——他的基本功是通用的,VLA 模型追求的正是这种“看听说做”的通用能力。
- 动作 a机器人要执行的连续动作向量,比如关节角度、夹爪开合量,相当于主厨手腕上每一分力道的拿捏。
- 视觉条件 v当前时刻摄像头拍摄的图像,相当于主厨打量食材与灶台的目光。
- 语言条件 l用户下达的自然语言指令,如“把苹果放进篮子”,相当于客人报出的点菜要求。
- 条件概率 P在已知视觉与语言的前提下,输出正确动作的概率分布,训练目标就是让正确动作的概率尽量大。
Pi0架构设计
一家顶级餐厅的后厨,总厨不会亲自切每一根葱,而是由他统筹调度,再由专门的副厨负责掌勺。Pi0 的架构也遵循这个思路:一个“总厨级”的基础模型底座负责理解世界,一个专用的“动作专家头”负责把理解变成肌肉记忆般的精准动作。
Pi0 的底座来自预训练的视觉-语言模型(PaliGemma 家族),它已经通过海量图文数据学会了物体识别、空间关系、指令语义等“基本功”。在底座之上,Pi0 加装了一个流匹配动作头——这是它与普通 VLM(视觉语言模型)最大的区别:普通 VLM 只输出文字,Pi0 的动作头直接输出机器人关节的运动轨迹。图像、文本、动作三种模态被映射到同一个表示空间,让模型能够像主厨统一调度五官和四肢那样,统一调度多模态信息。
在推理时,Pi0 采用自回归的方式逐块预测动作:每看到一个“视觉-语言”上下文,就预测未来一段时间的连续动作,然后把这个动作“喂”回输入,继续预测下一段。
总厨负责“懂”,副厨负责“做”——底座负责理解语义与场景,动作头负责输出精细的物理动作。这种“懂做分离”的设计,使得 Pi0 既能借用互联网海量图文知识,又能适应真实机器人的物理控制需求,两全其美。
- 策略网络 πθ参数为 θ 的神经网络“策略”,相当于主厨的决策大脑,负责把感知转化为行动。
- 状态 s_tt 时刻机器人的本体感受,如各关节角度、夹爪开合度,相当于主厨对自己手部位置的感知。
- 视觉 v_t 与语言 l当前画面与贯穿任务全程的指令,分别对应“眼睛”和“耳朵”的输入。
- 动作 a_tt 时刻输出的动作指令,驱动电机执行,相当于主厨下达给手腕的“命令”。
流匹配策略
新手揉面,会直接抓一把干面粉硬捏,结果面团坑坑洼洼;老师傅则先加水把面粉和成松散湿团,再一遍遍揉、压、推、拉,逐渐塑形成光滑的面团。Pi0 生成动作的方式——流匹配(Flow Matching),就藏着这门“揉面”的哲学:从一个杂乱无章的“噪声动作”出发,逐步塑形,最终“揉”出一个平滑精准的真实动作。
为什么要这么麻烦?因为直接从“看到什么、听到什么”一步跳到动作,就像一把捏出成品,往往生硬且不稳定。流匹配的做法是:把动作生成看作一条从噪声到目标的连续路径。设 $x_0$ 是随机噪声(没揉开的面团),$x_1$ 是目标动作(揉好的成品),中间每一步都可以表示为两者的加权混合。
而模型要学习的,是这条路径上每个点的“移动方向”——也就是速度场。给定当前位置 $x_t$,模型预测下一步该往哪个方向走、走多快:
推理时,模型从随机噪声 $x_0$ 出发,沿着学到的速度场一步步欧拉积分,几十步之后便得到一条平滑的连续动作轨迹。动作不是“蹦”出来的,而是被“揉”出来的——这正是 Pi0 的动作能像主厨颠勺一样流畅、细腻、不发抖的秘密。
- 噪声起点 x0随机采样的杂乱动作向量,代表“还没开始揉的面团”。
- 目标动作 x1最终要生成的真实动作,代表“揉好的成品”,取自真实机器人操作数据。
- 插值系数 t0 到 1 之间匀速增长的时间进度,控制“面团被揉到几成熟”。
- 变化率 dx/dt轨迹在 t 时刻的移动方向与快慢,告诉模型“现在该往哪使劲”。
训练与数据
大厨的成长从来不是一蹴而就:先在各种餐厅后厨打下手,观摩成千上万道菜的做法(预训练);到了新餐厅,再用这家店的灶台、锅具和食材反复试手(微调)。Pi0 的训练同样分两步走:第一步是互联网规模的多模态预训练,让模型学会视觉理解和语言语义;第二步是用真实机器人的操作数据做下游微调,让它学会“动手”。
预训练阶段,Pi0 消化海量图文数据、网络视频和跨本体的机器人演示数据,像学徒在后厨观摩各路师傅的手艺——它由此获得对世界的通用认知:物体是什么、空间怎么排布、指令怎么理解。微调阶段,模型再针对具体机器人本体和任务,用遥操作或人类演示数据精调动作头,相当于师傅手把手教它这家店的特色菜。
流匹配训练的核心,是让模型预测的速度场 $v_\theta$ 逼近真实的速度方向。训练损失如下:
正因为数据来源横跨多种机器人本体,Pi0 学会了“跨本体泛化”:就像学会颠勺的人换一口锅也能颠,Pi0 把在某台机械臂上学到的动作知识迁移到另一台机械臂上,只需少量微调即可适配。基本功(预训练)和特色菜(微调)双管齐下,才成就了这位“全能主厨”。
- 损失 L衡量模型预测速度与真实速度之间的差距,数值越小说明“手艺”越准。
- 期望 E对随机时间 t、随机噪声 x0 和随机目标 x1 求平均,保证模型在各种“面团状态”下都靠谱。
- 真实速度 x1−x0从噪声直指目标的理想方向,是训练中的“标准答案”。
- 预测速度 vθ网络输出的“揉面手势”,训练目标就是让它与标准答案完全一致。
RT-2模型对比
如果说 Pi0 是手感自如的主厨,那它的前辈 RT-2 更像一位“只读菜谱念字的学徒”。RT-2 的做法是:把机器人动作也当成文字来处理——先把动作离散成一个个 token,比如“向左 0.5 米”“夹爪张开 45 度”,然后像生成文本一样一个词一个词地“念”出来。这种“念字式”的动作生成,最大的问题是精度损失:动作被强行压缩进有限个词条,就像菜谱上写着“盐少许”,却无法告诉你精确到克的用量。
Pi0 的流匹配策略则完全不同:它直接输出连续的动作向量,力度、角度、速度都可以是任意精度的小数。主厨翻锅时手腕微微一抖,这一抖的微妙角度和力道,文字根本无法完整描述,但连续动作可以。这正是 Pi0 能胜任 RT-2 难以完成的精细操作(如插拔、叠衣、开瓶)的核心原因。
从数学上看,两者的本质差异在于“动作的表示方式”:
差异带来分工:RT-2 适合对动作精度要求不高的粗粒度操作(如“把红色方块移到蓝色方块旁”),它的优势是能完全复用大语言模型的文本生成管线;Pi0 则面向需要精细力控与平滑轨迹的灵巧操作。可以说,RT-2 证明了“机器人可以用语言模型的方式思考”,而 Pi0 进一步证明了“机器人还可以用更细腻的方式行动”。
- 动作词表 VRT-2 将所有动作离散成有限个文本 token,相当于菜谱上固定的字句集合。
- 分类 argmaxRT-2 在词表上选出得分最高的 token 作为动作,像一个略显笨拙的查询过程。
- ODE 积分Pi0 从噪声起点出发,沿预测的速度场不断迭代,最终得到连续动作。
应用与展望
一位练就了十八般武艺的主厨出师后,可以去川菜馆、西餐厅,也可以用不同的锅铲——同一套手艺,换不同的身体和环境都能施展。Pi0 所代表的机器人基础模型,追求的正是这种“通用性”:一套策略,适配多种机器人本体,应对各种日常任务。
在应用层面,Pi0 展示出的灵巧操作能力让人振奋:开瓶盖、叠衣服、插充电线、整理桌面……这些对人类轻而易举、对传统机器人却难如登天的事情,Pi0 通过语言指令加视觉引导即可完成。更重要的是跨本体泛化——在一台机械臂上训练的策略,迁移到另一台不同构型的机械臂上,只需少量微调,这大大降低了机器人部署的成本。人机协作也因此变得更自然:你不需要学习编程或示教器操作,只要说一句“帮我把苹果放进篮子”,机器人就能理解并执行。
从更宏大的视角看,Pi0 是“具身智能”(Embodied AI)的重要里程碑——让 AI 不再只活在屏幕里,而是拥有身体、能与物理世界交互。机器人基础模型的终极目标,可以用一个简洁的数学表达来描述:
从“一个机器人干一件事”到“一套技能适配所有身体”,Pi0 为通用机器人铺下了一块重要的基石。未来,当基础模型的能力与更多样的本体数据结合,那位“全能主厨”或许真的会走进千家万户的后厨。
- 策略 π决定“看到什么、听到什么就怎么动”的映射,是机器人的决策大脑。
- 本体 e不同构型的机器人,如单臂机械臂、双臂机器人、轮式机器人、人形机器人。
- 回报 J_e策略在某个本体 e 上完成任务的质量评分,相当于主厨在某个厨房里的口碑。
- 求和最大化追求“一套策略,多种身体”——这正是机器人基础模型区别于专用机器人的核心价值。
AI 应用场景
家庭服务机器人:听懂人话的“桌面管家”
阶段:模型部署与推理
解决的问题:传统扫地机器人只能按预设路线工作,机械臂则需要专业人员示教编程,普通用户根本无法指挥它们完成“把桌上的苹果放进篮子”这类灵活任务。Pi0 将视觉感知、语言理解和动作生成统一进端到端模型,用户随口一句话就能下达新任务。
具体案例:用户在家中说“帮我把桌上的苹果放进篮子”,Pi0 通过摄像头识别苹果位置、篮子位置,结合语言指令中的“放”这个动作语义,用流匹配策略生成一条平滑的抓取-移动-释放轨迹。整个过程无需编程、无需示教,换个物体、换句话也能即时响应。
工业柔性装配:从“逐点示教”到“口述即做”
阶段:模型微调与适配
解决的问题:传统工业机械臂在产线上换一个型号的零件,就需要工程师用示教器重新逐点编程,耗时以天计。Pi0 预训练获得的通用操作知识,配合少量真机数据微调,就能快速适配新任务,极大缩短换线周期。
具体案例:某电子工厂需要机械臂完成精密元件的插拔装配。工程师在 Pi0 上输入自然语言指令“将蓝色元件插入左侧第二排插槽”,模型结合视觉定位和连续力控输出完成操作。得益于流匹配的连续动作生成,插拔过程的力度和角度平滑可控,良品率显著提升。
跨本体策略迁移:一套手艺,多台机器人
阶段:数据收集与预训练
解决的问题:不同厂商、不同构型的机械臂各自为政,在一台机械臂上训练的策略无法迁移到另一台,造成大量重复劳动。Pi0 在预训练阶段融合多本体数据,学到的动作知识具有跨本体泛化能力。
具体案例:研究团队先在 Franka 机械臂上采集了抓取演示数据,将预训练后的 Pi0 策略迁移到 UR5 机械臂上,仅用少量微调数据就复现了 80% 以上的操作成功率。这意味着机器人公司可以一次训练、多处部署,大幅摊薄数据采集成本。
Python 演示
"""用流匹配策略生成一段平滑的机械臂末端轨迹"""import numpy as np def euler_flow(velocity_fn, x_noise, steps=60): """沿学到的速度场做欧拉积分,从噪声出发逐步还原为平滑动作""" t = 0.0 dt = 1.0 / steps x = x_noise.copy() traj = [x.copy()] for _ in range(steps): t += dt x = x + velocity_fn(x, t) * dt traj.append(x.copy()) return np.array(traj) def train_velocity(action_batch): """演示版训练:直接构造线性速度场,真实场景中由神经网络学得""" def velocity_fn(x, t): return action_batch - x return velocity_fn def main(): rng = np.random.default_rng(42) start = np.array([0.0, 0.0]) target = np.array([1.0, 0.8]) x_noise = start + rng.normal(0, 0.4, size=2) vel = train_velocity(target) traj = euler_flow(vel, x_noise) dist = np.linalg.norm(traj[-1] - target) print("轨迹采样点数量:", len(traj)) print("末端位置:", np.round(traj[-1], 3)) print("末端到目标距离:", round(float(dist), 4)) assert dist < 0.01, "流匹配未能收敛到目标动作" if __name__ == "__main__": main()
x = x + velocity_fn(x, t) * dt沿速度场走一小步,反复迭代即完成去噪return action_batch - x构造指向目标的线性速度场,相当于训练目标 $x_1 - x_0$x_noise = start + rng.normal(0, 0.4, size=2)给起点加高斯噪声,模拟“没揉开的面团”traj = euler_flow(vel, x_noise)从噪声出发去噪,得到 61 个采样点的平滑轨迹traj.append(x.copy())记录每一步位置,供可视化与碰撞检测使用assert dist < 0.01验证流匹配确实收敛到目标动作
常见误区
误区VLA 名字里有 Vision 和 Language,那应该就是拿一个现成的视觉模型加一个语言模型拼起来,各干各的,最后把结果简单合并。
正解VLA 的核心在于“多模态对齐”——图像、文本、动作被映射到同一个表示空间,由同一个模型统一处理。就像主厨的“看”和“听”不是两个独立器官在工作,而是由大脑整合成统一的行动指令。简单拼接无法实现这种深层的跨模态理解。
为何常见:模型名称中并列了三个词,容易让人误以为是三个独立模块的组合,忽略了“对齐”这一关键设计。
误区RT-2 和 Pi0 都是基于大模型的机器人控制方法,RT-2 把动作写成文字,Pi0 应该也是类似的,只是换了个输出格式。
正解两者在动作表示上有本质差异。RT-2 把动作离散成文本 token,精度受限于词表大小,像学徒只能“念出”有限的词句;Pi0 用流匹配直接输出连续动作向量,力度、角度可以精确到任意小数位,像主厨手腕毫无级差的手感。这决定了 Pi0 能完成 RT-2 做不了的精细操作。
为何常见:两者都基于预训练 VLM 架构,表面结构相似,容易忽略动作输出层的深刻区别。
误区流匹配也有加噪、去噪、采样这些步骤,看起来和扩散模型一模一样,可以认为两者完全等价。
正解两者思路相关但机制不同。扩散模型学习的是“噪声到数据的概率路径”,需要逐步去噪;流匹配学习的是确定性的速度场,通过常微分方程 (ODE) 积分直接生成动作。流匹配的轨迹更平滑、采样更快,更适合机器人这种需要高频、连续控制的场景。就像揉面和发面都有“让面团变化”的过程,但手法和成品截然不同。
为何常见:流匹配与扩散模型都属于生成模型家族,且都涉及“从噪声恢复数据”的视觉流程,容易混淆。
误区既然叫“基础模型”,那应该和 GPT 一样,训练完就能回答任何问题、完成任何任务,开箱即用。
正解机器人基础模型通常是“预训练 + 微调”两阶段:预训练提供通用的视觉-语言-动作先验,但要部署到具体机器人本体和具体任务上,仍然需要用真机数据微调。就像主厨的基本功是通用的,但到了新餐厅还得熟悉这口锅、这道菜的特色做法。
为何常见:“基础模型”一词容易让人联想到大语言模型的“即开即用”,忽略了机器人还需适配物理本体这一额外环节。
误区Pi0 预训练用了大量互联网视频,那它应该光看视频就能学会所有操作,不需要再采集真机演示数据。
正解网络视频提供的是视觉与语义先验——让模型认识物体、理解指令、了解“动作大概长什么样”;但要输出真实机器人可执行的连续动作,仍需依赖遥操作或人类演示的真机数据来微调动作头。就像学徒看再多菜谱视频,也得真上灶台练手才能掌握火候。
为何常见:预训练数据的规模令人印象深刻,容易让人高估其作用,忽略微调阶段真机数据不可替代的价值。
面试题
Q1. VLA 模型中的字母 A 代表什么?
- A.视觉感知
- B.语言指令
- C.动作输出← 正确答案
- D.音频信号
答案:C。VLA 是 Vision-Language-Action 的缩写,A 代表 Action(动作输出)。正如主厨的“看”和“听”最终都要落实到“做”上,VLA 模型的核心输出正是机器人的动作。
Q2. Pi0 生成机器人动作的方式是什么?
- A.文本令牌离散输出
- B.流匹配连续式输出← 正确答案
- C.机械查表固定输出
- D.强化学习随机输出
答案:B。Pi0 采用流匹配(Flow Matching)策略,从噪声出发沿速度场积分,输出连续动作向量。这与 RT-2 用文本 token 离散化动作的方式形成鲜明对比,是 Pi0 能完成精细操作的关键。
Q3. 流匹配中 x_t 的数学含义是什么?
- A.随机噪声起点数据
- B.最终真实目标动作
- C.噪声与目标的插值← 正确答案
- D.网络预测的损失值
答案:C。x_t = (1-t)x_0 + t x_1,是噪声起点 x_0 与目标动作 x_1 的线性插值。t 从 0 到 1,x_t 就像被逐渐揉开的面团,从一团乱麻逐步变成目标形状。
Q4. RT-2 模型如何表示机器人动作?
- A.连续的速度向量场
- B.离散化的文本令牌← 正确答案
- C.关节力矩控制信号
- D.触觉反馈的原始值
答案:B。RT-2 把动作编码成离散的文本 token,像学徒从词表里“念”出动作。这种离散化表示损失了精度,使得它难以表达“手腕微微一抖”这类精细动作。
Q5. 流匹配训练时作为监督信号的真实速度场是什么?
- A.网络输出的预测值
- B.目标动作与噪声差← 正确答案
- C.随机采样的高斯项
- D.固定不变的常量值
答案:B。真实速度场是 x_1 - x_0,即从噪声指向目标的直线方向。训练损失让网络预测的 v_θ(x_t,t) 逼近这个“标准答案”,就像老师傅示范揉面手势,让学徒模仿。
Q6. Pi0 模型的输入模态包含哪些?
- A.摄像头的视觉图像← 正确答案
- B.自然语言任务指令← 正确答案
- C.机器人本体的状态← 正确答案
- D.环境中的音频信息
答案:ABC。Pi0 接收视觉图像、语言指令和本体状态三类输入,对应主厨的“眼睛、耳朵和身体感知”。音频信息不在 Pi0 的标准输入模态中。
Q7. Pi0 相比 RT-2 最核心的差异是什么?
- A.输出连续且精细动作← 正确答案
- B.完全放弃视觉感知
- C.不再使用语言指令
- D.只能处理简单任务
答案:A。Pi0 用流匹配输出连续动作,RT-2 用文本 token 输出离散动作。连续动作能精确表达力度和角度,这是 Pi0 能胜任插拔、叠衣等精细操作的根本原因。
Q8. 机器人基础模型的训练通常包括哪些阶段?
- A.大规模预训练阶段← 正确答案
- B.下游微调适配阶段← 正确答案
- C.完全不需要任何数据
- D.跨本体多样的数据← 正确答案
答案:ABD。机器人基础模型采用“预训练 + 微调”两阶段范式:先在大规模多源数据上预训练获得通用知识,再用真机数据微调适配具体本体。跨本体多样数据正是预训练的重要特色,而“不需要数据”显然不可能。
Q9. 机器人基础模型的核心价值在于什么?
- A.理解指令并执行操作← 正确答案
- B.替代所有人类工作
- C.生成虚构的故事情节
- D.仅用于文字聊天对话
答案:A。机器人基础模型的价值在于将大模型的语义理解能力延伸到物理世界,让机器人能理解自然语言指令并执行操作。它不负责编故事或聊天,也不能替代所有人类工作。
Q10. 关于 VLA 多模态融合的正确说法有哪些?
- A.视觉与语言需要对齐← 正确答案
- B.语言要映射到动作上← 正确答案
- C.各模态彼此完全独立
- D.共享统一表示空间← 正确答案
答案:ABD。VLA 的核心是多模态对齐:视觉、语言、动作被映射到同一个表示空间,语言指令需要映射到动作上,视觉与语言相互配合。若各模态彼此独立,就无法实现“看到苹果、听到指令、做出动作”的端到端决策。