当前位置: 首页 > news >正文

论文笔记(八十)π0.5: a Vision-Language-Action Model with Open-World Generalization

π0.5: a Vision-Language-Action Model with Open-World Generalization

文章概括

引用:

---
---

主页:https://www.physicalintelligence.company/blog/pi05
原文: https://www.physicalintelligence.company/download/pi05.pdf
代码、数据和视频:


系列文章:
请在 《 《 文章 》 》 专栏中查找



宇宙声明!


引用解析部分属于自我理解补充,如有错误可以评论讨论然后改正!


摘要

为了让机器人发挥实际作用,它们必须在真实世界、实验室之外执行与实际相关的任务。虽然视觉-语言-动作(VLA)模型在端到端机器人控制上已经展示出令人印象深刻的效果,但这些模型在实际环境中的泛化能力仍是一个未解的问题。我们描述了 π 0.5 π_{0.5} π0.5,一个基于 π 0 π0 π0 的新模型,它使用在异构任务上的协同训练来实现广泛的泛化能力。 π 0.5 π_{0.5} π0.5 利用来自多个机器人、高级语义预测、网络数据和其他来源的数据,从而实现广泛可泛化的现实世界机器人操作。 我们的系统结合了协同训练和混合多模态示例,这些示例结合了图像观测、语言指令、物体检测、语义子任务预测和低级动作。 我们的实验表明,这种知识迁移对于有效的泛化至关重要,并且我们首次展示了一个端到端学习驱动的机器人系统能够在全新环境中执行长时程和灵巧的操作技能,例如在全新住宅中打扫厨房或卧室。


I. 引言

“用惊奇装满你的眼睛……看看这个世界。它比任何工厂制造或付钱买来的梦都要精彩。” ——雷·布拉德伯里,《华氏451度》

开放世界泛化代表了物理智能领域最大的未解难题之一:诸如机械臂、仿人机器人和自主车辆等具身系统,只有在能够走出实验室、应对真实世界中多样化的情境和意外事件时,才能真正发挥作用。基于学习的系统为实现广泛的泛化能力提供了一条路径,特别是近年来在自然语言处理[79,21,10,78]到计算机视觉[34,66,35,43]等领域取得的可扩展学习系统进展。然而,机器人在真实世界中可能遇到的情境多样性,不仅仅需要数据规模:我们需要设计训练“配方”,以提供足够广泛的知识,使机器人能够在多个抽象层面上实现泛化。例如,如果让一台移动机器人去清理一个它从未见过的厨房,某些行为只要在数据中有足够多样的场景和物体(例如拿起刀具或盘子),就能轻松泛化;而另一些行为则可能需要通过调整或改造现有技能,以新的方式或新的顺序来使用;还有一些行为则需要基于先验知识去理解场景的语义(例如,应该打开哪个抽屉,或台面上哪个物体最有可能是干碗架)。我们如何为机器人学习系统构建一种训练“配方”,以支持这种灵活的泛化?

人类可以凭借一生的经验,为应对上述各种挑战综合出合适的解决方案。并非所有经验都来自亲身实践,也并非都来自重复训练——例如,我们可能会利用他人告诉我们的事实或书本上读到的知识,再结合在不同情境中完成其他任务时获得的灵感碎片,以及在目标领域中的直接经验。类比地,我们可以假设,要让机器人学习系统具有泛化能力,它必须能够从多种信息源中迁移经验和知识。其中一些源自与当前任务直接相关的第一手经验,另一些则需从其他机器人平台、环境或领域中进行迁移,还有一些则完全不同的数据类型,如语言指令、基于网络数据的感知任务或高级语义命令的预测。 这些不同数据源的异构性构成了一个重大障碍,但幸运的是,视觉-语言-动作(VLA)模型的最新进展为我们提供了一套工具:通过将不同模态统一置于同一序列建模框架下,VLA 模型可以被用于机器人数据、语言数据、计算机视觉任务及上述多种组合的联合训练。

在本文中,我们利用这一观察设计了一种针对 VLA 的协同训练框架,该框架能够利用异构且多样的知识源来实现广泛的泛化能力。 π 0 π0 π0 VLA 的基础上,我们提出引入多种不同的数据源以创建 π 0.5 π_{0.5} π0.5 模型(“pi oh five”),该模型能够控制移动操作臂在训练中从未见过的家居环境中执行各种家务任务。 π 0.5 π_{0.5} π0.5 借鉴了多种来源的经验:除了在各种真实家居环境中使用移动操作臂直接收集的中等规模数据集(约400小时)外, π 0.5 π_{0.5} π0.5 还使用来自其他非移动机器人的数据、在实验室条件下收集的相关任务数据、基于机器人观测预测 “高层” 语义任务的训练示例、人类监督者提供的口头语言指令,以及从网络数据创建的多种多模态示例,如图像描述、问答和物体定位(见图1)。提供给 π 0.5 π_{0.5} π0.5 的绝大多数训练示例(在第一阶段训练中占97.6%)并非来自移动操作臂执行家务任务,而是来自上述其他来源,例如其他机器人或网络数据。尽管如此, π 0.5 π_{0.5} π0.5 仍能够在训练中从未见过的全新家居环境中控制移动操作臂,执行如挂毛巾或整理床铺等精细任务,并能够执行时长10到15分钟的长时程操作技能,仅凭一个高层指令即可清理整个厨房或卧室。

除了在各种真实家居环境中使用移动操作臂直接收集的中等规模数据集(约400小时)外, π 0.5 π_{0.5} π0.5 还使用来自其他非移动机器人的数据、在实验室条件下收集的相关任务数据、基于机器人观测预测 “高层” 语义任务的训练示例、人类监督者提供的口头语言指令,以及从网络数据创建的多种多模态示例,如图像描述、问答和物体定位(见图1)。

π 0.5 π_{0.5} π0.5 的设计遵循简单的分层架构:

  1. 我们首先在异构混合的训练任务上对模型进行预训练,
  2. 然后再使用低级动作示例高级“语义”动作对其进行专门针对移动操作的微调,这些语义动作对应于预测子任务标签,如“捡起切菜板”或“重新摆放枕头”。在运行时,每个推理步骤中,
    • 模型首先预测语义子任务,根据任务结构和场景语义推断接下来适合执行的行为,
    • 然后再基于该子任务预测低级机器人动作段。这一简单架构既能够对长时程多阶段任务进行推理,也能够在两个层面上利用不同的知识来源:低级动作推理过程可以直接受益于其他机器人收集的动作数据,包括在其他环境中的简单静态机器人;而高级推理过程则受益于来自网络的语义示例、高层注释预测,甚至是人类“监督者”可向机器人提供的口头命令,这些监督者会一步步指导机器人完成复杂任务,就像他们指导人类一样,告知其要执行哪些合适的子任务以完成诸如清理房间等复杂任务。我们在图1中展示了该设计。

1. 预训练(Pre-training)

  • 目标:让模型在各种不同任务、不同环境下积累通用的感知‐动作知识。
  • 数据来源:混合异构任务(例如:导航、抓取、避障、搬运……)以及来自不同机器人的多样动作数据。
  • 好处
    • 打好基础,使模型学到如何把传感器输入(图像、深度、点云、关节状态等)映射到运动行为的能力
    • 增强模型对新场景、新任务的适应性

2. 微调(Fine-tuning) 在预训练之上,针对“移动操作”(manipulation)这一类具体任务,用两种不同粒度的数据进一步调优:

  • 低级动作示例(Low-level action examples)
    • 真实机器人执行的运动轨迹片段,如一段抓取、抬臂、移动到某个精确位置的连续控制信号。
    • 用于让模型学会具体的控制技巧(比如怎样握住杯子、怎样平稳放下物体)。
  • 高级“语义”动作(High-level semantic actions)
    • 抽象到“子任务标签”(subtask labels),例如“捡起切菜板”、“重新摆放枕头”。
    • 这些标签本质上是对“接下来应该做什么”的语言或符号化描述。
    • 数据来源可以是:
      • 从网络抓取的示例(例如仿真环境或标注视频里的动作标注)
      • 人类监督者的口头指令或注释

3. 运行时推理流程(Inference Pipeline) 每一步决策都分两阶段完成:

  • 语义子任务预测(Semantic subtask prediction)
    • 根据当前感知和整体任务结构,先判断“我现在要执行哪个高层子任务?”
    • 举例:如果整体任务是“清理房间”,此时模型可能决定执行“把脏毛巾放进洗衣篮”这一子任务。
  • 低级动作生成(Low-level action generation)
    • 拿到子任务标签后,再去生成具体的连续控制信号,让机器人真正去完成“抓起毛巾 → 移动到洗衣篮 → 放下毛巾”这样的一段动作。

这样做的好处在于:

  • 长时程多阶段任务:模型可以像人类一样分步骤思考,每个子任务内部可细化成多个动作,天然支持复杂任务(例如“先擦桌子,再整理床铺,再吸地板”)。

  • 知识复用

    • 低层面可以直接利用大量从真实或仿真机器人收集到的运动数据,即便它们来自不同环境、不同硬件,也能学到底层运动控制技巧;
    • 高层面则可借助网络上丰富的语义示例(比如视频教程中的“打开冰箱”标注)、人类语言命令等,对“做什么”这部分有更好的理解和规划。
┌─────────────────────────────┐           ┌─────────────────────┐ 
│  感知输入(图像、点云、状态)  │   ──▶    │  语义子任务预测器    │ 
└─────────────────────────────┘           └─────────────────────┘│  “捡起切菜板”▼┌───────────────────────────┐│  低级动作生成器(运动轨迹) │└───────────────────────────┘│  控制信号(关节角度、速度)▼┌───────────────────────────┐│         机器人执行         │└───────────────────────────┘ 

在这里插入图片描述图1: π 0.5 π_{0.5} π0.5 模型从异构的多种数据源中迁移知识,包括其他机器人、高级子任务预测、口头指令以及来自网络的数据,以实现跨环境和物体的广泛泛化。 π 0.5 π_{0.5} π0.5 能够控制移动操作臂在训练数据中未出现过的新家居环境中清洁厨房和卧室,执行时长10到15分钟的复杂多阶段行为。


我们的核心贡献是一种用于训练高度可泛化 VLA —— π 0.5 π_{0.5} π0.5 的系统,同时我们提供了一个概念验证,证明当模型在适当多样的数据上训练时,泛化能力可以从中涌现。我们对 π 0.5 π_{0.5} π0.5 的泛化能力以及不同协同训练成分的相关性进行了详尽的实证评估。据我们所知,我们的工作是首个展示端到端学习驱动机器人系统能够在全新家居环境中执行长时程且灵巧的操作技能(如清理厨房或卧室)的工作。我们的实验和对比进一步表明,这一能力得益于从其他机器人、高级语义预测、人类监督者的口头语言指令、网络数据以及其他来源的知识迁移。


在这里插入图片描述图2: π 0.5 π_{0.5} π0.5 清理新厨房。机器人被指派在训练数据中未出现过的家居厨房执行清洁任务。模型接收通用任务(关闭橱柜、将物品放入抽屉、擦拭溢出物、将餐具放入水槽),并通过预测要完成的子任务(例如,捡起盘子)以及发出低级动作来执行这些任务。



II. 相关工作

通用机器人操作策略。

近期工作表明,将机器人操作策略的训练数据分布从狭窄的单任务数据集拓展到涵盖多种场景和任务的多样化数据集[17,25,80,63,41,6,30,67,1],不仅能够使所得到的策略“开箱即用”地解决更广泛的任务,还能提升其对新场景和新任务的泛化能力[9,63,62,22]。训练此类通用策略需要新的建模方法,以应对常常跨越数百种不同任务和场景的大规模多样化数据集。视觉-语言-动作模型(VLA)[23,92,42,8,83,90,55,45,3,75,64,76,84,7,37]提供了一种颇具吸引力的解决方案:通过对预训练的视觉-语言模型进行微调来实现机器人控制,VLA 能够利用其从大规模网络预训练中获得的语义知识,并将其应用于机器人领域。当与如流匹配[8]、扩散模型[55,84,52]或先进的动作标记化方案[64]等高表达力的动作解码机制相结合时,VLA 可以在现实世界中执行广泛的复杂操作任务。然而,尽管其在语言追随能力方面令人印象深刻,VLA 通常仍在与其训练数据高度匹配的环境中进行评估。 虽有研究表明,只要在更广泛的环境中收集机器人数据,即可使诸如拾取物体或打开抽屉等简单技能实现泛化[14,67,28,49,64],但想要用同样的方法来应对如清理厨房这类复杂的长时程任务——通过粗暴地扩大机器人数据收集规模来涵盖所有可能场景——是不可行的。在我们的实验中,我们在全新场景(如训练时未见过的新厨房和新卧室)中评估 π 0.5 π_{0.5} π0.5,展示了我们的 VLA 不仅能利用目标移动操作者平台的直接第一手经验,还能利用来自其他数据源的信息来实现对全新场景的泛化。这些数据源包括来自其他(非移动)机器人的数据、高层语义子任务预测,以及来自网络的数据。

非机器人数据的协同训练。

已有多项研究尝试利用多样的非机器人数据来提升机器人策略的泛化能力。先前的方法探索了从计算机视觉数据集初始化视觉编码器[85,58,57,18],或利用现成的任务规划器[38,48,73,81]。VLA 策略通常从预训练的视觉-语言模型初始化,该模型已接触大量互联网视觉和语言数据[23,92,42]。值得注意的是,VLA 架构具有灵活性,能够在多模态的视觉、语言和动作标记的输入输出序列之间进行映射。因此,VLA 将可能的迁移方法设计空间扩展到超越简单的参数初始化,支持在单一统一架构上对不仅仅是机器人动作模仿数据,而且是任意交织上述一种或多种模态的数据集进行协同训练。先前工作已证明,将 VLA 与用于训练视觉-语言模型的数据混合进行协同训练[23,92,86],可以提升其在与新物体交互或在未见场景背景下的泛化能力。在本工作中,我们超越了仅对视觉-语言模型数据的协同训练,设计了一种系统,可对 VLA 进行更广泛的机器人相关监督源的协同训练,包括来自其他机器人的数据、高层语义子任务预测和口头语言指令。 尽管多任务训练和协同训练并非新概念,但我们展示了,本系统中特定的数据源组合能够使移动机器人在全新环境中执行复杂且长时程的行为。我们认为,考虑到任务的复杂性,这种泛化能力远远超出了先前工作的结果。

使用语言进行机器人推理和规划。

大量先前工作表明,在端到端策略中加入高级推理可以显著提升长时程任务的性能[2, 36, 44, 74, 71, 4, 16, 11, 53, 88, 51, 59, 13, 70, 91, 65, 72, 47, 76, 89],尤其当高层子任务推理能够受益于大规模预训练的 LLM 和 VLM 时。我们的方法同样采用两阶段推理流程,首先推断高级语义子任务(例如,“捡起盘子”),然后基于该子任务预测动作。 许多先前方法为此采用了两个独立的模型:一个 VLM 用于预测语义步骤,另一个低级策略用于执行这些步骤[2, 71, 13, 24, 70, 72, 47]。我们的方法在高层和低层推理中使用完全相同的模型,其流程更类似于 chain-of-thought[82]或 test-time compute[39] 方法,尽管与具身 chain-of-thought 方法[88, 46, 61]不同,高层推理过程仍然以低于低层动作推理的频率运行。

Chain-of-Thought(思维链)
Chain-of-Thought prompting 是一种让大型语言模型在回答问题时“露出思路”、先生成一系列中间推理步骤再给出最终结果的技术。原始论文中,研究者通过在 Prompt 中加入像 “Let’s think step by step” 的示例或 few-shot 演示,指导模型分步拆解复杂问题,例如数学题或常识推理题,实验表明在 GSM8K 等数据集上,带有 Chain-of-Thought 的模型准确率可大幅提升,相较于直接输出答案的方式,误差显著降低 (Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, What is Chain-of-Thought Prompting (CoT)? Examples and Benefits)。

  • 工作原理
    1. 示例演示(Few-Shot Chains):在 Prompt 中给出若干道题的“<输入,思路链,输出>”三元组,让模型学习如何按步骤思考;
    2. 零样本提示(Zero-Shot CoT):直接在问题后加一句“Let’s think step by step”,也能激发模型生成中间推理;
    3. 解耦推理与生成:模型先输出一串自然语言的推理链,最后再输出答案,使得每一步都更容易对齐人类的逻辑思路。

Test-Time Compute(测试时计算量)
Test-Time Compute(TTC)指在模型 训练完成后、真正 执行推理 时所使用的额外计算资源。这不仅仅是一次常规的前向传播,而是为提升输出质量而在推理阶段投入更多算力和更复杂的策略 (What is test-time compute and how to scale it? - Hugging Face, Test-time compute is two-dimensional - Adaptive ML)。

  • 工作原理
    1. 多路径搜索(e.g. MCTS)

      • 在推理时使用蒙特卡洛树搜索(Monte Carlo Tree Search)或 Beam Search,对可能的下一个“思路”或动作进行动态探索和平衡,选出最优路径继续展开 (What is Test Time Compute? | CSA)。
    2. 自一致性采样(Self-Consistency)

      • 多次生成不同的 Chain-of-Thought,再对每条推理链的最终答案进行投票或概率重排,选出最常见或最可靠的那个,显著降低单一路径出错的风险 (Self-Consistency Improves Chain of Thought Reasoning in Language Models)。
    3. 奖励模型排序(Reward-Based Reranking)

      • 先让模型生成 N 种候选回答(或思路链+回答),再用一个奖励模型(verifier)对它们逐一打分,最终选出得分最高的结果,从而在推理时引入外部质量评估环节 (What is Test Time Compute? | CSA)。

这两者结合起来,就能在 同一个模型 内实现在不同频率、不同粒度上的推理:高层用较少的计算做“子任务选择”,低层用更多推理步骤生成“细粒度动作”,从而兼顾广度(长时程、多阶段规划)和深度(精准控制或复杂推理)。

具有开放世界泛化能力的机器人学习系统。

尽管大多数机器人学习系统在与训练数据高度匹配的环境中进行评估,但已有多项研究探索了更广泛的开放世界泛化能力。当机器人的任务仅限于一组更狭窄的基础原语(如拾取物体)时,允许任务特定假设(例如抓取预测或结合基于模型的规划和控制)的方法已被证明能够实现广泛的泛化,甚至可推广到全新住宅[40, 20, 60, 56, 29]。然而,这类方法难以轻易泛化到通用机器人可能需要执行的所有任务范围。近期,在多个领域收集的大规模数据集[41, 68, 63, 67, 14, 49]已被证明能够实现简单但端到端学习任务向新环境的泛化[33, 31, 67, 69, 26, 49, 28, 64]。然而,这些示例中的任务仍相对简单,通常时长不到一分钟,并且成功率往往较低。我们展示了 π 0.5 π_{0.5} π0.5 能够执行长时程、多阶段任务,例如将所有餐具放入水槽或将新卧室地板上的所有衣物捡起,同时实现对全新住宅的泛化。


III. 序言

视觉-语言-动作模型(VLA)通常通过在多样化的机器人示范数据集 D \mathcal{D} D 上进行模仿学习来训练,通过最大化在给定观测 o t \text{o}_t ot 和自然语言任务指令 ℓ \ell 时动作 a t \text{a}_t at(或更一般地,动作段 a t : t + H \text{a}_{t:t+H} at:t+H)的对数似然:
max ⁡ θ E ( a t : t + H , o t , ℓ ) ∼ D log ⁡ ( π θ ( a t : t + H ∣ o t , ℓ ) ) . \max_\theta \mathbb{E}_{(\text{a}_{t:t+H},\,\text{o}_t,\,\ell)\sim \mathcal{D}}\log\bigl(\pi_\theta(\text{a}_{t:t+H}\mid \text{o}_t,\ell)\bigr). θmaxE(at:t+H,ot,)Dlog(πθ(at:t+Hot,)).
观测通常包含一个或多个图像 I t 1 , … , I t n \text{I}^1_t,\dots,\text{I}^n_t It1,,Itn 以及固感状态 q t \text{q}_t qt,后者记录了机器人的关节位置。VLA 架构遵循现代语言模型和视觉-语言模型的设计,配备模态专属的分词器,将输入和输出映射为离散(“硬”)或连续(“软”)的标记表示,并使用大型自回归 Transformer 主干网络,训练其将输入标记映射到输出标记。这些模型的权重来自预训练的视觉-语言模型。

通过将策略的输入和输出编码为标记化表示,上述模仿学习问题就可以转换为在观测、指令和动作标记序列上进行下一个标记预测的简单问题,从而可以利用现代机器学习的可扩展工具对其进行优化。在实践中,图像和文本输入的分词器选择与现代视觉-语言模型保持一致。对于动作,以往工作开发了有效的基于压缩的分词方法[64],我们在预训练阶段采用了该方法。

近期一些 VLA 模型也提出通过扩散[55,84,52]或流匹配[8]来表示动作分布,从而在连续值动作段上提供更具表现力的表示。在我们模型的后训练阶段,我们将基于 π 0 π0 π0 模型[8] 的设计,使用流匹配来表示动作分布。在这一设计中,与动作对应的标记以流匹配前一步的部分去噪动作作为输入,并输出流匹配的向量场。这些标记还使用一组不同的模型权重,我们称之为“动作专家”,类似于专家混合架构。该动作专家可以专门用于基于流匹配的动作生成,并且可以显著小于 LLM 主干网络的其他部分。

1. 模型的训练目标:基于模仿学习的对数似然最大化

  • 任务形式化 给定一个多样化的机器人示范数据集 D = { ( o t , ℓ , a t : t + H ) } \mathcal{D} = \{(\mathbf{o}_t, \ell, \mathbf{a}_{t:t+H})\} D={(ot,,at:t+H)} 其中

    • o t \mathbf{o}_t ot 表示时刻 t t t 的观测(可以包括图像 I t 1 , … , I t n \text{I}^1_t,\dots,\text{I}^n_t It1,,Itn 和关节状态 q t \mathbf{q}_t qt)。
    • ℓ \ell 是自然语言形式的任务指令(比如“把杯子拿到桌子上”)。
    • a t : t + H \mathbf{a}_{t:t+H} at:t+H 是从 t t t t + H t+H t+H 这一段的连续动作序列(一个动作段)。
  • 优化目标 模型参数 θ \theta θ 通过最大化示范数据中每段动作的对数似然来训练: max ⁡ θ E ( o t , ℓ , a t : t + H ) ∼ D log ⁡ ⁣ ( π θ ( a t : t + H ∣ o t , ℓ ) ) . \max_\theta \; \mathbb{E}_{(\mathbf{o}_t,\ell,\mathbf{a}_{t:t+H})\sim\mathcal{D}}\; \log\!\bigl(\pi_\theta(\mathbf{a}_{t:t+H}\mid \mathbf{o}_t,\ell)\bigr). θmaxE(ot,,at:t+H)Dlog(πθ(at:t+Hot,)). 也就是让模型学会在看到观测 + 指令后,给出最有可能与专家演示一致的动作序列。


2. 输入输出的“标记化”:把模仿学习变成序列预测

  • 视觉与语言的分词器

    • 为图像 I t i \text{I}^i_t Iti 使用“视觉分词器”(vision tokenizer),通常是把图像切成 patch,再映射到一系列离散或连续 tokens。
    • 为文字指令 ℓ \ell 使用与现代 VLM(Vision–Language Model)一致的文本分词器(如 BPE、SentencePiece 等)。
  • 动作的分词器

    • 对连续的机器人动作(关节角度、速度、力矩等)也要做“压缩”或“量化”,形成一串离散 token,或者使用“软标记”保持连续性。
    • 这种做法能够让整个模仿学习问题“转换”为:

      给定输入标记序列(图像 tokens + 文本 tokens),自回归地“下一个动作 token”预测。

  • 自回归 Transformer 主干

    • 将所有模态的输入 token 序列拼接后,交给一个大型自回归 Transformer( π θ \pi_\theta πθ),让它一步步预测输出 token,直到生成完整的动作段。

3. 权重初始化:借力预训练的视觉-语言模型

  • 模型大部分权重来自已有的视觉-语言预训练模型,比如 CLIP、BLIP、Flamingo 等。
  • 这样一来,模型在“感知”视觉+文本方面已经拥有强大的表征能力,只需在此基础上再进行“动作预测”任务的训练或微调。

4. 后训练阶段:流匹配(Flow Matching)来建模动作分布

近年来,很多 VLA 模型发现:

  1. 压缩分词 能简化动作序列的自回归预测,但对连续性要求高的动作段,离散化会有性能损失;
  2. 扩散模型(Diffusion)流匹配(Flow Matching) 可以更自然地对连续动作分布建模。
  • 扩散 vs. 流匹配

    • 扩散模型通过在多个时刻逐步添加噪声,再学习去噪;
    • 流匹配则直接学习“给定一个噪声化动作,应该往哪个方向‘流’(转变)到真实动作分布”的向量场——实现上更直接、高效。
  • 在本方法中的应用

    • 在后训练(post-training)阶段,动作部分不再用自回归离散 token,而是用基于流匹配的连续表示。
    • 模型在每一步输入“当前噪声化后的动作状态”+“上下文 token”,输出对应的流场向量,用它来一步去噪,直至恢复成最终动作段。

5. “动作专家”(Action Expert)与专家混合架构

  • 专家混合(Mixture-of-Experts) 整个 Transformer 主干非常大,但动作去噪部分可以用更小的一组专门参数(即“动作专家”)来负责。
  • 作用与优势
    • 参数高效:《动作专家》只需关注流匹配对应的向量场预测,参数量远小于完整的 LLM 主干;
    • 模块化:当需求变化(比如想尝试不同的去噪策略),只需替换或微调动作专家,不动主干。
    • 推理加速:主干只需做一次自回归式的 token 编码,真正耗算力的去噪预测在更小的专家模块中完成。

6. 为什么这样设计?

  1. 统一框架 – 序列预测: 把视觉、语言、动作都“token化”后,模仿学习问题就变成了“下一个 token 预测”,可直接套用 Transformer 和大规模训练工具链。

  2. 借力预训练 + 模块化后训练: 视觉-语言部分重用已有模型,动作部分用自回归+流匹配分步微调,两者协同,兼顾感知、语言理解和精准控制。

  3. 连续动作的高表达能力: 流匹配相比纯离散化更好地保留了动作的连续特性,提高了生成动作段的平滑度和准确度。

  4. 可扩展与可维护: “动作专家”使模型架构更加模块化,便于未来替换新型去噪算法或扩散方案,而不影响预训练主干。


总结: 这段说明了一套端到端的 VLA 训练流程 —— 从多模态模仿学习的自回归 Transformer,到后期用流匹配增强连续动作表示,再配合参数轻量的动作专家,最终得到一个既能理解视觉与语言,又能生成高质量机器人动作的统一模型。


IV. π 0.5 π_{0.5} π0.5 模型与训练“配方”

我们在图3中概述了 π 0.5 π_{0.5} π0.5 模型及其训练“配方”。模型权重初始化自在网络数据上训练的标准视觉-语言模型(VLM),随后训练分为两个阶段:预训练阶段旨在使模型适应多样的机器人任务,后训练阶段旨在将其专门化为移动操作,并为其配备高效的测试时推理机制。在预训练阶段,所有任务(包括带机器人动作的任务)均以离散标记表示,从而实现简单、可扩展且高效的训练[64]。在后训练阶段,我们像在 π 0 π0 π0 中一样,为模型添加一个动作专家,以便既能以更细粒度表示动作,又能实现实时控制所需的更高计算效率的推理。在推理时,模型首先生成机器人要执行的高层子任务,然后在该子任务的条件下,通过动作专家预测低层动作。下文我们将先描述模型架构,随后介绍各阶段及其对应的训练任务。


在这里插入图片描述图3:模型概览。 π 0.5 π_{0.5} π0.5 的训练分为两个阶段。首先,预训练阶段结合所有不同的数据源,生成带离散标记的初始 VLA。此阶段利用多种机器人平台的数据、高层语义动作预测数据以及网络数据。机器人数据使用 FAST 动作分词器将动作表示为离散标记[64]。其次,后训练阶段专门针对移动操作的低级和高级推理进行模型微调,利用最相关的任务数据,包括人类监督者的口头指令。此阶段使用流匹配来表示动作分布,从而实现高效的实时推理以及对细粒度连续动作序列的表达能力。在推理时,模型首先推断高层子任务,然后基于该子任务预测低级动作。


1. 模型初始化:借力预训练的视觉–语言模型

  • 什么是视觉–语言模型(VLM)? 这类模型最开始在大规模网络图片与文字描述对上训练,目标是学会把“图像内容”与“自然语言描述”对应起来。
  • 为什么要用它来初始化? 机器人操作里,图像理解和语言指令理解是基础。如果不先让模型在海量的视觉+文本上打好底子,每次都要从头学习,会非常低效且效果有限。

2. 两大训练阶段:先宽泛、再专精

2.1 预训练阶段

  • 目标:让模型在各种不同类型的“任务”上都能学会把输入(图像、关节状态、文字指令)对应到输出(机器人动作)的大致规律。
  • 任务类型举例
    • 简单的“导航到房间中央”
    • “绕过障碍物”
    • “用夹子夹取物体”
  • 关键技术——离散标记表示
    • 无论是图像、文字,还是机器人动作,都被“切分”成一系列离散的 token(就像一句话被拆成一个个词)。
    • 这样做有什么好处?把复杂的模仿学习问题,变成了“给定前面一串 token,预测下一个 token 是什么”的序列建模问题,能够直接套用 Transformer 之类的高效自回归架构。
  • 效果
    • 训练简单、高效,能在大规模数据上并行加速
    • 模型学到了“看到这幅图、读到这条指令,下一步大概率应该怎么动”的通用能力

2.2 后训练阶段

  • 目标:在“预训练打底”的基础上,把模型专门训练成一台优秀的移动操作(mobile manipulation)机器人控制器,并让推理(运行时决策)既精准又够快。
  • 为什么要再来一轮?
    • 预训练覆盖了各种任务,但对“移动+抓取+精确放置”这类高要求操作,仍然需要更细粒度、更针对性的训练。
    • 同时还要考虑“运行时不能太慢”,实时控制对算力和延迟非常敏感。

3. 动作专家(Action Expert):后训练的秘密武器

  • 什么是“动作专家”?
    • 它是一小块专门负责“把子任务转换成具体连续动作”的网络参数集,类似于专门的“子模块”或“小舱”。
    • 整个大模型里,视觉+语言理解部分依旧用那套预训练的巨型 Transformer;而动作专家只管动作生成,不重复大模型已经会的事。
  • 两大好处
    1. 更加精细:动作专家可以用更细粒度的表示(比如流匹配里的一步步去噪向量),让机器人动作更平滑、更自然;
    2. 更高效:相比把所有计算都压到主干网络,动作专家体积小、计算快,能满足实时控制的延迟要求。

4. 推理流程:先“想子任务”,再“做动作”

  1. 高层子任务生成

    • 模型接收当前的观测(图像 + 关节读数)和指令,先自回归地预测一个“子任务标签”,比如“取起切菜板”、“旋转到桌面背后”。
    • 这个标签是离散的、一两个词的“小命令”,类似于人给机器人的“下一步要做什么”。
  2. 在子任务条件下调用动作专家

    • 拿到高层标签后,把它和观测一起投给动作专家。
    • 动作专家用后训练阶段学到的“流匹配”去噪网络,生成一段连续的关节轨迹,直接下发给机器人执行。
  3. 循环往复,构成长时程任务

    • 当一段轨迹执行完,模型再取新的观测,根据整体任务结构(例如“清理房间还没结束”),重复上述两步。

这种“先想好了要做哪一步(慢一点),再高频率地产生控制信号(快一点)”的做法,完美兼顾了:

  • 长期规划能力(多阶段任务拆解)
  • 实时控制能力(细粒度动作生成)

5. 端到端的“训练配方”总结

  1. 初始化:拿预训练好的视觉–语言模型当骨架
  2. 第一阶段(预训练)
    • 用多种机器人示范数据,全部用离散 token 表示
    • 在自回归 Transformer 上训练“看到输入,预测下一个 token”
  3. 第二阶段(后训练)
    • 加入“动作专家”模块
    • 用更精细的流匹配方式来表示和生成动作
    • 目标是:在实时性与精度间取得平衡
  4. 运行时
    • 高层层面:慢速生成“子任务标签”
    • 低层层面:快速调用动作专家,输出连续控制信号

为何要这么做?

  • 通用性+专精化:先打通感知与语言理解,再专门打磨移动操作
  • 效率+性能:离散化带来高效大规模训练,流匹配+动作专家带来高质量、低延迟执行
  • 模块化+易维护:视觉–语言主干、子任务预测、动作专家三部分各司其职,未来想换算法或扩充功能,只需局部更新

5. 两个阶段如何衔接?

  1. 权重衔接(最核心)

    • 预训练结束后,得到一组已经学会从“观测+指令”预测“动作 Token”的 Transformer 权重。
    • 后训练开始时,就把这组权重 直接加载 进主干网络。
    • 这样主干一上来就具备了通用的多模态—动作映射能力,无需从零学。
  2. 数据和目标衔接

    • 预训练用的数据只包括“观测+指令 → 离散动作 Token”;
    • 后训练在此基础上 增加 了“高层子任务标签”以及“连续动作向量(流匹配用)”两类监督信号。
    • 在实现上:
      1. 重用相同的 Tokenizer(视觉、文本、动作压缩)和 Transformer 架构;
      2. 在主干末端多接一个子任务分类头,专门学“观测+指令 → 子任务”;
      3. 挂一个小网络(动作专家),专门学“加噪动作 → 去噪动作向量场”。
  3. 训练策略衔接

    • 通常会 冻结大部分主干参数,只微调子任务头和动作专家,保证不破坏预训练里学到的通用能力;
    • 也可用极小学习率 微调全部参数,让模型更好地协调“全局感知”与“分层控制”。

A. π 0.5 π_{0.5} π0.5 架构

π 0.5 π_{0.5} π0.5 架构能够灵活地表示动作段分布和标记化文本输出,后者既用于协同训练任务(例如问答),也用于分层推理过程中输出高层子任务预测。模型所捕获的分布可表示为 π θ ( a t : t + H , ℓ ^ ∣ o t , ℓ ) π_θ(\text{a}_{t:t+H},\hat{\ell}|\text{o}_t,ℓ) πθ(at:t+H,^ot,),其中 o t = [ I t 1 , … , I t n , q t ] \text{o}_t=[\text{I}^1_t,\dots,\text{I}^n_t,\text{q}_t] ot=[It1,,Itn,qt] 包含了所有摄像头的图像以及机器人的配置(关节角度、夹爪位姿、机身升降位姿和底座速度) ℓ \ell 是整体任务提示(例如“收拾餐具”); ℓ ^ \hat{\ell} ^ 表示模型的(标记化)文本输出,可为预测的高层子任务(例如“捡起盘子”)或网络数据中视觉-语言提示的答案; a t : t + H \text{a}_{t:t+H} at:t+H 是预测的动作段。

我们将该分布分解为 π θ ( a t : t + H , ℓ ^ ∣ o t , ℓ ) = π θ ( a t : t + H ∣ o t , ℓ ^ ) π θ ( ℓ ^ ∣ o t , ℓ ) π_θ(\text{a}_{t:t+H},\hat{\ell}|\text{o}_t,\ell)=π_θ(\text{a}_{t:t+H}|\text{o}_t,\hat{\ell})\,π_θ(\hat{\ell}|\text{o}_t,ℓ) πθ(at:t+H,^ot,)=πθ(at:t+Hot,^)πθ(^ot,)
其中动作分布仅依赖于 ℓ ^ \hat{\ell} ^,不依赖于 ℓ \ell 。因此,高层推理对应 π θ ( ℓ ^ ∣ o t , ℓ ) π_θ(\hat{\ell}|\text{o}_t,\ell) πθ(^ot,),低层推理对应 π θ ( a t : t + H ∣ o t , ℓ ^ ) π_θ(\text{a}_{t:t+H}|\text{o}_t,\hat{\ell}) πθ(at:t+Hot,^),两者均由同一模型表示。

1. 任务和模型输出的联合分布

我们希望模型学会在时刻 t

  • 感知环境:获取所有摄像头的图像 + 机器人的自身状态(关节角度、夹爪位置、机身升降、底座速度等),我们统称为观测 o t \mathrm{o}_t ot
  • 理解指令:整体任务提示 ℓ \ell (比如“收拾餐具”)。
  • 生成两个东西
    1. 高层文本输出 ℓ ^ \hat\ell ^:这可以是对场景的问答,也可以是“下一步子任务”标签(比如“捡起盘子”)。
    2. 低层动作段 a t : t + H \mathbf{a}_{t:t+H} at:t+H:接下来机器人要执行的连续一段关节运动。

我们把这两个输出看作一个联合分布: π θ ( a t : t + H , ℓ ^ ∣ o t , ℓ ) . π_θ\bigl(\mathbf{a}_{t:t+H},\,\hat\ell \mid \mathrm{o}_t,\ell\bigr). πθ(at:t+H,^ot,). 为了便于分层推理,它被拆成两部分: π θ ( ℓ ^ ∣ o t , ℓ ) × π θ ( a t : t + H ∣ o t , ℓ ^ ) . π_θ(\hat\ell\mid \mathrm{o}_t,\ell) \;\times\; π_θ(\mathbf{a}_{t:t+H}\mid \mathrm{o}_t,\,\hat\ell). πθ(^ot,)×πθ(at:t+Hot,^).

  • 高层推理 π θ ( ℓ ^ ∣ o t , ℓ ) \;π_θ(\hat\ell\mid \mathrm{o}_t,\ell) πθ(^ot,):给定当前观测和整体指令,先预测一个文本标签 ℓ ^ \hat\ell ^
  • 低层推理 π θ ( a t : t + H ∣ o t , ℓ ^ ) \;π_θ(\mathbf{a}_{t:t+H}\mid \mathrm{o}_t,\hat\ell) πθ(at:t+Hot,^):拿到这个标签,再预测具体的连续动作段。 两部分都用“同一个” Transformer 模型参数 θ θ θ 来表示——只是分别关注输出的不同一半。

该模型对应一个 Transformer,接收 N N N 个多模态输入标记 x 1 : N x_{1:N} x1:N(这里“标记”一词泛指离散或连续输入),并输出一系列多模态输出 y 1 : N y_{1:N} y1:N,可写为
y 1 : N = f ( x 1 : N , A ( x 1 : N ) , ρ ( x 1 : N ) ) . y_{1:N}=f\bigl(x_{1:N},\,A(x_{1:N}),\,\rho(x_{1:N})\bigr)\,. y1:N=f(x1:N,A(x1:N),ρ(x1:N)).
每个 x i x_i xi 可为文本标记( x i w ∈ N x^w_i\in\mathbb{N} xiwN)、图像 patch( x i I ∈ R p × p × 3 x^I_i\in\mathbb{R}^{p\times p\times3} xiIRp×p×3)或流匹配中机器人动作的中间去噪值( x i a ∈ R d x^a_i\in\mathbb{R}^d xiaRd)。观测 o t \text{o}_t ot 和提示 ℓ \ell 构成 x 1 : N x_{1:N} x1:N 的前缀部分。

观测 o t \text{o}_t ot 和提示 ℓ \ell 指代的就是文本标记( x i w ∈ N x^w_i\in\mathbb{N} xiwN)、图像 patch( x i I ∈ R p × p × 3 x^I_i\in\mathbb{R}^{p\times p\times3} xiIRp×p×3)或流匹配中机器人动作的中间去噪值( x i a ∈ R d x^a_i\in\mathbb{R}^d xiaRd)。

“前缀(prefix)”在这里并不是指一种新的数据类型,而是强调:在实际把所有 token (不论是图像 patch、文本标记,还是动作去噪向量)连成一条序列 x 1 : N x_{1:N} x1:N 送给 Transformer 的时候,序列最开始的一段 (也就是“前缀”) 完全由“观测 o t \mathrm{o}_t ot + 提示 ℓ \ell ”构成——模型要“读”这些信息来决定后面要做什么。后续的 token(子任务标记、动作标记)才是模型要“写”出来或者“预测”出来的内容。


为什么要区分“前缀”和后面的“预测”部分?

  1. Teacher-forcing(训练时的灌输式输入)

    • 在训练阶段,为了让模型学会“看到前面的上下文,再去预测后面的标签或动作”,我们会把“前缀”(观测 + 指令)和“正确的输出 token”(子任务标签、动作 token)都一起拼在一条序列里,送入模型。
    • 模型在位置 i i i 的输出,会被用来和那个位置上的“正确 token”计算损失。
    • 但只有最前面的“前缀”是固定不变的上下文;后面的那些位置才是用来比较、计算梯度的预测目标。
  2. Inference(推理时的自回归生成)

    • 推理时,模型先被“给”前缀,也就是把观测数据和任务指令编码成那一串最开始的 token,固定住不变。
    • 然后模型一步一步、自回归地在后面生成子任务 token 和动作 token,每生成一个就把它拼回输入,继续生成下一个。

举个简单的示例

假设我们把输入/输出都拆成 token,用符号表示:

x = [ 〈IMG〉, 〈IMG〉, 〈JOINT〉, 〈TEXT〉, 〈TEXT〉,  〈TASK〉,   〈ACT1〉, 〈ACT2〉 ]↑        ↑        ↑         ↑         ↑          ↑          ↑         ↑图像patch  图像patch  关节   指令token  指令token  子任务预测  动作token  动作token 
  • 前缀部分:最开始的 [〈IMG〉, 〈IMG〉, 〈JOINT〉, 〈TEXT〉, 〈TEXT〉] 就是“观测 o t \mathrm{o}_t ot + 提示 ℓ \ell ”的所有 token。
  • 后缀部分:从 〈TASK〉 开始的 token,则是模型要 预测 的“高层子任务” ( ℓ ^ \hat\ell ^) 以及接下来的“动作段” ( a t : t + H a_{t:t+H} at:t+H)。

把它拼成一条长序列 x 1 : N x_{1:N} x1:N 有两个好处:

  1. 训练时:能用同一个自回归 Transformer,一次性对“子任务 token”和“动作 token”做监督。
  2. 推理时:先把前缀 feed 进模型,再在它后面连续生成后缀。

根据标记类型(由 ρ ( x i ) \rho(x_i) ρ(xi) 指示),每个标记不仅可由不同的编码器处理,还可在 Transformer 内由不同的专家权重处理。例如,图像 patch 通过视觉编码器,文本标记通过嵌入矩阵进行嵌入。继承 π 0 π_0 π0[8] 的设计,我们将动作标记 x i a x^a_i xia 线性投影到 Transformer 的嵌入空间,并在 Transformer 中使用单独的专家权重处理动作标记。注意力矩阵 A ( x 1 : N ) ∈ [ 0 , 1 ] N × N A(x_{1:N})\in[0,1]^{N\times N} A(x1:N)[0,1]N×N 指示一个标记是否能关注另一个标记。与大语言模型中得标准自回归注意力不同,图像 patch、文本提示和连续动作标记均使用双向注意力。

2. 多模态 Token 化与通用 Transformer

2.1 什么是“Token”? 在这里,“token”指的是模型内部处理的最小单位,它可以有三种形式:

  1. 文本 Token ( x i w ) (x^w_i) (xiw):自然语言里的一个字或词,对应一个整数序号。
  2. 图像 Patch ( x i I ) (x^I_i) (xiI):把摄像头捕获到的一张大图,切分成若干 p × p p\times p p×p 的小方块,每个方块直接作为一个小的 RGB 数组。
  3. 动作中间去噪值 ( x i a ) (x^a_i) (xia):流匹配方法中,用来一步步“去噪”还原到专家演示动作的连续向量,一般是一个 d d d 维浮点向量。

把当前时刻的所有观测(所有图像 patch + 机器人状态)和指令先转成这样的一串 token x 1 : N x_{1:N} x1:N,再送进一个大型 Transformer 网络里。

2.2 Transformer 如何处理不同 Token? 在标准大模型里,所有 token 用同一套参数和同一套注意力规则处理。但这里有两点不同:

  1. 多专家混合(Mixture-of-Experts)

    • 模型内部为不同类型的 token 准备了不同的“专家”权重。
    • 图像 token 先通过一个视觉编码器,再进入“视觉专家”;
    • 文本 token 先通过文本嵌入层,再进入“语言专家”;
    • 动作 token 线性投影后,进入“动作专家”那一小组参数。 这样可以让每种模态的信息,都被最适合它的那批参数来处理。
  2. 自定义注意力结构

    • 注意力矩阵 A ( x 1 : N ) ∈ [ 0 , 1 ] N × N A(x_{1:N})\in[0,1]^{N\times N} A(x1:N)[0,1]N×N 指明“第 i i i 个 token 能否关注(attend to)第 j j j 个 token”。
    • 与普通语言模型里严格的“左侧只能看左侧”不同,这里所有图像 patch、指令 token、动作 token 都用双向(bidirectional) 注意力——也就是说,任意两个 token 之间都可以互相参考。

综上,模型函数可以写成 y 1 : N = f ⁣ ( x 1 : N , A ( x 1 : N ) , ρ ( x 1 : N ) ) , y_{1:N} \;=\; f\!\bigl(x_{1:N},\,A(x_{1:N}),\,\rho(x_{1:N})\bigr), y1:N=f(x1:N,A(x1:N),ρ(x1:N)), 其中 ρ ( x i ) \rho(x_i) ρ(xi) 标识第 i 个 token 的类型(图像/文本/动作),用来调度上面提到的不同专家权重。

由于我们希望模型既能输出文本(回答场景问题或输出下一个要完成的任务),也能输出动作(在世界中执行操作),因此函数 f f f的输出被分别拆分为文本标记的logits和动作输出标记,即 ( y 1 : M ℓ , y 1 : H a ) (y_{1:M}^\ell,\,y_{1:H}^a) (y1:M,y1:Ha)。前 M M M个对应文本标记的logits,可用于采样 ℓ ^ \hat{\ell} ^;后 H H H 个标记由一个独立的动作专家产生(如同 π 0 π_0 π0中所用),并通过线性映射投影为连续输出,以得到 a t : t + H \text{a}_{t:t+H} at:t+H(详见下一节)。注意 M + H ≤ N M+H \le N M+HN,即并非所有输出都关联损失。机器人本体感觉状态被离散化,并作为文本标记输入模型。关于架构的更多细节,请参见附录E。

3. 模型的多头输出

Transformer 处理完一串输入 token,会输出一串对应的输出表示 y 1 : N y_{1:N} y1:N。我们把它拆成两部分:

  1. 文本输出 y 1 : M ℓ y_{1:M}^\ell y1:M

    • 这是前面 M M M 个输出,用来预测下一个要生成的文本 token
    • 例如,根据场景问答或子任务预测,我们会对这些 logits 进行 Softmax,采样或取最大值,得到 ℓ ^ \hat\ell ^(一串离散的文本 token)。
  2. 动作输出 y 1 : H a y_{1:H}^a y1:Ha

    • 这是后面 H H H 个输出,由专门的“动作专家”产生。
    • 它们先是一些中间向量,再通过一层线性映射(projection)变成连续的关节控制信号 a t : t + H \mathbf{a}_{t:t+H} at:t+H

注意因为预测高层子任务和低层动作是两个不同的监督目标,所以我们通常只对前 M M M 个文本 logits 应用“交叉熵”损失,对后 H H H 个动作输出使用“流匹配”或回归损失。 M + H M+H M+H 可以小于或等于 N N N,意味着不一定所有的输出都参与训练。


为什么 M + H M+H M+H 可以小于或等于 N N N

  1. N N N ——Transformer 一次能够处理的最大 token 数。
  2. 前缀长度 L L L ——这个时刻真正的“观测+指令”token 个数(图像 patch + 关节状态 token + 文本指令 token)。
  3. 输出长度 M + H M+H M+H
    • M M M:高层要预测的“文本”token 数(子任务或问答)。
    • H H H:低层要预测的“动作”token 数(流匹配里每一步的连续向量 token)。

训练时,我们把“前缀 + 输出”拼成一条长度恰好为 L + ( M + H ) L + (M+H) L+(M+H) 的序列,理论上这 L + M + H L + M + H L+M+H 就等于 N N N(如果不做额外 padding)。

  • 前缀(位置 1 到 L L L)存放“观测 o t \mathrm{o}_t ot + 指令 ℓ \ell ”的 token。
  • 后缀(位置 L + 1 L+1 L+1 L + M + H L+M+H L+M+H)存放要预测的子任务 token( M M M 个)和动作 token( H H H 个)。

因此,确实在有真实前缀 L > 0 L>0 L>0 的情况下,你会有 L + ( M + H ) = N ⟹ M + H < N . L + (M+H) \;=\; N \quad\Longrightarrow\quad M+H \;<\; N. L+(M+H)=NM+H<N.

那为什么文档里写的是 “ M + H ≤ N M+H \le N M+HN” 而不是 “ < N <N <N”?

  • 通用表述
    • 写成不严格的小于等于,是为了涵盖各种可能:
      • 最典型场景:机器人任务里有前缀, L > 0 L>0 L>0,那么 M + H = N − L < N M+H = N-L < N M+H=NL<N
      • 特殊场景:比如纯语言任务(只有问答)、或者只生成动作没有输入观测,这时前缀可以为空, L = 0 L=0 L=0,就会有 M + H = N M+H = N M+H=N
  • Padding 对齐
    • 在大规模训练里,我们常常会把所有序列 pad 到统一的“最大长度” N N N,于是有的序列前面或后面会被补入无意义的 pad token。但这些 pad 位置并不参与损失计算,也不算在“真实”输出里。
    • 因此,文中才用“ ≤ N \le N N”来表示“预测目标 M + H M+H M+H)最多不能超过模型的最大输入/输出容量 N N N”。

B. 结合离散与连续动作表示

π 0 \pi_0 π0类似,我们在最终模型中使用流匹配[50]来预测连续动作。给定
a t : t + H τ , ω = τ a t : t + H + ( 1 − τ ) ω , ω ∼ N ( 0 , I ) , \text{a}_{t:t+H}^{τ,ω}=τ\text{a}_{t:t+H}+(1-τ)ω,\quad ω∼\mathcal N(0,\text{I}), at:t+Hτ,ω=τat:t+H+(1τ)ω,ωN(0,I),
其中 τ ∈ [ 0 , 1 ] τ∈[0,1] τ[0,1]是流匹配时间索引,模型被训练以预测流场向量 ω − a t ω - \text{a}_t ωat。然而,如[64]所示,当动作以离散标记表示时,VLA训练速度会大幅提升,尤其是在使用能够高效压缩动作段的分词方案(例如FAST)时。不幸的是,这种离散表示不太适合实时推理,因为它们需要代价高昂的自回归解码[64]。因此,理想的模型设计应当在离散化动作上进行训练,但在推理时仍能使用流匹配来生成连续动作。

1. 为什么要同时用“离散”与“连续”动作表示?

  • 离散表示(Token 化)

    • 把一整段连续的机器人动作(关节角度随时间变化的轨迹)用一个高效的分词器(如 FAST)压缩成一串离散 token。
    • 优点:在大规模预训练时,自回归地预测这些 token 往往比直接处理连续向量更快、更稳定。
    • 缺点:推理阶段如果要逐 token 生成,一字一句地自回归,延迟较高,不符合实时控制需求。
  • 连续表示(流匹配/Flow Matching)

    • 把动作当成一个“噪声—去噪”过程:从随机噪声 ω ω ω 开始,模型一步步学习如何“流”回专家演示的真实动作 a t : t + H \mathbf{a}_{t:t+H} at:t+H
    • 优点:去噪通常可以并行做多步,预测整个轨迹的延迟更低,适合实时控制。
    • 缺点:如果直接用连续去噪来训练,在大规模数据和长序列上往往比离散 token 自回归要慢得多。

→ 理想的做法是:训练时用离散 token 提升速度,推理时用连续去噪提升实时性


2. 流匹配核心公式

给定专家示范动作段 a t : t + H \mathbf{a}_{t:t+H} at:t+H,我们在流匹配中插入噪声: a t : t + H τ , ω = τ a t : t + H + ( 1 − τ ) ω , ω ∼ N ( 0 , I ) , τ ∈ [ 0 , 1 ] . \mathbf{a}_{t:t+H}^{\tau, \omega} \;=\; \tau \,\mathbf{a}_{t:t+H} \;+\; (1-\tau)\,\omega, \quad \omega \sim \mathcal{N}(0,\text{I}), \quad \tau \in [0,1]. at:t+Hτ,ω=τat:t+H+(1τ)ω,ωN(0,I),τ[0,1].

  • τ \tau τ 越接近 1,表示“越干净”/越接近真实动作;越接近 0,表示“越噪声”。
  • 模型的任务是学习一个函数 f θ a f^a_θ fθa,从“带噪动作” a τ , ω \mathbf{a}^{\tau,ω} aτ,ω 中预测出 去噪向量场 ω − a t : t + H , \omega - \mathbf{a}_{t:t+H}, ωat:t+H, 即告诉我们“如何一步一步把噪声变回真实动作”。

因此,我们的模型既通过自回归采样标记(使用FAST分词器),又通过对流场的迭代积分来预测动作,结合了两者的优点。我们使用注意力矩阵来确保不同的动作表示不会相互关注。我们的模型被优化以最小化组合损失

E D , τ , ω [ H ( x 1 : M , f θ ℓ ( o t , ℓ ) ) + α ∥ ω − a t : t + H − f θ a ( a t : t + H τ , ω , o t , ℓ ) ∥ 2 ] . (1) \mathbb{E}_{D,τ,ω}\bigl[H(x_{1:M},f^ℓ_θ(\text{o}_t,ℓ))+α\|\omega - \text{a}_{t:t+H} - f^a_θ(\text{a}_{t:t+H}^{τ,ω},\text{o}_t,ℓ)\|^2\bigr]. \tag{1} ED,τ,ω[H(x1:M,fθ(ot,))+αωat:t+Hfθa(at:t+Hτ,ω,ot,)2].(1)

其中 H ( x 1 : M , y 1 : M ℓ ) H(x_{1:M},y_{1:M}^ℓ) H(x1:M,y1:M)是文本标记与预测logits(包括FAST编码的动作标记)之间的交叉熵损失, y 1 : H a = f θ a ( a t : t + H τ , ω , o t , ℓ ) y_{1:H}^a=f_θ^a\bigl(\text{a}_{t:t+H}^{τ,ω},\,\text{o}_t,\,ℓ\bigr) y1:Ha=fθa(at:t+Hτ,ω,ot,) 是来自(较小的)动作专家的输出, α ∈ R α∈ℝ αR是用于权衡的参数。该方案使我们能够首先在预训练阶段以将动作映射到文本标记的方式( α = 0 α=0 α=0)训练出一个标准的VLM Transformer模型,然后在后训练阶段添加预测连续动作标记的动作专家权重,以非自回归方式实现快速推理。我们发现,遵循此流程(下文将进一步解释)能够带来稳定的预训练效果和出色的VLA模型语言跟随能力。在推理时,我们首先对文本标记 ℓ ^ \hat{\ell} ^使用标准的自回归解码,然后在文本标记条件下进行10步去噪,以生成动作 a t : t + H \text{a}_{t:t+H} at:t+H

3. 训练时用的联合损失

我们要同时训练两件事:

  1. 文本与离散动作的自回归预测
  2. 连续动作的流匹配去噪

公式(1)给出了它们的组合: E D , τ , ω [ H ( x 1 : M , f θ ℓ ( o t , ℓ ) ) + α ∥ ω − a t : t + H − f θ a ( a t : t + H τ , ω , o t , ℓ ) ∥ 2 ] . \mathbb{E}_{D,\tau,\omega}\Bigl[\, H\bigl(x_{1:M},\,f^ℓ_θ(\mathrm{o}_t,\ell)\bigr) \;+\; \alpha\,\bigl\|\omega - \mathbf{a}_{t:t+H} - f^a_θ(\mathbf{a}_{t:t+H}^{\tau,ω},\,\mathrm{o}_t,\,\ell)\bigr\|^2 \Bigr]. ED,τ,ω[H(x1:M,fθ(ot,))+α ωat:t+Hfθa(at:t+Hτ,ω,ot,) 2].

  • 第一项 H ( x 1 : M , y 1 : M ℓ ) = H ( x 1 : M , f θ ℓ ( o t , ℓ ) ) H\bigl(x_{1:M},\,y_{1:M}^ℓ\bigr) = H\bigl(x_{1:M},\,f^ℓ_θ(\mathrm{o}_t,\ell)\bigr) H(x1:M,y1:M)=H(x1:M,fθ(ot,))交叉熵损失,用来度量模型在自回归地预测前 M M M 个文本 token(包括 FAST 编码的离散动作 token)时的准确性。

  • 第二项 ∥ ω − a t : t + H − f θ a ( a τ , ω , o t , ℓ ) ∥ 2 \|\omega - \mathbf{a}_{t:t+H} - f^a_θ(\mathbf{a}^{\tau,ω},\,\mathrm{o}_t,\,\ell)\|^2 ωat:t+Hfθa(aτ,ω,ot,)2去噪向量场的均方误差,用来训练动作专家 f θ a f^a_θ fθa 从带噪连续动作 a τ , ω \mathbf{a}^{\tau,ω} aτ,ω 中恢复到真实动作 a t : t + H \mathbf{a}_{t:t+H} at:t+H

  • α \alpha α 是一个超参数,用来平衡“文本+离散动作预测”与“连续去噪”两部分损失的重要性。


4. 两阶段训练与衔接

  1. 预训练阶段( α = 0 \alpha=0 α=0

    • 只用第一项损失,也就是 标准的视觉–语言–动作(VLM)自回归训练
    • 动作完全用离散 token 表示,不涉及流匹配,训练速度快、数据利用率高。
  2. 后训练阶段

    • 在预训练的 Transformer 主干基础上,挂上“动作专家” f θ a f^a_θ fθa
    • 同时优化两项损失(交叉熵+流匹配),令模型既保留预训练时的自回归能力,也学会连续去噪的技巧。
    • 注意:因为动作专家是一个相对小的模块,非自回归(并行)执行流匹配去噪,所以推理更快。

5. 推理(Inference)流程

  1. 自回归解码文本标记 ℓ ^ \hat\ell ^
    • 首先用主干模型以标准的自回归方式,预测文本输出(子任务标签或 FAST 编码动作 token)。
  2. 连续动作生成
    • 之后在文本标记条件下,调用动作专家做 十步流匹配去噪(十步迭代去噪而不是逐 token 解码),快速恢复成最终的连续动作段 a t : t + H \mathbf{a}_{t:t+H} at:t+H

这样,模型在训练速度(离散自回归)和推理速度(连续流匹配并行去噪)之间取得了最佳平衡,同时保证了模型语言跟随能力和动作生成质量。

C. 预训练

在第一个训练阶段, π 0.5 π_{0.5} π0.5 在广泛的机器人与非机器人数据上进行训练,如下所述并在图4中示意。此阶段以标准自回归 Transformer 的方式训练,通过下一个标记预测来输出文本、物体位置以及 FAST 编码的动作标记。


在这里插入图片描述图4:预训练和后训练任务示例。 π 0.5 π_{0.5} π0.5 在预训练阶段使用了来自移动操作臂的多样化数据(MM)、不同环境中非移动机器人的数据(ME)、实验室条件下跨形态收集的数据(CE)、高层子任务预测数据(HL)以及多模态网络数据(WD)。
在后训练阶段,我们额外使用口头指令数据(VI),并省略实验室跨形态数据(CE),以便将模型专注于移动操作和多样化环境。图中展示了每类任务的示例子集。


  1. 多样化移动操作臂数据(Diverse Mobile Manipulator data,MM)。
    我们使用了约 400 小时的移动操作臂在约 100 个不同家居环境中执行家务任务的数据,其中部分环境如图7 所示(使用第 IV-E 节中描述的机器人)。该部分训练集与我们的评估任务最为直接相关,评估任务同样是对新的、未见过的家居环境进行清洁和整理。

  2. 多环境非移动机器人数据(Diverse Multi-Environment non-mobile robot data,ME)。
    我们还在多种家居环境中收集了非移动机器人的数据,这些机器人为单臂或双臂,固定在工作台面或支架上。由于它们相对更轻且易于搬运,我们能够在更多样的家庭环境中收集到更丰富的数据集。但这部分 ME 数据与移动机器人属于不同的实体形态。

  3. 跨形态实验室数据(Cross-Embodiment laboratory data,CE)。
    在实验室中,我们在更简单的桌面环境和多种机器人类型上收集了广泛任务的数据(如布置餐桌、叠放衬衫)。其中有的任务与我们的评估高度相关(如将餐具放入回收箱),有的则关联度较低(如研磨咖啡豆)。该数据包含单臂与双臂机械臂,并包括静态底座与移动底座。我们还纳入了开源的 OXE 数据集[15],该数据集是用于 π 0 π0 π0[8] 的数据集的扩展版本。

  4. 高层子任务预测(High-Level subtask prediction,HL)。
    将“清理卧室”这样的高层任务指令分解为“整理被子”“捡起枕头”等更短子任务,类似于语言模型的 chain-of-thought 提示,有助于已训练策略对当前场景进行推理并更好地确定下一步动作。对于包含多子任务的 MM、ME 和 CE 中的机器人数据,我们手动为所有数据标注子任务的语义描述,并训练 π 0.5 π_{0.5} π0.5 联合预测子任务标签(文本形式)以及基于当前观测和高层指令、结合子任务标签的动作。这自然使模型既能作为高层策略(输出子任务),也能作为低层策略来执行对应动作。我们还为当前观测中相关的目标物标注边界框,并训练 π 0.5 π_{0.5} π0.5 在预测子任务前首先预测这些边界框。

  5. 多模态网络数据(Multi-modal Web Data,WD)。
    最后,我们在预训练中加入了多样的网络数据集,涵盖图像描述(CapsFusion[87]、COCO[12])、问答(Cambrian-7M[77]、PixMo[19]、VQAv2[32])和物体定位。对于物体定位,我们在标准数据集基础上扩充了室内场景和家用物体的网络图像与边界框标注数据。

对于所有动作数据,我们训练模型预测目标关节和末端执行器位姿。为区分两者,我们在文本提示中加入“<control mode> joint/end effector <control mode>”。所有动作数据都使用各自数据集中每个动作维度的 1% 与 99% 分位数归一化到 [ − 1 , 1 ] [-1,1] [1,1]。我们将动作向量维度设置为能容纳所有数据集中最大动作空间的固定大小;对于低维配置与动作空间的机器人,则对动作向量进行零填充。

1. 分位数归一化到 [ − 1 , 1 ] [-1,1] [1,1]

  • 为什么要归一化? 不同机器人、不同动作维度的数值范围可能相差很大:有的关节角度范围是 [ − 180 ° , 180 ° ] [-180°,180°] [180°,180°],有的位置坐标范围可能是 [ − 1.0 m , + 1.0 m ] [-1.0\,\text{m},+1.0\,\text{m}] [1.0m,+1.0m]。直接用原始值喂模型,会导致训练不稳定、收敛慢。

  • 1%–99% 分位数归一化

    • 步骤
      1. 对每个动作维度(每个关节角度、每个位置坐标)分别计算该数据集里 1% 分位数(几乎最小的值)和 99% 分位数(几乎最大的值)。
      2. 把这些极端值线性映射到 − 1 -1 1 + 1 +1 +1;超出这个范围的值会被截断(clamp)到 [ − 1 , 1 ] [-1,1] [1,1]
    • 好处
      • 对异常值(outliers)不那么敏感,因为用 1%/99% 分位数而不是最小/最大值。
      • 不同动作维度被拉到同一个数值区间,网络更容易同时学习它们。

2. 固定大小的动作向量与零填充

  • 为什么要固定维度? 我们往往要把来自多个机器人或多个数据集的演示数据混合在一起训练,而不同机器人能控制的自由度(动作维度)数目可能不同:

    • 比如同一个框架下既有 6-DOF 机械臂,也有 7-DOF 机械臂。
    • 或者还有移动底盘/多臂组合,动作空间更大。

    如果每条示范都用“刚好合适”的维度,那么批处理(batched training)就无法一次性拼在一起。

  • 具体做法

    1. 在所有数据集中,找到最大的动作维度数 D max ⁡ D_{\max} Dmax
    2. 把每条动作都表示成长度为 D max ⁡ D_{\max} Dmax 的向量。
    3. 对于那些动作维度比 D max ⁡ D_{\max} Dmax 少的机器人,把“多余”的位置全部填成 0(零填充)。
  • 优点

    • 统一 Batch:同一批里,不同机器人示范都能直接拼成形状一致的张量 ( batch size , D max ⁡ ) (\text{batch size}, D_{\max}) (batch size,Dmax)
    • 模型设计简单:网络的动作输出层只需固定输出 D max ⁡ D_{\max} Dmax 维,不用根据不同机器人动态调整。

D. 后训练

在使用离散标记预训练模型280 k步梯度更新后,我们进行了第二阶段训练,称为后训练。此阶段的目的是:

  1. 将模型专门化于我们的使用场景(家庭中的移动操作);
  2. 添加一个能够通过流匹配生成连续动作段的动作专家。

该阶段的训练同时包括:

  • 下一标记预测,用于保留模型的文本预测能力;
  • 针对动作专家的流匹配训练(动作专家在后训练开始时以随机权重初始化)。

我们优化式 (1) 中的目标函数,并将 α = 10.0 α=10.0 α=10.0,额外训练80 k步。

后训练的动作数据集包括来自MM和ME机器人的数据,筛选为低于固定长度阈值且成功的轨迹。我们还包含网络数据(WD)以保留模型的语义与视觉能力,以及对应多环境数据集的HL数据切片。

此外,为了提升模型预测合适高层子任务的能力,我们收集了口头指令演示(VI)。这些演示由专家用户提供“语言演示”,选择适当的子任务命令,以逐步指挥机器人执行移动操作任务。这些示例通过对机器人进行实时“遥操作”并以语言引导其使用已学得的低级策略完成任务,从而为训练好的策略提供优质的高层子任务输出示范。

E. 机器人系统细节

我们在移动操作实验中使用的机器人系统如图5所示。所有实验均使用两种类型的移动操作臂平台。两种平台都配备了两条 6 自由度机械臂,带并联颚式夹爪和腕部单目 RGB 摄像头;一个全向移动底座;以及一个躯干升降机构。底座的状态和动作空间对应于线性(二维)和角速度(一维),躯干升降机构则为一维(上下)或二维(上下及前后)。

除了两只腕部摄像头,机器人在两臂之间还各装有一个前置和后置摄像头。我们在高层推理时使用所有四个摄像头,而在低层推理过程中使用腕部和前置摄像头。整个状态与动作空间的维度为 18 或 19,取决于具体平台。

控制系统非常简单: π 0.5 π_{0.5} π0.5 模型以 50 Hz 的频率(带动作段)直接下达机械臂、夹爪和躯干升降的目标位姿,以及底座的目标速度。这些目标由简单的 PD 控制器跟踪,无需额外的轨迹规划或碰撞检测。所有的操作和导航控制均为端到端实现。


在这里插入图片描述图5:机器人系统概览。我们使用两种移动操作臂平台——每个平台配备四个摄像头(前置、后置及双腕)、两条带并联颚式夹爪的 6 自由度机械臂、一个移动底座和一个躯干升降机构。 π 0.5 π_{0.5} π0.5 模型控制每条臂的关节和夹爪、底座速度及升降位置,形成 18–19 自由度的状态和动作空间。



V. 实验评估

π 0.5 \pi_{0.5} π0.5 模型旨在对新环境实现广泛的泛化。尽管通常在与训练数据相匹配的环境中评估 VLA,我们的所有实验都在训练中未见过的新环境中进行。为了进行定量比较,我们使用一组模拟家居环境来提供可控且可重复的实验设置,而最真实的最终评估则在三个未包含于训练集的真实家居中进行(见图6)。我们的实验关注以下问题:

  1. π 0.5 \pi_{0.5} π0.5 是否能够在全新住宅中对复杂的多阶段任务实现有效泛化?
  2. π 0.5 \pi_{0.5} π0.5 的泛化能力如何随着训练数据中不同环境数量的增加而变化?
  3. π 0.5 \pi_{0.5} π0.5 训练混合中各个协同训练成分如何促进其最终性能?
  4. π 0.5 \pi_{0.5} π0.5 π 0 \pi_{0} π0 VLA 相比表现如何?
  5. π 0.5 \pi_{0.5} π0.5 的高层推理组件有多重要?其与扁平的低层推理以及理想化的高层基线相比如何?

在这里插入图片描述图 6:评估环境。我们在训练中未见过的全新厨房和卧室中评估 π 0.5 \pi_{0.5} π0.5,场景包含新颖的物体、背景和布局。左图为一组模拟房间,用于可控且可复现的定量对比;右图为真实家庭,用于更具现实性的最终评估。


A. π 0.5 \pi_{0.5} π0.5 能否在真实家庭中泛化?

为回答问题(1),我们在三个训练集中未出现的真实家庭中,使用两种移动操作臂对 π 0.5 \pi_{0.5} π0.5 进行了评估。在每个家庭里,机器人被指示分别执行卧室和厨房清洁任务。每个任务的评估标准详见附录 B,大致对应于任务中成功完成步骤的百分比(例如,将一半的餐具放入水槽约对应 50%)。图 7 的结果显示, π 0.5 \pi_{0.5} π0.5 能够在各家庭的多种任务上持续取得成功(同时,该模型还能执行更多未包含在我们定量评估中的任务)。许多任务涉及多阶段操作(例如移动多个物体),持续约 2 到 5 分钟。在这些试验中,模型接收简单的高层指令(例如“把餐具放进水槽”),并通过高层推理流程自主确定合适的子步骤(例如“捡起杯子”)。这种在野外环境中的泛化能力——无论是应对新颖场景的程度,还是任务的时长与复杂性——都远超以往视觉-语言-动作模型的表现。


在这里插入图片描述(a) 示例流程。可视化每个家庭中一个任务的 π 0.5 \pi_{0.5} π0.5 典型执行过程。从上到下依次为:在家庭 1 的抽屉中放置物品;在家庭 2 的水槽中放置餐具;在家庭 3 的洗衣篮中放置衣物。每个流程的左侧为人类指令,蓝色文本为 π 0.5 \pi_{0.5} π0.5 的高层子任务预测。

在这里插入图片描述(b) 定量评估。展示每个任务和环境在 10 次试验中的平均任务进度,结果表明 π 0.5 \pi_{0.5} π0.5 在模拟评估设置中的表现与其在真实家庭中的表现相当。

图 7:在真实家庭中的评估。我们在三个真实家庭的三个厨房和三个卧室(训练中未出现)中评估 π 0.5 \pi_{0.5} π0.5,任务包括“放入抽屉”、“放入洗衣篮”和“放入水槽”,结果显示 π 0.5 \pi_{0.5} π0.5 能在这些全新真实家庭中成功完成上述任务。


B. 随着场景数量的增加,泛化能力如何变化?

在下一组实验中,我们旨在衡量泛化能力如何随着训练数据中环境数量的变化而变化。我们将移动操作数据中的环境数量设为 3、12、22、53、82 和 104 个地点,并通过训练相应数据来测量其对泛化的影响。由于将整个预训练和后训练流程分别应用于每个数据集在计算上过于昂贵,因此在这些实验中,我们在不包含移动操作数据的机器人动作预测混合数据上进行预训练,然后对包含不同数量移动操作环境数据的各模型进行后训练并比较其性能。虽然按地点划分的数据集在大小上原则上有所不同,但实际上我们选用了固定的训练步数(40k),以确保每个模型都见到相同数量的独立数据样本,从而在改变地点数量时控制数据集规模这一变量。

每个模型都在图6所示的模拟环境中进行评估,这些环境在训练中未曾出现。我们进行了两类评估。

  1. 首先,为评估多阶段任务的整体性能,我们使用附录 B 中的标准评估指标和模拟测试房间,评估各模型在“把餐具放进水槽”、“把物品装进抽屉”、“放好洗衣物”以及“铺床”这四个端到端任务上的表现。
  2. 其次,我们对各模型遵循语言指令和与新物体互动的能力进行更细粒度评估:机器人需根据语言命令从厨房台面上取出指定物体。这些实验既使用训练数据中相似类别但新的实例(“同分布”物体),也使用训练中从未出现过的新类别(“超分布”物体)。后者需要广泛的语义泛化能力。

第一项实验的结果如图8所示。随着训练环境数量的增加,四个测试任务的平均表现总体上都有所提升。为了量化最终模型(104 个地点)在泛化差距上的弥合程度,我们还包含了一个对照组(绿色),该模型直接在测试房间的数据上训练。该对照组的表现与最终的 104 地点模型相当,表明我们的协同训练“配方”能够有效地实现广泛泛化,达到与直接在测试环境上训练模型相似的性能。为了确认这种泛化表现确实依赖于我们完整的协同训练流程,我们还加入了两个基线:一个仅在测试环境数据上训练(浅绿色),另一个仅在 104 个训练地点的移动操作数据上训练(浅黄色),都未在预训练阶段使用其他协同训练任务。这两个基线的表现都显著较差——这表明,即便策略已见过测试房间的机器人数据,我们的完整训练流程所利用的其他数据源对于良好泛化仍然至关重要。当不使用测试房间的数据时,通过我们的“配方”进行预训练尤为重要,正如图8中绿色柱和浅黄色柱之间的巨大差距所示。


在这里插入图片描述图8:在不同训练地点数量情况下的性能评估。“放餐具进水槽”、“装抽屉物品”、“放洗衣物”和“铺床”四个测试任务的性能随着训练环境数量的增加而提升。虚线绿色和绿色柱表示将测试房间数据包含在训练集中的基线模型。尽管我们的最佳模型未见过任何测试房间数据,其表现仍与该基线相近。


第二项实验(语言跟随)的结果如图9所示。我们报告了语言跟随率(机器人选中语言命令中指示物体的频率)和成功率(机器人将该物体成功放置到正确位置——抽屉或水槽——的频率)。我们分别对训练中见过类别(但新实例)和未见过类别(超分布)进行性能评估。该实验的细节见附录 C。图9 显示,随着训练地点数量的增加,语言跟随性能和成功率均稳步提升。正如预期,对于同分布物体的表现提升速度快于超分布物体。随着每新增一个环境引入新的家用物件,模型的鲁棒性总体上得到增强,并开始泛化到训练数据中未出现的任务类别。


在这里插入图片描述图9:在不同训练地点数量情况下的语言跟随评估。我们评估机器人依据语言命令拾取指定物品并将其放入抽屉或水槽的语言跟随率和成功率,并分别在同分布(训练中见过类别)和超分布(未见过类别)物体上统计。随着训练地点数量的增加,性能逐步提升。


C. 我们的协同训练“配方”中各部分的重要性如何?

为研究问题(3),我们将完整的 π 0.5 π_{0.5} π0.5 模型与其它不同训练混合方式进行对比,考察每个混合成分的重要性,仍然使用模拟家居中的端到端任务表现和第 V-B 节描述的语言跟随评估。回顾一下,我们的完整“配方”使用了:

  • 多环境移动操作臂数据(MM);
  • 多环境静态操作臂数据(ME);
  • 实验室条件下跨形态数据(CE);
  • 需要预测高层语言命令的高层子任务数据(HL);
  • 对应图像描述、视觉问答和物体定位任务的网络数据(WD)。
  • 后训练阶段还使用了口头指令数据(VI),我们将在第 V-E 节进行分析。

在这些实验中,我们对混合成分进行了如下消融:

  1. no WD:排除网络数据;
  2. no ME:排除多环境静态机器人数据;
  3. no CE:排除实验室跨形态数据;
  4. no ME or CE:同时排除来自其他机器人的两类数据源,使模型仅在目标移动操作臂平台数据及网络数据上训练。

完整模拟家居任务的结果见图10(各任务的详细表现分解见附录 D)。首先可见,排除任一跨形态数据源(ME 或 CE)都会显著降低性能,表明 π 0.5 π_{0.5} π0.5 从跨形态迁移中获益良多,既来自不同环境的 ME,又来自不同任务的 CE。排除两者则造成更大的性能下降。有趣的是,本次实验中排除网络数据(no WD)的性能差异并不具统计显著性,但我们稍后会展示网络数据对语言跟随(见下文)和高层子任务推断(第 V-E 节)有较大影响。


在这里插入图片描述图 10 端到端任务表现(模拟家居) 显示了在四个测试任务(“餐具放水槽”、“物品装抽屉”、“放入洗衣篮”、“铺床”)上的平均成绩(每个策略和任务 10 次试验)。结果表明:

  • 去除任一跨形态数据源(ME 或 CE)都会显著降低性能,说明 π 0.5 π0.5 π0.5 大受益于跨形态迁移,无论是环境多样性(ME)还是任务多样性(CE)。
  • 同时去除 ME 和 CE 时性能进一步恶化。
  • 在本实验中,去除网络数据(no WD)的性能差异并不显著,但我们将在后续图 11 和图 13 中看到网络数据对物体泛化和高层推理有重要影响。

语言跟随实验结果见图11,趋势与图10 类似——排除 ME 和/或 CE 数据都会显著破坏性能。不同之处在于,当移除网络数据(no WD)后,对超分布(OOD)物体的表现明显更差——我们推测,网络数据包含对各类物理物体的广泛知识,使模型能够理解并执行涉及未见过物体类别的语言命令。


在这里插入图片描述图 11 语言跟随表现 展示了在“同分布”与“超分布”物体上、不同训练混合方案下的语言跟随率与成功率评估。趋势与图 10 类似:

  • 不使用 ME 或/和 CE 数据都会带来明显的性能下降。
  • 仅在去除网络数据(no WD)时,对超分布物体的表现有显著负面影响——我们推测,网络数据中包含了非常广泛的物体知识,使模型能够理解并执行涉及未见类别物体的语言命令。

D. π 0.5 π_{0.5} π0.5 与其他视觉-语言-动作模型的比较

我们将 π 0.5 π_{0.5} π0.5 与原始的 π 0 π_0 π0 VLA 以及一个改进版本(记作 π 0 -FAST+Flow π_0\text{-FAST+Flow} π0-FAST+Flow)进行比较。该改进版本在仅包含动作数据的条件下,使用式(1)中的联合扩散和 FAST 动作预测公式进行训练,但不包含 HL 或 WD 数据集。这些模型提供了强有力的对比基准,因为 π 0 π_0 π0 已被证明能在复杂而灵巧的移动操作任务中表现优异,而 π 0 -FAST+Flow π_0\text{-FAST+Flow} π0-FAST+Flow 的增强版本则使其性能尽可能接近 π 0.5 π_{0.5} π0.5 π 0.5 π_{0.5} π0.5 在此基础上结合了多种协同训练任务。为了进行公平比较,所有模型均使用相同的跨形态机器人训练集,并进行了相当数量的训练步骤。二者的主要区别是:

  1. π 0.5 π_{0.5} π0.5 额外使用了 HL 和 WD 数据;
  2. π 0.5 π_{0.5} π0.5 采用混合训练流程,在预训练阶段使用离散标记训练,而仅在后训练阶段使用基于流匹配的动作专家进行训练;而 π 0 π_0 π0 则始终使用动作专家。 π 0 -FAST+Flow π_0\text{-FAST+Flow} π0-FAST+Flow 遵循混合训练“配方”,但仅在包含机器人动作的数据上训练,因此无法执行高层推理。

图12的结果显示, π 0.5 π_{0.5} π0.5 显著优于 π 0 π_0 π0 和我们改进的版本。即便允许 π 0 π_0 π0 进行长达300k步的额外训练,该结果依然成立,这也印证了Pertsch等[64]的发现:与纯扩散训练相比,使用FAST标记训练在计算效率上更具优势。


在这里插入图片描述图 12 与其他模型的比较将完整的 π 0.5 π_{0.5} π0.5 与基线模型 π 0 π_0 π0 π 0 -FAST+Flow π_0\text{-FAST+Flow} π0-FAST+Flow 在模拟家居测试环境中的表现进行了比较。结果显示, π 0.5 π_{0.5} π0.5 显著优于这两种基线模型。


1. FAST 动作分词器是什么?

在机器人模仿学习中,我们常常需要把一段连续的动作轨迹(例如关节角度随时间的变化)编码成模型能够处理的形式。传统上,如果直接用浮点向量序列,序列很长、维度高,训练自回归模型既慢又难收敛。FAST(Fast Action Segment Tokenizer)则是一种高效压缩和离散化动作段的方案,其核心思路包括:

  1. 动作段划分

    • 将长度为 H H H 的连续动作轨迹 a t : t + H \mathbf{a}_{t:t+H} at:t+H 划分成若干固定时长的小片段(segment)。
  2. 矢量量化(Vector Quantization)

    • 为每个片段学习一个“小字典”(codebook),将连续的高维向量轨迹映射到离散的“代码”或“token”。
    • 具体做法可能是先对动作片段做 PCA 降维,再用 K-means 或学习到的嵌入空间,把每个片段指派给一个最相似的字典索引。
  3. 自回归预测

    • 在 Transformer 中,这些 codebook 索引就像“词汇”一样,被模型当作离散 token自回归地预测——“下一个动作片段最可能落在哪个字典项?”
    • 由于字典大小远小于浮点维度,且片段长度比原始帧要长得多,序列长度大幅缩减,训练速度和数据效率显著提升。
  4. 解码回连续动作

    • 在推理时,模型先生成一串离散 token 序列,再通过同样的 codebook 查表,把每个离散 token 转换回对应的连续向量片段,拼接成完整的动作轨迹。

优势

  • 训练快:序列长度缩短,模型每次只需预测少量离散值。
  • 稳定性高:离散分类问题比直接回归浮点轨迹往往更好优化。
  • 通用性:可插拔到任意需要动作压缩的自回归结构中。

2. FAST+Flow 增强版本是什么?

“FAST+Flow” 是在原始 π₀ 模型基础上做的一种混合训练方案,旨在保持 FAST 在训练阶段的高效,同时在推理时仍能获得流匹配(Flow Matching)带来的连续、实时控制能力。具体来说:

  1. 训练目标

    • 采用式 (1) 中的联合损失
      H ( x 1 : M , f θ ℓ ( o t , ℓ ) ) ⏟ FAST 自回归分类 + α ∥ ω − a t : t + H − f θ a ( a τ , ω , o t , ℓ ) ∥ 2 ⏟ 流匹配去噪回归 \underbrace{H\bigl(x_{1:M},\,f^ℓ_θ(\mathrm{o}_t,\ell)\bigr)}_{\text{FAST 自回归分类}} \;+\; \alpha\, \underbrace{\|\omega - \mathbf{a}_{t:t+H} - f^a_θ(\mathbf{a}^{\tau,ω},\,\mathrm{o}_t,\,\ell)\|^2}_{\text{流匹配去噪回归}} FAST 自回归分类 H(x1:M,fθ(ot,))+α流匹配去噪回归 ωat:t+Hfθa(aτ,ω,ot,)2
    • 第一项 用 FAST Tokenizer 把动作段分成离散 token,模型像文本那样去预测它们;
    • 第二项 用流匹配(Flow Matching)在连续领域“去噪”恢复原始动作。
  2. 只用动作数据

    • 与 π₀.₅ 不同,FAST+Flow 版本只在纯动作示范数据上训练,不使用任何高层语义(HL)或网络问答(WD)数据集。
    • 这意味着它保留了动作压缩与连续生成两方面的好处,但不具备高层子任务预测或多模态问答能力。
  3. 混合流程

    • 预训练阶段:只用 FAST 自回归分类( α = 0 \alpha=0 α=0)快速打好动作离散化基础;
    • 后训练阶段:加入动作专家模块,开启流匹配回归( α > 0 \alpha>0 α>0),在不牺牲实时性的前提下提升连续轨迹质量。
  4. 推理时行为

    • 自回归解码 FAST 动作 token(快速、离散);
    • 用动作专家并行做十步流匹配去噪,输出平滑的连续动作,保证机器人能实时执行。

为什么需要 FAST+Flow 增强版本?

  • 对照基准:它相当于给 π 0 π_0 π0 加上了和 π 0.5 π_{0.5} π0.5 完全一样的动作表示与推理机制(FAST+Flow),却使用额外的高层语义数据。
  • 公正比较:通过这个对照,可以验证 π 0.5 π_{0.5} π0.5 的性能提升,确实来自多模态协同学习(HL、WD 数据),而不是单纯的动作表示或推理改进。

总结

  • FAST 动作分词器:将连续动作压缩成短序列的离散 token,以加速训练和提升稳定性;
  • FAST+Flow 增强版本:在动作数据上同时使用 FAST 自回归与流匹配去噪的混合训练方案,但不包含任何高层语义任务,用以公平对比 π 0.5 π_{0.5} π0.5 在多模态协同方面的增益。

E. 高层推理有多重要?

最后,我们评估高层推理的重要性,并比较几种替代高层推理方法的性能。 π 0.5 π_{0.5} π0.5 中的高层推理机制接收一个高层命令(例如“清理卧室”),并输出要完成的子任务(例如“捡起枕头”),然后将该子任务作为上下文用于推断低层动作,这与思维链推理(chain-of-thought)[82]类似。

虽然 π 0.5 π_{0.5} π0.5 使用统一架构让同一模型同时执行高层和低层推理,我们也可以构建基线方法:一种是在运行时省略高层推理过程,将任务提示直接输入低层系统(如标准 VLA 模型常用做法[92,8]);另一种是使用另一个模型做高层推理,以考察不同数据集成分对高层策略的影响。

我们考虑以下方法和消融,每种方法都在完整 π 0.5 π_{0.5} π0.5 的低层推理流程下,采用不同的高层策略:

  1. π 0.5 π_{0.5} π0.5 模型同时用于高层和低层推理。
  2. no WD:消融版本,不使用网络数据。
  3. no VI:消融版本,不使用口头指令(VI)数据。
  4. implicit HL:运行时不进行高层推理,但在训练中包含高层子任务数据,可能让模型隐式“学会”子任务。
  5. no HL:既不进行高层推理,训练时也完全不使用高层子任务数据。
  6. GPT-4:在高层策略中使用 GPT-4,以评估在机器人数据上训练高层策略的重要性。为使模型适应我们的领域,我们向 GPT-4 提示任务描述及最常用的子任务标签列表,让其从中选择。
  7. human HL:将专家人类作为“理想”高层策略,为性能提供上限参考。

这些实验结果如图13所示。完整的 π 0.5 π_{0.5} π0.5 模型表现最佳,甚至超过了 human HL “理想”基线。或许令人惊讶的是,表现第二好的模型是 implicit HL 消融版本——该版本在运行时不进行任何高层推理,但在训练中包含了完整的数据混合(即也包含子任务预测数据)。这强烈说明了我们协同训练“配方”的重要性:虽然显式推断高层子任务有助益,但仅通过将子任务预测数据纳入训练混合中,就已能获得相当大的一部分收益。no HL 消融(在训练中也不包含 HL 任务)则表现显著更差。结果还显示,相对较小的口头指令数据集(仅占高层移动操作示例约 11%)对于强绩效至关重要,因为 no VI 消融的表现明显较弱。no WD 消融也显著更差,这表明网络数据的主要收益(或许不出所料)在于提升高层策略能力。最后,零样本 GPT-4 消融表现最差,显示了在机器人数据上对 VLM 进行适配的重要性。各任务的详细性能分解见附录 D 图17。


在这里插入图片描述图13:高层推理过程评估。虽然同时进行高层和低层推理的完整 π 0.5 π_{0.5} π0.5模型取得了最佳结果,但仅使用低层推理(“隐式HL”)的完整模型也能从训练中包含的高层子任务示例中获益。相比之下,排除口头指令(no VI)或网络数据(no WD)都会导致性能显著下降,而对大型API模型(GPT-4)进行零样本提示的表现更差。



VI. 讨论与未来工作

我们介绍了 π 0.5 π_{0.5} π0.5,一个在 π 0 π_0 π0 VLA 基础上通过协同训练整合多种数据源以实现对新环境泛化的模型。 π 0.5 π_{0.5} π0.5 VLA 能够控制移动操作臂在训练数据中从未出现过的住宅中执行任务,如清洁厨房和卧室、整理床铺、挂毛巾,以及执行其他多阶段且灵巧的行为。 π 0.5 π_{0.5} π0.5 在大约400小时的移动操作数据上训练,同时还包括来自其他机器人的更大规模数据,这些数据涵盖多样化环境中的非移动操作臂和实验室条件下收集的数据。它还与来自网络的数据以及基于机器人观测的高层语言命令预测数据联合协同训练。 π 0.5 π_{0.5} π0.5 的泛化能力证明了这一协同训练“配方”能够促进有效的知识迁移,使得仅凭中等规模的移动操作数据集,就能实现对移动操作臂的高度泛化控制。

当然, π 0.5 π_{0.5} π0.5 并非没有局限。尽管我们的 VLA 展现出广泛的泛化能力,但仍会出现失误。一些环境带来持续挑战(如机器人不熟悉的抽屉把手或物理上难以打开的橱柜),一些行为在部分可观测场景中存在困难(如机械臂遮挡了应当被擦拭的溢出物),还有一些情况下高层子任务推理容易走神(如在归档物品过程中多次打开再关闭抽屉)。通过更好的协同训练、迁移方法和更大规模数据集来解决这些挑战,是未来工作的一条有前景的方向。

其他未来工作方向可着眼于我们方法的技术限制。尽管 π 0.5 π_{0.5} π0.5 能执行多种清理厨房和卧室的行为,但它处理的提示相对简单。模型可接受的提示复杂度取决于训练数据,未来工作可通过更多复杂多样的标注(由人工标注或合成方式生成)来纳入更复杂的用户偏好和指令。该模型当前使用的上下文也较为有限,引入更丰富的上下文和记忆机制,可使模型在部分可观测性更强的场景中表现更出色,例如需要在不同房间间导航或记忆物品存放位置的任务。更广泛地说, π 0.5 π_{0.5} π0.5 探索了多种异构数据源的特定组合,但数据源的范围还可进一步扩展。例如,我们系统从口头指令中学习的能力提供了一种强大的新监督方式,未来工作可探索通过口头指令及其他方式让人类为机器人提供更多上下文知识。我们希望,本文的工作能为新一代 VLA 奠定基础,使其在多样化的真实世界环境中展示广泛的泛化能力。


致谢

我们感谢所有机器人操作者在数据收集、评估、后勤支持和视频录制方面的付出。完整的贡献声明见附录 A。


附录

A. 贡献者

  • 数据收集与运行:Noah Brown、Michael Equi、Chelsea Finn、Lachy Groom、Suraj Nair、Lucy Xiaoyang Shi、Anna Walling。
  • 注释与补充数据:Danny Driess、Chelsea Finn、Niccolo Fusai、Lachy Groom、Brian Ichter、Karl Pertsch、Allen Z. Ren、Laura Smith、Kyle Stachowicz、Quan Vuong、Anna Walling、Lili Yu。
  • 策略训练与研究:Kevin Black、Danny Driess、Michael Equi、Chelsea Finn、Niccolo Fusai、Dibya Ghosh、Brian Ichter、Liyiming Ke、Sergey Levine、Suraj Nair、Karl Pertsch、Allen Z. Ren、Lucy Xiaoyang Shi、Laura Smith、Jost Tobias Springenberg、Kyle Stachowicz、Quan Vuong、Homer Walke、Lili Yu。
  • 策略基础设施:Kevin Black、Karan Dhabalia、Danny Driess、Manuel Y. Galliker、Dibya Ghosh、Adrian Li-Bell、Quan Vuong、Haohuan Wang、Ury Zhilinsky。
  • 机器人硬件:Noah Brown、Adnan Esmail、Tim Jones、Devin LeBlanc、Mohith Mothukuri。
  • 机器人基础设施:James Darpinian、Adnan Esmail、Manuel Y. Galliker、Karol Hausman、Szymon Jakubczak、James Tanner。
  • 撰写与插图:Kevin Black、Danny Driess、Chelsea Finn、Karol Hausman、Brian Ichter、Sergey Levine、Karl Pertsch、Allen Z. Ren、Lucy Xiaoyang Shi、Jost Tobias Springenberg。

B. 任务评估标准

为了对我们的方法进行量化评估,我们对训练数据集中包含的四项任务子集进行了严格评估(但在完全新的场景和配置中进行评估)。这四项任务包括两项厨房清理任务和两项卧室清理任务。每项任务均在三个不同的真实家庭和三个不同的模拟厨房/模拟卧室中(共12个不同位置)使用一致的物品集进行评估——各策略间使用相同物品,但不同位置可更换物品。除非另有说明,每项评估和每种策略都执行10次评估;请注意,每次评估会跨越数分钟,因此相当耗时。我们将结果以各评估标准中获得总分的百分比形式呈现,并提供单项任务指标或四个不同位置上所有任务的平均指标——对比中所有策略使用相同评估配置,因此每种策略的标准评估共计40次。评估过程中通过交叉执行各策略来控制环境变化。一些评估因机器人故障、时间限制或其他原因被取消并剔除。所有情况下,我们控制样本量相近,并根据双侧 t 检验报告统计显著性,假设绘图中试次数可变。语言跟随评估遵循主文中描述的不同协议。

以下是厨房清理任务的评估指标,任务包括将餐具放入水槽和将物品存入抽屉:

  • 放餐具进水槽:任务开始时,在水槽附近放置 4 件餐具(如盘子、碗、切菜板、餐具)。机器人目标是将所有餐具放入水槽。
    +1 拾取每件物品。
    +1 将每件物品放入水槽。
    最高分:8 分
  • 装抽屉物品:任务开始时,在台面上放置一件物品。机器人必须将该物品放入台面下的抽屉。
    +1 拾起物品。
    +1 打开抽屉。
    +1 将物品放入抽屉。
    +1 关闭抽屉(若物品已放入)。
    最高分:4 分

以下是卧室清理任务的评估指标,任务包括整理洗衣和铺床:

  • 放洗衣物入篮:任务开始时,一件衣物放在地上。机器人目标是拾起衣物并将其放入洗衣篮。
    +1 导航至并拾起衣物。
    +1 将衣物放入或放在洗衣篮内。
    +1 衣物完全放入洗衣篮。
    最高分:3 分
  • 整理床铺:任务开始时,床未整理。机器人必须将被子整理平整,并在床头放置两只枕头。
    +1 整理被子,使其覆盖床单。
    +1 在床头放置第一个枕头。
    +1 在床头放置第二个枕头。
    +1 被子被非常整齐地整理平。
    +1 两只枕头都被非常整齐地摆放。
    最高分:5 分

C. 语言跟随实验设置

语言跟随实验使用两个未见过的厨房场景来测试模型对更具体用户指令的执行能力,例如“把剪刀放进抽屉”或“把切菜板放入水槽”。每次试验要求机器人解读指令,在干扰物中识别正确物体并执行任务。我们评估两种情景:

  1. 抽屉内物品:常见厨房用具(夹子、木制调羹、开罐器、剪刀和小瓶黄芥末)。
  2. 水槽内物品:常见餐具(杯子、碗、盘子、塑料勺和切菜板)。

在每次试验中,机器人面前摆放五件物品,并被指示移动其中一件。为了防止模型走捷径,目标物体放置得比干扰物更远,因此无法理解指令的策略,其语言跟随准确率约为20%。我们报告两个指标(在两种情景中取平均值):

  • 语言跟随率:衡量机器人是否选中了指令指定的正确物体;
  • 任务成功率:衡量机器人是否成功将该物体放置到指定位置。

我们进一步研究不同训练环境数量如何影响模型对先前未见物体的泛化能力。为此,我们设计了类似的“抽屉内物品”任务,但使用全新家用物品(漏斗、药瓶、打火机套装、普通打火机和一副护目镜)。这些物体类别在训练集中均未出现,确保本任务测试机器人对超分布(out-of-distribution)物体的表现。各任务的示例初始场景见图 14。


在这里插入图片描述

\quad\quad\quad (a) 同分布物体,抽屉内物品 \quad\quad\quad\quad\quad\quad (b) 同分布物体,水槽内物品 \quad\quad\quad\quad\quad\quad\quad (c) 超分布物体,抽屉内物品
图 14:不同语言跟随实验的示例初始状态。


结合图 11 中的数据消融实验和图 9 中的位置扩展实验,图 15 展示了不同模型在语言跟随任务上的表现。我们发现, π 0.5 π_{0.5} π0.5 的语言跟随率略高于 π 0 -FAST+Flow π_0\text{-FAST+Flow} π0-FAST+Flow,并远超 π 0 π_0 π0,这表明离散标记训练对语言跟随能力的重要性。


在这里插入图片描述

图 15:不同模型在语言跟随任务上的比较。我们评估了 π 0.5 π_{0.5} π0.5 π 0 π_0 π0 π 0 -FAST+Flow π0\text{-FAST+Flow} π0-FAST+Flow 的语言跟随能力,结果显示 π 0.5 π_{0.5} π0.5 表现最佳,且远超 π 0 π0 π0


D. 各任务性能细分

a) 协同训练配方消融:

为了更好地理解不同训练数据源对具体任务类别的影响,我们提供了按任务细分的性能数据(见图16)。这里我们考察四个代表性家务任务:装抽屉物品、放餐具进水槽、放洗衣物入篮和整理床铺。总体来看,结果表明跨形态迁移和多样化数据协同训练对于一系列任务的泛化至关重要,但不同任务对各类数据源的依赖程度不尽相同。

  • 对于“装抽屉物品”任务,当移除跨形态数据(ME 或 CE)或网络数据(WD)时,性能大幅下降;当同时排除所有这些数据时,性能退化最为严重。此任务需要识别并理解非常广泛的常见物品类别,这类知识可能需从多样化数据源中学习而来。
  • 相比之下,“放餐具进水槽”任务对于移除网络数据(WD)相对鲁棒,但在排除跨形态数据(ME 或 CE)时性能会降低,这印证了该任务主要依赖从机器人数据中学到的一般操作策略。
  • “放洗衣物入篮”和“整理床铺”任务在移除跨形态数据后也会出现性能下降,但对数据混合中其他部分的变化总体不那么敏感。

在这里插入图片描述图16:训练配方消融的各任务性能细分。我们在四个代表性的家务任务上评估了每种训练混合方案的性能:装抽屉物品、放餐具进水槽、放洗衣物入篮和整理床铺。移除跨形态数据(ME 或 CE)会导致特定任务性能显著下降,尤其是装抽屉物品和放餐具进水槽这两项任务。网络数据(WD)对需要广泛场景知识的任务(装抽屉物品)影响更大。


b) 高层模型分析:

为了更细致地查看不同高层推理方法对具体任务类别的影响,我们再次提供了按任务细分的性能数据(见图17)。我们在四个代表性任务(装抽屉物品、放餐具进水槽、放洗衣物入篮和整理床铺)上,评估了完整的 π 0.5 π0.5 π0.5 模型和所有高层推理基线。

  • 结果显示,显式的高层推理能够提升各项任务的性能,其中完整的 π 0.5 π0.5 π0.5 模型取得了最佳总体表现。
  • 对于“装抽屉物品”和“放餐具进水槽”这两项任务,高层推理至关重要:在 no HL 变体中,性能大幅下滑,表明结构化的子任务预测和长时程规划的重要性。在这两项任务中, π 0.5 π0.5 π0.5 模型也优于 GPT-4 HL,凸显了在领域内微调的优势,并证明高层模型学会了有助于低层策略成功的策略。
  • 在“装抽屉物品”任务中,当移除网络数据时,性能也显著下降——这与协同训练配方消融的结果一致,强调了语义知识对于对不常见物体进行泛化的重要性。
  • 对于“放洗衣物入篮”和“放餐具进水槽”任务,模型对高层策略的选择不那么敏感,这些任务要么时程相对较短,要么所需的语义推理不那么复杂。

在这里插入图片描述图17:高层推理方法的各任务性能细分。我们在四个代表性家务任务上评估了完整的 π 0.5 π_{0.5} π0.5 模型及多种高层推理基线。


E. 模型技术细节

π 0.5 π_{0.5} π0.5 模型在 π 0 π_0 π0 基础上构建,采用 PaliGemma VLM[5] 作为视觉-语言理解的主干,并配备一个“动作专家”以实现快速动作生成。VLM 主干接收一系列图像 [ I t 1 , … , I t n ] [\text{I}^1_t,\dots,\text{I}^n_t] [It1,,Itn] 和语言提示 ℓ ℓ (与 π 0 π_0 π0 相同),同时还接收以标记化形式输入的机器人本体感觉状态 q t q_t qt 和标记化动作[64],后者将以自回归方式预测。

动作专家是一个较小的 Transformer,其输入是一系列有噪声的动作标记 a t : t + H τ , ω \text{a}^{τ,ω}_{t:t+H} at:t+Hτ,ω,动作时域长度为 50,即 H = 49 H=49 H=49,并使用流匹配目标进行训练。有噪声的动作段(动作维度为 d d d)首先通过一个线性层投影到 Transformer 的嵌入维度。与 π 0 π_0 π0 在将流匹配时间步 τ τ τ 与有噪声动作融合后输入 Transformer 的做法不同, π 0.5 π_{0.5} π0.5 为投影 τ τ τ 单独使用一个 MLP,然后应用自适应 RMSNorm 将时间步信息注入动作专家的每一层。时间步 MLP 的形式为
s w i s h ( W 2 ⋅ s w i s h ( W 1 ⋅ ϕ ( τ ) ) ) , \mathrm{swish}\bigl(W_2\cdot\mathrm{swish}(W_1\cdotϕ(τ))\bigr), swish(W2swish(W1ϕ(τ))),
其中 ϕ : R → R w ϕ:ℝ→ℝ^w ϕ:RRw 是正弦位置编码函数[79],且 W 1 , W 2 ∈ R w × w W_1,W_2∈ℝ^{w×w} W1,W2Rw×w。动作专家输出动作标记 y 1 : H a y^a_{1:H} y1:Ha,随后通过最终的线性投影解码为目标向量场。

两个 Transformer 的维度与 π 0 π_0 π0 相同:对于基于 PaliGemma 权重初始化的 2B VLM, { w i d t h = 2048 , d e p t h = 18 , m l p _ d i m = 16384 , n u m _ h e a d s = 18 , n u m _ k v _ h e a d s = 1 , h e a d _ d i m = 256 } \{{width}=2048,{depth}=18,{mlp\_dim}=16384,{num\_heads}=18,{num\_kv\_heads}=1,{head\_dim}=256\} {width=2048,depth=18,mlp_dim=16384,num_heads=18,num_kv_heads=1,head_dim=256};动作专家则在此基础上使用 { w i d t h = 1024 , m l p _ d i m = 4096 } \{{width}=1024,{mlp\_dim}=4096\} {width=1024,mlp_dim=4096},参数量约 300M。

VLM 与动作专家的嵌入仅通过自注意力交互。在图像、提示标记和本体感觉状态上使用完整前缀掩码;FAST 动作标记可关注该前缀并自回归地关注先前的动作标记。动作专家的嵌入可关注前缀及彼此,但不会关注 FAST 动作标记,以避免两种动作表示间的信息泄漏。实际上,信息单向从 VLM 流向动作专家;无任何 VLM 嵌入会关注动作专家。图18 可视化了每一层的注意力掩码示例。


在这里插入图片描述图 18: π 0.5 π_{0.5} π0.5 注意力屏蔽模式示例。


我们沿用 π 0 π_0 π0 的流匹配时间步采样策略。总的来说,我们不采用标准的均匀采样 τ ∼ U ( 0 , 1 ) τ∼\mathcal{U}(0,1) τU(0,1)[50,54] 或强调中间时间步的方法[27],而是使用一种强调低时间步的采样分布[8],
p ( τ ) = B e t a ( s − τ s ; α = 1.5 , β = 1 ) . p(τ)=\mathrm{Beta}(\frac{s−τ}{s};α=1.5,β=1). p(τ)=Beta(ssτ;α=1.5,β=1).
超出阈值 s s s 的时间步不参与采样,因为若积分步长 δ > 1 − s δ>1−s δ>1s,则无需这些时间步。我们的实验中使用 s = 0.999 s=0.999 s=0.999,可支持多达 1000 步积分( δ > 0.001 δ>0.001 δ>0.001)。

我们对所有输入图像应用图像增强(随机裁剪、缩放、旋转和颜色抖动),按以下超参数及顺序进行:

在这里插入图片描述

相关文章:

论文笔记(八十)π0.5: a Vision-Language-Action Model with Open-World Generalization

π0.5: a Vision-Language-Action Model with Open-World Generalization 文章概括摘要I. 引言II. 相关工作通用机器人操作策略。非机器人数据的协同训练。使用语言进行机器人推理和规划。具有开放世界泛化能力的机器人学习系统。 III. 序言IV. π 0.5 π_{0.5} π0.5​ 模型与…...

pymongo功能整理与基础操作类

以下是 Python 与 PyMongo 的完整功能整理&#xff0c;涵盖基础操作、高级功能、性能优化及常见应用场景&#xff1a; 1. 安装与连接 (1) 安装 PyMongo pip install pymongo(2) 连接 MongoDB from pymongo import MongoClient# 基础连接&#xff08;默认本地&#xff0c;端口…...

硬件须知的基本问题1

目录 1. 电路表示中的电压源表示符号有哪些&#xff1f; 2&#xff0e;查找电路表示中的电流源表示符号有哪些&#xff1f; 3&#xff0e;上拉电阻和下拉电阻的作用是什么&#xff1f; 4&#xff0e;0 欧姆电阻在电路中有什么作用&#xff1f; 5&#xff0e;电容的耦合…...

LangChain 中的 Task(任务) 主要通过 生成器(Generator) 实现,而非传统的迭代器(Iterator)

LangChain 中的 Task&#xff08;任务&#xff09; 主要通过 生成器&#xff08;Generator&#xff09; 实现&#xff0c;而非传统的迭代器&#xff08;Iterator&#xff09;。以下是关键分析&#xff1a; 任务链的流程控制 LangChain 的 链式结构&#xff08;Chains&#xff0…...

加里·基尔代尔:CP/M之父与个人计算时代的先驱

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 加里基尔代尔&#xff1a;CP/M之父与个人计算时代的先驱 一、早年生活与教育背景 1.…...

深入解析Spring Boot配置处理器:机制、架构与实践

深入解析Spring Boot配置处理器&#xff1a;机制、架构与实践 Spring Boot的配置处理器&#xff08;spring-boot-configuration-processor&#xff09;是支撑其智能配置体验的关键组件。本文结合实际开发需求&#xff0c;从使用方式、底层原理到性能优化与架构设计&#xff0c…...

Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed:

环境: Ragflow17.2 debian12.8 问题描述: Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed: The method is not allowed for the requested URL. 后台日志: 2025-04-25 13:54:25,988 ERROR 235204 405 Method Not Allowed:…...

Maven进阶知识

一、Maven 坐标 &#xff08;一&#xff09;概念 在 Maven 中坐标是构件的唯一标识&#xff0c;其元素包括 groupId、artifactId、version、packaging、classifier。其中 groupId、artifactId、version 是必定义项&#xff0c;packaging 默认为 jar。 &#xff08;二&#x…...

通过门店销售明细表用SQL得到每月每个门店的销冠和按月的同比环比数据

假设我在Snowflake里有销售表&#xff0c;包含ID主键、门店ID、日期、销售员姓名和销售额&#xff0c;需要统计出每个月所有门店和各门店销售额最高的人&#xff0c;不一定是一个人&#xff0c;以及他所在的门店ID和月总销售额。 统计每个月份下&#xff0c;各门店内销售额最高…...

聊聊Spring AI Alibaba的YuQueDocumentReader

序 本文主要研究一下Spring AI Alibaba的YuQueDocumentReader YuQueDocumentReader community/document-readers/spring-ai-alibaba-starter-document-reader-yuque/src/main/java/com/alibaba/cloud/ai/reader/yuque/YuQueDocumentReader.java public class YuQueDocument…...

Tauri文件系统操作:桌面应用的核心能力(入门系列四)

今天我们来聊聊Tauri中一个超级重要的功能 - 文件系统操作。这可是Web应用和桌面应用最大的区别之一。在浏览器里&#xff0c;出于安全考虑&#xff0c;我们对文件系统的访问被限制得死死的。但在Tauri桌面应用中&#xff0c;我们可以安全地访问用户的文件系统&#xff0c;这简…...

网络流之最大流(Dinic)

正文 在了解了Ford-Fulkerson 和Edmonds-Karp之后&#xff0c;我们可以进一步学习更高效的算法——Dinic。 Dinic算法的时间复杂度是O(VE)&#xff0c;实际运用过程中是比EK算法快的。 特性Ford-FulkersonEdmonds-Karp (EK)Dinic 增广路径选择 任意方式BFS找最短路径分层图多…...

LVGL模拟器:NXP GUIDER+VSCODE

1. 下载安装包 NXP GUIDER&#xff1a;GUI Guider | NXP 半导体 CMAKE&#xff1a;Download CMake MINGW&#xff1a;https://github.com/niXman/mingw-builds-binaries/releases SDL2&#xff1a;https://github.com/libsdl-org/SDL/releases/tag/release-2.30.8 VSCODE&…...

魔幻预言手游》:职业介绍!

在《魔幻预言》手游中&#xff0c;共有武玄、魔魅、剑仙三大核心职业&#xff0c;各具特色且定位鲜明&#xff0c;以下为具体介绍&#xff1a; 一、武玄&#xff08;战士&#xff09; 核心定位&#xff1a;近战物理输出与团队增益担当&#xff0c;兼具控制与防御能力。 战斗风…...

什么时候使用Python 虚拟环境(venv)而不用conda

是的&#xff01;python3.9 -m venv rtdetr_env 是 Python 原生的虚拟环境&#xff08;venv&#xff09;&#xff0c;而 conda 是另一个流行的虚拟环境管理工具&#xff08;来自 Anaconda/Miniconda&#xff09;。下面我会详细对比两者的区别&#xff0c;并讲解 venv 的基本用法…...

Vue3的内置组件 -实现过渡动画 TransitionGroup

Vue3的内置组件 -实现过渡动画 TransitionGroup 是一个内置组件&#xff0c;用于对 v-for 列表中的元素或组件的插入、移除和顺序改变添加动画效果 支持和 基本相同的 props、CSS 过渡 class 和 JavaScript 钩子监听器&#xff0c;但有以下几点区别&#xff1a; 默认情况下&…...

水果成篮--LeetCode

题目 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xff0c;你必须按照要求采摘水…...

ROS 快速入门教程05

15. IMU航向锁定的节点 编写锁定节点 打开vscode编写imu_node.cpp #include<ros/ros.h> #include<sensor_msgs/Imu.h> #include<tf/tf.h> #include<geometry_msgs/Twist.h>ros::Publisher vel_pub;void IMUCallback(sensor_msgs::Imu msg) {if(msg.o…...

用 C 语言实现通用的冒泡排序算法

在日常编程中&#xff0c;排序算法是一个非常常见且重要的工具。虽然有许多排序算法可以选择&#xff0c;但如果你需要一个能够处理不同数据类型的排序算法&#xff0c;如何设计一个通用的排序算法呢&#xff1f;今天我们将实现一个通用的冒泡排序算法&#xff0c;支持不同数据…...

Linux——进程间通信

目录 1. 进程间通信的介绍 1.1 概念 1.2 目的 1.3 进程间通信的本质 1.4 进程间通信的分类 2. 管道 2.1 概念 2.2 匿名管道 2.2.1 原理 2.2.2 pipe函数 2.2.3 匿名管道使用步骤 2.2.4 管道读写规则 2.2.5 管道的特点 2.2.6 管道的四种特殊情况 2.2.7 管道的…...

深入详解人工智能数学基础——微积分中拉格朗日乘数法在GAN训练中的应用

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

精益数据分析(26/126):依据商业模式确定关键指标

精益数据分析&#xff08;26/126&#xff09;&#xff1a;依据商业模式确定关键指标 在创业与数据分析的探索之路上&#xff0c;每一次的学习都像是为前行点亮一盏灯。今天&#xff0c;我们依旧怀揣着共同进步的期望&#xff0c;深入解读《精益数据分析》的相关内容&#xff0…...

前端面试宝典---vue原理

vue的Observer简化版 class Observer {constructor(value) {if (!value || typeof value ! object) returnthis.walk(value) // 对对象的所有属性进行遍历并定义响应式}walk (obj) {Object.keys(obj).forEach(key > defineReactive(obj, key, obj[key]))} } // 定义核心方法…...

Cribl 上传lookup 表,传入数据进event

cribl 插入lookup 表,来数据有针对性的插入字段,对event 的数据进行字段插入。灵活性强。 The Lookup At long last, were ready to configure the lookup. First, lets create the Lookup table wed like to use. Getting the goods 先下载一个lookup 表,然后上传到cri…...

使用 binlog2sql 闪回 MySQL8 数据

【说明】 MySQL服务器版本 8.0.26 mysql> SELECT version(); ----------- | version() | ----------- | 8.0.26 | -----------Python 版本 Python 3.8.10 [infuq ~]# python -V Python 3.8.10【安装】 binlog2sql 官方地址 1.安装 binlog2sql [infuq ~]# git clone …...

蓝桥杯赛场反思:技术与心态的双重修炼

蓝桥杯赛场反思&#xff1a;技术与心态的双重修炼 在刚刚结束的第十六届蓝桥杯大赛软件赛省赛第二场中&#xff0c;我经历了一场充满挑战与自我审视的旅程。走出赛场&#xff0c;内心既有些许成就感&#xff0c;也夹杂着对自身不足的深刻反思。这次比赛不仅是一次技术的较量&a…...

介绍常用的退烧与消炎药

每年春夏交替之季&#xff0c;是感冒发烧、咳嗽、咽喉肿痛、支气管炎、扁桃体炎的高发期。在家里或公司&#xff0c;常备几种预防感冒发烧、咳嗽、流鼻涕、咽喉发炎的药品&#xff0c;是非常必要的。下面介绍几款效果非常明显的中成药、西药&#xff0c;具体如下。 1 莲芝消炎…...

C++篇——继承

目录 引言 1.继承的概念及定义 1_1&#xff0c;继承的概念 1_2&#xff0c; 继承定义 1_2_1&#xff0c;继承关系和访问限定符 1_2_2&#xff0c;继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 构造函数 拷贝构造…...

C++ 基础综合练习案例01:联系人管理系统(Part01)

通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C来实现一个通讯录管理系统 系统中需要实现的功能如下&#xff1a; * 添加联系人&#xff1a;向通讯录中添加新人&#xff0c;信息包括&#xff08;姓名、性别、年龄、联系电话、家庭住址&#xff09;最多记录1000人…...

Trae 宝藏功能实测:从 Mcp 搭建天气系统,到 AI 重塑 Excel 数据处理

本文 利用trae以及第三方MCP Server搭建一个天气系统网页前言链接高德地图MCP链接quickchart-server MCP Server链接EdgeOne Pages Deploy MCP智能体的创建天气系统效果展示 利用trae做一个Excel格式化工具前言使用trae完成代码的实现总结 我正在参加Trae「超级体验官」创意实践…...

MCP与Sequential Thinking:系统问题的分解与解决之道

MCP与Sequential Thinking:系统问题的分解与解决之道 引言:复杂问题背后的逻辑思维 在面对复杂问题时,我们常常感到手足无措,尤其是在需要将任务分解为多个步骤时。这是对个人思维能力的极大挑战,而掌握有效的思维工具则可以让事情事半功倍。今天我们讨论的两个工具:MC…...

Scrapy爬取动态网页:简洁高效的实战指南

引言 动态网页依赖JavaScript加载,传统爬虫望而却步。Scrapy搭配scrapy-splash却能轻松破局!本文通过一个原创案例,带你用Scrapy和Splash高效爬取动态网页,代码简洁、可运行,从零基础到进阶开发者都能快速上手。无论是数据采集还是自动化任务,这篇指南让你一学即会,开启…...

在 Linux 上安装 PNPM 的教程

在 Linux 上安装 PNPM 的教程 PNPM&#xff08;Performant NPM&#xff09;是一个非常快速的包管理器&#xff0c;作为 npm 的替代品&#xff0c;PNPM 在安装速度和磁盘占用方面都具有显著优势。PNPM 通过“硬链接”共享依赖来节省磁盘空间&#xff0c;并且比 npm 更加高效。本…...

Vue3 组件通信与插槽

Vue3 组件通信方式全解&#xff08;10种方案&#xff09; 一、组件通信方式概览 通信方式适用场景数据流向复杂度Props/自定义事件父子组件简单通信父 ↔ 子⭐v-model 双向绑定父子表单组件父 ↔ 子⭐⭐Provide/Inject跨层级组件通信祖先 → 后代⭐⭐事件总线任意组件间通信任…...

php一些命名规范 和 css命名规范

一 php命名规范 $myName bill gates;$yourFamilyName ggbone; 1.1 变量命名 变量以美元符号 $ 开头, 第一个字符不可以是数字 &#xff0c;除了下划线_ 不能有任何符号 $name bill;$age 33; 当用2个或2个以上的单词命名变量时&#xff0c;可以使用驼峰法规则&#xff08…...

【TypeScript】速通篇

目录 0 前言 1 准备工作 1.1 安装typescript包 1.2 简化运行TS 2 类型注解 2.1 常用类型 2.1.1 原始类型 2.1.2 数组类型 2.1.3 联合类型 2.1.3.1 类型别名 2.1.4 函数类型 2.1.4.1 void类型 2.1.4.2 可选参数 2.1.5 对象类型 2.1.5.1 可选属性 2.1.5.2 接口 2.…...

flutter 引擎初始化

在 Flutter 混合开发中&#xff0c;iOS 端的 ​​Flutter 引擎初始化时机​​ 取决于集成方式&#xff08;纯 Flutter 或混合开发&#xff09;。以下是详细分析&#xff1a; ​​1. 纯 Flutter 应用&#xff08;默认 Flutter App&#xff09;​​ ​​初始化时机​​ ​​启动…...

Spring Boot 连接 Microsoft SQL Server 实现登录验证

Spring Boot 连接 Microsoft SQL Server 实现登录验证 这篇文章将非常系统地讲解如何使用 Spring Boot 结合 Microsoft SQL Server 2019 完成一个完整的登录验证系统&#xff0c;包括数据库连接问题、SSL证书错误处理、CORS跨域详细解释和解决方案。 适合需要前后端联调、单独…...

腾讯云智三道算法题

import java.math.BigDecimal; import java.math.BigInteger; import java.util.*;public class MyMain {//第一题&#xff1a;一个水果切成n块public static void getRes(int n, int l, int r){int min -1;int max -1;for (int il;i<r;i){if (i%n0){min i/n;break;}}for…...

语音合成之七语音克隆技术突破:从VALL-E到SparkTTS,如何解决音色保真与清晰度的矛盾?

从VALL-E到SparkTTS&#xff0c;如何解决音色保真与清晰度的矛盾&#xff1f; 引言语音克隆技术发展史YourTTS&#xff1a;深入剖析架构与技术VALL-E&#xff1a;揭秘神经编解码语言模型MaskGCTSparkTTS&#xff1a;利用 LLM 实现高效且可控的语音合成特征解耦生成式模型特征解…...

【Pandas】pandas DataFrame rdiv

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象&#xff08;如 DataFrame、Series 或标量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...

maven打包时配置多环境参数

1. pom配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…...

【Linux】基本指令(下)

目录 一、详解指令补充知识1&#xff1a;什么是压缩 19. zip 指令&#xff08;1&#xff09;-r 选项&#xff08;2&#xff09;zip 和 unzip 的安装 20. unzip 指令&#xff08;1&#xff09;-d 选项补充知识2&#xff1a;本地机器与云服务器补充知识3&#xff1a;本地机器与云…...

NVLink、UALink 崛起,PCIe Gen6 如何用 PAM4 迎战未来?

现在数字经济发展地相当快速&#xff0c;像Cloud、现在火红的AI、大数据这些新技术都需要在数据中心里运行更多运算&#xff0c;伴随而来的是更快的数据传输速度的需求。 在数据中心&#xff0c;有很多条数据传输路径&#xff0c;举例 &#xff1a; Server 和Storage之间&…...

23种设计模式-行为型模式之迭代器模式(Java版本)

Java 迭代器模式&#xff08;Iterator Pattern&#xff09;详解 &#x1f9e0; 什么是迭代器模式&#xff1f; 迭代器模式是一种行为型设计模式&#xff0c;它提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而不暴露该对象的内部表示。 &#x1f3af; 使用场景 …...

指标监控:Prometheus 结合 Grafana,监控redis、mysql、springboot程序等等

软件作用说明 ‌Prometheus‌&#xff1a;采集各种指标数据&#xff08;如CPU、内存、请求数&#xff09;&#xff0c;并存储到时序数据库中。‌Grafana‌&#xff1a;数据可视化&#xff0c;生成监控仪表盘。 架构说明 被监控服务&#xff08;如Redis/MySQL/SpringBoot&a…...

微信小程序,基于uni-app的轮播图制作,调用文件中图片

以便捷为目的&#xff0c;想使用文件中的图片制作轮播图 但网上找到的都是轮播图彼此分割&#xff0c;没有使用数组存储在一起&#xff0c;不便于管理&#xff0c;代码不美观简洁 作者使用文件中的图片&#xff0c;并使用数组制作轮播图的具体操作如下&#xff1a;&#xff0…...

未来医院已来:AI如何实现无死角安全监控

AI智慧医院如何用算法守护安全与效率 ## 背景&#xff1a;医疗场景的智能化转型需求 现代医院作为人员密集、场景复杂的公共场所&#xff0c;面临诸多管理痛点&#xff1a;患者跌倒可能延误救治、医闹事件威胁安全、医疗垃圾处置不当引发感染风险、重点区域&#xff08;如药…...

搭建动态SQL取数

日常取数的时候可能会存在动态SQL的问题&#xff0c;比如取数动态或者条件动态等情况&#xff0c;下面针对动态SQL做一个完整的处理。包括SELECT 、FROM、WHERE 以及 最后table的动态。 首先 数据定义&#xff0c;这里全按照表来append处理 TYPES:BEGIN OF ty_data,edpline T…...

Python函数基础:简介,函数的定义,函数的调用和传入参数,函数的返回值

目录 函数简介 函数定义&#xff0c;调用&#xff0c;传入参数&#xff0c;返回值 函数的定义 函数的调用和传入参数 函数的返回值 函数简介 函数简介&#xff1a;函数是组织好&#xff0c;可重复使用&#xff0c;用来实现特定功能&#xff08;特定需求&#xff09;的代码…...