论文笔记(五十四)pi0: A Vision-Language-Action Flow Model for General Robot Control

π0: A Vision-Language-Action Flow Model for General Robot Control

  • 文章概括
  • 摘要
  • I. INTRODUCTION
  • II. RELATED WORK
  • III. OVERVIEW
  • IV. π 0 \pi_0 π0模型
  • V. 数据收集和培训配方
    • A. 预训练和后训练
    • B. 语言和高级策略
    • C. 机器人系统细节
  • VI. 实验评估
  • A. 基础模型评估
    • B. 遵循语言指令
    • C. 学习新的灵巧任务
  • D. 掌握复杂的多阶段任务
  • VII. 讨论、局限性与未来工作
  • 致谢
  • APPENDIX
    • A. 贡献
    • B. 模型架构细节
    • C. 非VLM基线架构
    • D. 推理
    • E. 评估细节
      • A. 基础模型评估
      • B. 遵循语言指令评估。
      • C. 学习新的灵巧任务
        • D. 掌握复杂的多阶段任务

文章概括

引用:

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


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


摘要

机器人学习有巨大的潜力,不仅可以充分发挥灵活、通用和灵巧的机器人系统的潜力,还可以解答人工智能领域一些最深层次的问题。然而,将机器人学习提升到适用于实际世界系统所需的通用性水平面临着数据、泛化和鲁棒性方面的重大障碍。在本文中,我们讨论了通用机器人策略(即机器人基础模型)如何应对这些挑战,以及我们如何为复杂且高度灵巧的任务设计有效的通用机器人策略。我们提出了一种新颖的流匹配架构,基于预训练的视觉语言模型(VLM),以继承互联网规模的语义知识。然后,我们讨论如何在多个灵巧机器人平台的大型和多样化数据集上训练该模型,包括单臂机器人、双臂机器人和移动操作器。我们从其在预训练后零样本执行任务、遵循人类和高级VLM策略的语言指令、以及通过微调获取新技能的能力来评估我们的模型。我们的结果涵盖了各种任务,如洗衣折叠、清理桌面和组装盒子。


I. INTRODUCTION

一个人应该能够换尿布、计划入侵、屠宰猪、驾驶船只、设计建筑、写十四行诗、平衡账目、砌墙、接骨、安慰临终者、接受命令、发出命令、合作、独立行动、解决方程、分析新问题、铲粪、编程、烹饪美食、有效战斗、勇敢地死去。
专业化是昆虫的事情。


——Robert A. Heinlein, Time Enough for Love

人工智能系统形态各异,从解决人类难以理解的复杂问题的高度专业化系统,如预测蛋白质的构象[21],到根据文本提示产生逼真的高分辨率图像或视频的系统[40]。然而,人类智能最超越机器智能的领域是多功能性:能够在不同的物理环境中解决多种任务,同时智能地应对环境约束、语言命令和意外干扰。在AI中向这种多功能性迈出最实际的一步可能是在大型语言和视觉语言模型[1, 48]中看到的:这些系统在网络上大量多样化的图像和文本上进行预训练,然后使用更精心策划的数据集进行微调(“对齐”),以诱导期望的行为模式和响应性。虽然这些模型已被证明具有广泛的指令执行和问题解决能力[53, 27],但它们并不像人类那样真正处于物理世界中,它们对物理互动的理解完全基于抽象描述。如果这些方法要在人工智能系统方面取得切实进展,使其展现出人类所拥有的那种物理情景多功能性,我们就需要用物理情景数据来训练这些方法,即来自具身机器人代理的数据。

灵活且通用的模型,可以被任务指派执行各种机器人行为,不仅具有巨大的实际意义,而且可能为当前机器人学习面临的一些最艰难的挑战提供解决方案,如数据可用性、泛化和鲁棒性。在自然语言[1]和计算机视觉[39]中,预训练于多任务数据的通用基础模型往往表现优于狭窄定制和专业化的解决方案。例如,如果目标是在照片中识别鸟类,预训练于多种不同的图像-语言关联然后微调或提示鸟类识别任务可能比仅在鸟类识别数据上训练更为迅速。类似地,对于有效的专业机器人系统,首先在高度多样化的机器人数据上进行预训练,然后微调或提示所需任务可能更为有效。这可以解决数据稀缺的挑战,因为通用模型可用的数据来源更多,包括来自其他任务、其他机器人或甚至非机器人来源的数据,并且可能解决鲁棒性和泛化挑战,因为多样化数据展示了更广泛的观察和行为,提供了在更狭窄的专业数据中可能不存在的多种场景、纠正和恢复行为。因此,采用大规模预训练方法进行机器人学习有可能解决该领域的许多挑战,并使实用的学习启用的机器人成为现实,同时进一步深入理解人工智能中的最深刻问题。

然而,开发这种通用机器人策略——即机器人基础模型——涉及许多主要挑战:

  • 首先,任何此类研究必须在非常大的规模上进行,因为大规模预训练的全部好处通常不会在较小的规模上出现[54]。
  • 其次,它需要开发正确的模型架构,这些架构能有效利用多样化的数据来源,同时能够表现出与复杂物理场景互动所必需的细致和微妙的行为。
  • 第三,它需要正确的培训配方。这可能是最重要的成分,因为近期在NLP和计算机视觉中大模型的进步在很大程度上依赖于精心策划的预训练和培训后数据的微妙策略[35]。

在本文中,我们提出了一个原型模型学习框架,我们称之为 π 0 \pi_0 π0,展示了如何解决这三个瓶颈。我们在图1中展示了我们的模型和系统。为了整合多样化的数据来源,我们首先利用预训练的视觉语言模型(VLM)引入互联网规模的经验。通过基于VLM构建我们的模型,我们继承了语言和视觉语言模型的通用知识、语义推理和问题解决能力。然后我们进一步培训我们的模型以整合机器人动作,将其转变为视觉语言动作(VLA)模型[7]。为了使利用多样化机器人数据来源成为可能,我们采用跨体训练(cross-embodiment training)[10],将多种机器人类型的数据合并到同一模型中。这些不同类型的机器人具有不同的配置空间和动作表达,包括单臂和双臂系统以及移动操纵器。此外,为了使执行高度灵巧和复杂的物理任务成为可能,我们使用流匹配(flow matching:一种扩散变体)的动作分块架构[57]来表示复杂的连续动作分布[28, 32]。这使我们的模型能够以高达50 Hz的频率控制机器人执行诸如洗衣折叠(见图1)等灵巧任务。为了将流匹配与VLM结合起来,我们使用了一个新颖的动作专家,该专家通过基于流的输出增强了标准的VLM。


在这里插入图片描述图1:我们的通用机器人策略使用了一个预训练的视觉语言模型(VLM)作为基础,以及一个包含多种灵巧操作任务的多样化跨体数据集。该模型通过增加一个单独的动作专家进行机器人控制调整,该专家通过流匹配产生连续动作,使得操作技能精确流畅。该模型随后可以用于零样本控制或在高质量数据上进行微调,以实现复杂的多阶段任务,如折叠多件衣物或组装一个盒子。


与语言模型一样,我们模型的架构只是我们方法的一部分。为了灵活而稳健地执行复杂任务,我们需要正确的训练配方。我们的配方模仿了通常在超大规模语言和图像语言模型[1, 48]中看到的预训练/训练后分离,其中模型首先在非常大和多样化的语料库上进行预训练,然后在更狭窄和更精心策划的数据上进行微调,以诱导期望的行为模式——在我们的案例中,是灵巧、效率和鲁棒性。直观地说,只在高质量数据上进行训练并不能教会模型如何从错误中恢复,因为在这样的数据中很少看到错误。只在低质量的预训练数据上进行训练并不能教会模型高效和稳健地行动。两者的结合提供了期望的行为:模型尽可能地按照高质量数据的方式行动,但仍具备一套恢复和纠正措施,可以在出错时部署。

我们工作的贡献包括基于VLM预训练和流匹配的新颖通用机器人政策架构,以及对此类机器人基础模型的预训练/训练后配方进行的实证调查。我们评估了我们的模型在语言命令的零样本控制、微调到下游任务以及与输出中间语言命令以执行复杂和时间延长任务的高级语义策略结合使用。虽然我们的模型和系统利用了近期工作中提出的多种想法,但这些成分的结合是新颖的,而实证评估表明的灵巧和通用性远远超出了以前展示的机器人基础模型。我们通过在超过10,000小时的机器人数据上进行预训练,并微调到多种灵巧任务,包括洗衣折叠(见图2)、清理桌面、放置餐具进微波炉、将鸡蛋堆叠进纸盒、组装盒子和打包杂货,来评估我们的方法。


在这里插入图片描述图2: π 0 \pi_0 π0 控制一个移动操纵器折叠衣服。我们的模型在7种不同的机器人配置和68项任务的多样化数据上进行了预训练,然后可以在零样本或微调到复杂的下游任务中使用,就像这个洗衣折叠策略一样,它从烘干机中取出衣物,将其打包到洗衣篮中,将洗衣篮带到折叠桌旁,然后将每件衣物折叠好。



II. RELATED WORK

我们的工作基于最近提出的大规模机器人学习方法,以及多模态语言模型。 我们的工作与最近提出的视觉-语言动作(VLA)模型最为相关,这些模型使用预训练的视觉语言模型(VLM),经过微调用于机器人控制[7, 24, 55]。这些模型采用自回归离散化来表示动作,类似于文本令牌的方式。与此相反,我们的模型采用一种新颖的设计,通过流匹配[32, 28](一种扩散变体)对VLM进行微调以产生动作。这使我们能够处理高频动作块[57](高达50Hz)和高灵巧任务,我们表明这对之前的自回归VLA[7]构成了主要挑战。这类似于最近关于动作生成的扩散模型的一些研究[9, 60]。与这些工作不同,我们的模型使用预训练的VLM骨干[5]。我们的贡献也基本上是整合性的,专注于机器人基础模型框架,包括不仅仅是模型架构本身,还包括预训练配方、预训练和训练后阶段,以及一系列实际实验。

在机器人控制之外,许多模型已经被提出,将预训练的语言模型与扩散[40, 41, 14]相结合,包括特别将扩散与自回归大语言模型[19, 29, 59]混合的模型。这些模型通常与图像生成有关,但我们的动作生成模型建立在一些先前提出的概念上。像周等人[59]一样,我们通过在个别序列元素上应用扩散式(流匹配)损失进行模型训练,代替标准的交叉熵损失,这适用于仅解码器的变换器。像刘等人[29]一样,我们对应于扩散的令牌使用一组单独的权重。将这些概念纳入VLA模型中,我们引入了据我们所知的第一个流匹配VLA,它产生用于灵巧控制的高频动作块。

我们的工作还建立在大规模机器人学习的丰富历史基础上。 这一领域的早期工作通常使用自监督或自动数据收集[26, 22, 8],为简单任务如抓取[18, 37]或推动[56]提供了可行的数据来源,但没有涉及更复杂的灵巧行为的复杂性。最近,已经收集了一些高质量的机器人控制数据集,使得广泛泛化成为可能[23, 10, 52, 33, 34, 43, 13, 6],但通常用于较简单的任务,如物体搬运和基本家具操作(例如,抽屉开关)[31, 15]。更灵巧的任务在更小的规模上研究,通常有10或100个训练轨迹[57],相当于10小时或更少的时间。由于我们的目标是研究复杂和灵巧的行为,我们使用了更大的数据集,约10000小时的演示,辅以开源的OXE数据集[10]。据我们所知,这代表了迄今为止最大的机器人学习实验,就机器人数据量而言。在这 种规模下,我们表明更复杂的预训练/训练后配方非常有效——与用于大型语言模型的配方类似,预训练阶段赋予我们的模型广泛的知识基础,然后在训练后阶段用更高质量的策划数据进行精细化,以实现期望的行为。

我们展示的任务复杂性远远超越了之前的工作。虽然最近的工作已经展示了一些更复杂和更灵巧的行为,如系鞋带[58]或烹饪虾[17],我们展示了我们的框架可以训练非常长的任务,有时长达数十分钟,这些任务结合了物理灵巧性和组合复杂性。例如,我们的洗衣折叠任务要求机器人操纵各种衣物,这些衣物可以以任何配置开始,并且要连续折叠多个项目。我们的桌面清理任务需要辨别新物品的类别(垃圾或餐具)。我们展示了一个单一的跨实体模型可以用作这些任务的基础模型。据我们所知,我们的工作展示了端到端机器人学习文献中最长的灵巧任务。


III. OVERVIEW

我们在图 3 中概述了我们的模型和训练程序。在我们的训练框架中,我们首先组建一个预训练混合体,由我们自己收集的七种不同机器人配置下的 68 项不同任务的灵巧操作数据集(第 V-C 节)和整个 OXE 数据集(包含 22 个机器人的数据)[10]按权重组合而成。预训练阶段(第 V-A 节)还使用多样化的语言标签,结合任务名称和细分标注(子轨迹的细粒度标签,通常长度为 2 秒)。预训练阶段的目的是训练一个展示广泛能力和泛化能力的基础模型,但不一定专门针对任何一个任务的高性能。这个基础模型可以遵循语言指令并以基本的熟练程度执行各种任务。对于复杂和灵巧的任务,我们随后采用后训练程序(第 V-A 节),使用高质量的精选数据将模型适配到特定的下游任务。我们研究了使用少量到中等量数据的高效后训练,以及使用较大数据集的高质量后训练,用于复杂任务如洗衣折叠和移动操作。


在这里插入图片描述图3:我们框架的概述。我们从一个预训练混合开始,包括我们自己的灵巧操作数据集和开源数据。我们使用这种混合训练我们的流匹配VLA模型,该模型由一个较大的VLM主干和一个较小的动作专家组成,用于处理机器人状态和动作。VLM主干的权重从PaliGemma[5]初始化,提供了从大规模互联网预训练中学到的表徵。结果 π 0 \pi_0 π0模型可用于控制具有不同动作空间的多个机器人实体,以完成各种任务。


我们的模型(在第 IV 节中描述)基于 PaliGemma 视觉-语言模型 [5],我们随后用我们的数据混合体进一步训练。为了将基础的 PaliGemma VLM 转化为 π 0 \pi_0 π0,我们增加了使用流匹配 [32, 28] 生成连续动作分布的动作输出。我们将在接下来的章节中详细描述这一设计。请注意,我们出于方便和因为其相对较小的大小(这有利于实时控制)使用 PaliGemma,但我们的框架与任何基础预训练的 VLM 兼容。


IV. π 0 \pi_0 π0模型

如图3所示, π 0 \pi_0 π0模型主要由一个语言模型变换器骨干组成。遵循标准的后融合视觉-语言模型(VLM)配方[3, 11, 30],图像编码器将机器人的图像观察结果嵌入到与语言token相同的嵌入空间中。我们进一步用机器人特定的输入和输出增强了这个骨干——即,本体感知状态和机器人动作。 π 0 \pi_0 π0使用条件流匹配[28, 32]来模拟动作的连续分布。流匹配为我们的模型提供了高精度和多模态建模能力,使其特别适合于高频率灵巧任务。我们的架构受到了Transfusion [59]的启发,该模型使用多个目标训练单个变压器,其中token(在这篇论文中,我们使用“token”这个词来指代序列维度上的输入/输出槽位,无论该槽位是对应一个离散变量(例如,一个语言token)还是一个连续变量(例如,一个图像块或一个机器人动作))对应于通过流匹配损失监督的连续输出,而token对应于通过交叉熵损失监督的离散输出。在Transfusion的基础上,我们发现使用一套单独的权重用于机器人特定(动作和状态)的token可以提高性能。这种设计类似于一个专家混合[45, 25, 12, 16],有两个混合元素,其中第一个元素用于图像和文本输入,第二个用于机器人特定的输入和输出。我们将第二组权重称为动作专家。

形式上,我们想要建模数据分布 p ( A t ∣ o t ) p(\text{A}_t|\text{o}_t) p(Atot),其中 A t = [ a t , a t + 1 , . . . , a t + H − 1 ] \text{A}_t = [\text{a}_t, \text{a}_{t+1}, ..., \text{a}_{t+H−1}] At=[at,at+1,...,at+H1]对应未来动作的动作块(我们的任务中使用 H = 50 H = 50 H=50), o t \text{o}_t ot是一个观察结果。观察包括多个RGB图像、一个语言命令和机器人的本体感知状态,因此 o t = [ I t 1 , . . . , I t n , ℓ t , q t ] \text{o}_t = [\text{I}^1_t, ..., \text{I}^n_t, ℓ_t, \text{q}_t] ot=[It1,...,Itn,t,qt],其中 I t i \text{I}^i_t Iti是第 i i i个图像(每个机器人2或3张图像), ℓ t ℓ_t t是一系列语言token, q t \text{q}_t qt是关节角度的向量。图像 I t i \text{I}^i_t Iti和状态 q t \text{q}_t qt通过相应的编码器进行编码,然后通过线性投影层投影到与语言token相同的嵌入空间中。

对于动作块 A t \text{A}_t At中的每个动作 a t ′ \text{a}_{t'} at,我们有一个相应的动作token,我们通过动作专家进行传递。在训练期间,我们使用条件流匹配损失[28, 32]监督这些动作token,

我很抱歉,我错过了这个细节。下次我会确保使用正确的符号来表示公式。下面是正确的公式表示:

L τ ( θ ) = E p ( A t ∣ o t ) , q ( A t τ ∣ A t ) ∥ v θ ( A t τ , o t ) − u ( A t τ ∣ A t ) ∥ 2 , L^\tau(\theta) = \mathbb{E}_{p(\text{A}_t|\text{o}_t), q(\text{A}^{\tau}_{t} | \text{A}_t)} \| \text{v}_\theta(\text{A}^{\tau}_{t}, \text{o}_t) - \text{u}(\text{A}^{\tau}_{t} | \text{A}_t) \|^2, Lτ(θ)=Ep(Atot),q(AtτAt)vθ(Atτ,ot)u(AtτAt)2,

这个公式帮助我们在训练时调整模型,优化其在复杂动态环境中的动作预测能力。

该公式计算的是在给定观测 o t \text{o}_t ot条件下,通过模型 v θ \text{v}_\theta vθ预测的动作 A t τ \text{A}^{\tau}_{t} Atτ与给定动作序列 A t \text{A}_t At条件下 A t τ \text{A}^{\tau}_{t} Atτ的真实值 u ( A t τ ∣ A t ) \text{u}(\text{A}^{\tau}_{t}| \text{A}_t) u(AtτAt)之间的平方误差的期望值。


公式表示为一个期望损失,其中 L τ ( θ ) L^\tau(\theta) Lτ(θ)是关于模型参数 θ \theta θ的损失函数,基于条件流匹配的公式计算得到的。这里 E \mathbb{E} E表示期望操作, p ( A t ∣ o t ) p(\text{A}_t|\text{o}_t) p(Atot)是给定观测 o t \text{o}_t ot时动作 A t \text{A}_t At的条件概率分布。 q ( A t τ ∣ A t ) q(\text{A}^{\tau}_{t} | \text{A}_t) q(AtτAt)是给定动作序列 A t \text{A}_t At时,某一特定动作 A t τ \text{A}^{\tau}_{t} Atτ的条件概率分布。这里使用了条件概率分布 p ( A t ∣ o t ) p(\text{A}_t|\text{o}_t) p(Atot) q ( A t τ ∣ A t ) q(\text{A}^{\tau}_{t} | \text{A}_t) q(AtτAt)来计算期望。


公式中的 v θ ( A t τ , o t ) \text{v}_\theta(\text{A}^{\tau}_{t}, \text{o}_t) vθ(Atτ,ot)表示在给定观测 o t \text{o}_t ot条件下,通过模型 v θ \text{v}_\theta vθ预测的动作 A t τ \text{A}^{\tau}_{t} Atτ;而 u ( A t τ ∣ A t ) \text{u}(\text{A}^{\tau}_{t} | \text{A}_t) u(AtτAt)是在给定 A t \text{A}_t At的情况下 A t τ \text{A}^{\tau}_{t} Atτ的真实值或目标值。然后计算他们之间的平方误差的期望值。公式中的范数 ∣ ∣ ⋅ ∣ ∣ 2 ||\cdot||^2 ∣∣2表示预测值与真实值之间误差的平方,用于量化模型的预测性能。

在这段描述中,下标表示机器人的时间步,上标表示流匹配时间步,其中 τ ∈ [ 0 , 1 ] \tau \in [0, 1] τ[0,1]。近期在高分辨率图像[14]和视频[38]合成领域的研究表明,当结合简单的线性高斯(或最优传输)概率路径 q ( A t τ ∣ A t ) = N ( τ A t , ( 1 − τ ) I ) q(\text{A}^{\tau}_{t} | \text{A}_t) = \mathcal{N}(\tau \text{A}_t, (1 - \tau)\text{I}) q(AtτAt)=N(τAt,(1τ)I)时,流匹配可以实现强大的经验性能。在实践中,通过随机采样噪声 ϵ ∼ N ( 0 , I ) \epsilon \sim \mathcal{N}(0, \text{I}) ϵN(0,I),计算"噪声动作" A t τ = τ A t + ( 1 − τ ) ϵ \text{A}_t^\tau = \tau \text{A}_t + (1 - \tau) \epsilon Atτ=τAt+(1τ)ϵ,然后训练网络输出 v θ ( A t τ , o t ) \text{v}_\theta(\text{A}_t^\tau, \text{o}_t) vθ(Atτ,ot)以匹配去噪向量场 u ( A t τ ∣ A t ) = ϵ − A t \text{u}(\text{A}^{\tau}_{t} | \text{A}_t) = \epsilon - \text{A}_t u(AtτAt)=ϵAt来训练网络。动作专家使用一个完整的双向注意力掩码,使所有动作标记彼此注意。在训练期间,我们从一个强调较低(更噪声)时间步的Beta分布中采样流匹配时间步 τ \tau τ。更多细节请参见附录B。

在推断时,我们通过从 τ = 0 \tau = 0 τ=0 τ = 1 \tau = 1 τ=1整合学习到的向量场来生成动作,起始于随机噪声 A t 0 ∼ N ( 0 , I ) \text{A}_t^0 \sim \mathcal{N}(0, \text{I}) At0N(0,I)。我们使用前向欧拉积分规则:
A t τ + δ = A t τ + δ v θ ( A t τ , o t ) , \text{A}_t^{\tau+\delta} = \text{A}_t^\tau + \delta \text{v}_\theta(\text{A}_t^\tau, \text{o}_t), Atτ+δ=Atτ+δvθ(Atτ,ot),
其中 δ \delta δ是积分步长。在我们的实验中,我们使用了10个积分步骤(相当于 δ = 0.1 \delta = 0.1 δ=0.1)。值得注意的是,推断可以通过缓存前缀 o t \text{o}_t ot的注意力键和值,并且仅在每个积分步骤重新计算与动作标记对应的后缀来有效实现。我们在附录D中提供了更多关于推断过程的细节,包括模型每部分的推断时间。

尽管原则上我们的模型可以从零开始初始化或者从任何视觉语言模型(VLM)基础上进行微调,实际上我们使用了PaliGemma [5] 作为我们的基础模型。PaliGemma 是一个开源的、拥有30亿参数的VLM,它提供了一个在模型大小和性能之间的便利折中。我们为动作专家增加了3亿参数(从零开始初始化),使得总参数量达到33亿。我们在附录B中提供了模型架构的完整描述。

非VLM基线模型。 除了我们的主要VLA模型外,我们还训练了一个类似的基线模型,该模型没有使用VLM初始化来进行消融实验。这个模型,我们称之为 π 0 π_0 π0-small,有4.7亿参数,不使用VLM初始化,并且有一些我们发现在没有VLM初始化的情况下对训练我们的数据有帮助的小的不同之处,这些差异在附录C中进行了总结。这个模型被用于我们的比较中,以评估结合VLM带来的好处。


V. 数据收集和培训配方

广泛能力的机器人基础模型不仅需要一个表现力强和功能强大的架构,还需要正确的数据集,更重要的是,需要正确的训练配方。与LLM(大型语言模型)训练通常分为预训练和后训练阶段一样,我们对我们的模型采用多阶段训练程序。预训练阶段的目标是使模型接触多种多样的任务,使其能够获得广泛适用的一般物理能力而后训练阶段的目标则是提供模型具有熟练和流畅执行所需下游任务的能力。因此,预训练和后训练数据集的要求是不同的:预训练数据集应尽可能涵盖多种任务,并在这些任务中涵盖多样化的行为后训练数据集应涵盖有助于有效任务执行的行为,这些行为应展现出一致且流畅的策略。直观地说,多样化(但质量较低)的预训练数据允许模型从错误中恢复并处理高度多变的情况,这些情况在高质量的后训练数据中可能不会出现,而后训练数据则教导模型如何更好地执行任务。

A. 预训练和后训练

我们在图4中提供了预训练混合物的概述。


在这里插入图片描述图4:我们数据集的概述:预训练混合物由OXE [10]的一个子集和 π \pi π数据集组成。我们使用OXE的一个子集,我们称之为OXE Magic Soup [24]。右图展示了预训练混合物中不同数据集的权重。左图展示了它们的相对大小,通过训练步数来衡量。


由于每个训练样本对应一个时间步——即一个元组 ( o t , A t ) (\text{o}_t, \text{A}_t) (ot,At),——我们将在这里的讨论中以时间步来量化数据。训练混合物中9.1%的数据来自开源数据集,包括OXE [10],Bridge v2 [52]和DROID [23]。这些数据集中的机器人和任务通常使用一两个摄像头,并且控制频率在2到10 Hz之间。然而,这些数据集涵盖了广泛的对象和环境。为了学习更灵巧和复杂的任务,我们还使用了来自自己数据集的9.03亿个时间步的数据,其中1.06亿步来自单臂机器人,7.97亿步来自双臂机器人。这些数据涵盖了68个任务,每个任务都由复杂的行为组成——例如,“清理”任务涉及将各种不同的餐具、杯子和器皿放入清理箱中,以及将各种垃圾物品放入垃圾桶。请注意,这种对任务的定义与以往的工作有很大的不同,以往的工作通常使用任何名词和动词的组合(例如,“拿起杯子”与“拿起盘子”)来定义一个独立的任务。因此,我们数据集中的行为范围实际上比这个“任务”数量所暗示的要广泛得多。我们将在第V-C节更详细地讨论我们数据集中的具体机器人和任务。

由于数据集在大小上有些不平衡(例如,更难的洗衣叠衣任务过度代表),我们通过 n 0.43 n^{0.43} n0.43来加权每个任务-机器人组合,其中 n n n是该组合的样本数量,这样过度代表的组合被降权。配置向量 q t \text{q}_t qt和动作向量 a t \text{a}_t at始终具有数据集中最大机器人的维度(在我们的案例中为18,以容纳两个6自由度的手臂,2个抓取器,一个移动基座和一个垂直作动的躯干)。对于配置和动作空间维度较低的机器人,我们将配置和动作向量进行零填充。对于少于三个图像的机器人,我们也会屏蔽掉缺失的图像槽。

在后训练阶段,我们使用一个较小的特定任务数据集对我们的模型进行微调,以使其专门用于特定的下游应用。如前所述,我们对“任务”的定义相当宽泛——例如,“清理”任务需要操作各种不同的对象。不同的任务需要非常不同的数据集,最简单的任务只需要5小时,而最复杂的任务使用的数据可能超过100小时。

B. 语言和高级策略

更复杂的任务,如清理餐桌,需要语义推理和高级策略,也可以从一个高级策略中受益,该策略将高级任务(如“清理餐桌”)分解为更直接的子任务(如“拿起餐巾”或“将餐巾扔进垃圾桶”)。由于我们的模型被训练来处理语言输入,我们可以使用一个高级视觉语言模型(VLM)来进行这些语义推断,这种方法类似于LLM/VLM规划方法,如SayCan [2]。我们使用这样一个高级策略来协助我们的模型为几个实验任务制定高级策略,我们将在第VI节中讨论。

C. 机器人系统细节

我们的灵巧操控数据集包括7种不同的机器人配置和68个任务。我们在图5中总结了这些平台,并在下面讨论它们:


在这里插入图片描述图5:我们实验中使用的机器人。这些包括单臂和双臂操纵器,具有6自由度和7自由度的手臂,以及全向和非全向移动操纵器。 π 0 \pi_0 π0在所有这些平台上进行了联合训练。


  • UR5e: 配备平行夹爪的机械臂,装有手腕安装和肩上的摄像头,共有两个摄像头图像和7维的配置及动作空间。
  • 双臂UR5e: 两套UR5e设置,共有三个摄像头图像和14维的配置及动作空间。
  • Franka: Franka设置有两个摄像头和8维的配置及动作空间。
  • 双臂Trossen: 该设置有两个6自由度的Trossen ViperX臂,基于ALOHA设置[4, 57],配有两个手腕摄像头和一个基座摄像头,以及14维的配置及动作空间。
  • 双臂ARX & 双臂AgileX: 此设置使用两个6自由度的手臂,支持ARX或AgileX手臂,有三个摄像头(两个手腕和一个基座)和14维的配置及动作空间。这个类别包括两个不同的平台,但由于它们的运动特性相似,因此我们将它们归为一类。
  • 移动Trossen & 移动ARX: 此设置基于Mobile ALOHA [57]平台,有两个6自由度的手臂安装在移动基座上,手臂可以是ARX手臂或Trossen ViperX手臂。非全向基座增加了两个动作维度,有14维的配置和16维的动作空间。这个类别包括两个不同的平台,但由于它们的运动特性相似,因此我们将它们归为一类。
  • 移动Fibocom: 两个6自由度的ARX手臂安装在全向基座上。基座增加了三个动作维度(两个用于平移和一个用于定向),有14维的配置和17维的动作空间。

我们在图4中总结了我们数据集中每种机器人的比例。


VI. 实验评估

我们的实验评估包括零次启动(zero-shot)评估实验,这些实验将我们的基础(预训练)模型与其他模型设计进行比较,以及对我们的模型在具有挑战性的下游任务上进行详细的微调实验,与为灵巧操纵任务提出的其他方法进行比较。我们研究以下研究问题:

  1. 在预训练数据中出现的多种任务上, π 0 \pi_0 π0在预训练后的表现如何?我们通过直接评估 π 0 \pi_0 π0来研究这个问题,并将其与其他机器人基础模型进行比较。
  2. π 0 \pi_0 π0执行语言命令的能力如何?这些实验将 π 0 \pi_0 π0 π 0 \pi_0 π0-small(我们模型的一个较小版本,没有VLM初始化)进行比较,以评估其执行语言命令的性能。我们使用人类提供的命令和由高级VLM策略指定的命令进行评估,如第V-B节所述。
  3. π 0 \pi_0 π0与专门用于处理灵巧操纵任务的方法相比如何?这些实验研究了我们可以对模型进行微调的下游任务,这些任务要么从预训练的初始化开始,要么从针对特定任务的数据开始训练,与为灵巧操纵提出的先前方法进行比较。我们旨在评估我们的架构和我们的预训练程序的好处。
  4. π 0 \pi_0 π0是否可以适应复杂的多阶段任务?在我们的最后一组实验中,我们将 π 0 \pi_0 π0微调到一组特别复杂的任务,包括折叠衣服和清理餐桌。这些任务需要5到20分钟来完成。有些任务需要高级策略的指导。

A. 基础模型评估

在我们的第一组实验中,我们在完整的预训练混合数据集上评估模型,没有进行任何后续训练,以评估我们的基础模型在各种任务上的表现。我们将其与文献中的其他机器人基础模型进行比较:包括视觉语言行为(VLA)模型和从头训练的较小模型。我们在图6中可视化的以下任务上进行评估,每个任务都通过语言命令指派给同一个基础模型:

  • 折叠衬衫:机器人必须折叠一件平铺的T恤。
  • 简单清理:机器人必须清理桌子,将垃圾放入垃圾桶,将餐具放入碟子箱。分数指示放置在正确容器中的物品数量。
  • 困难清理:清理任务的更难版本,有更多物品和更具挑战性的配置,例如故意将餐具放在垃圾物品上,物品相互阻挡,以及一些不在预训练数据集中的物品。
  • 杂货打包:机器人必须打包所有杂货物品,如薯片、棉花糖和猫粮。
  • 从烤面包机中取出吐司:机器人从烤面包机中取出吐司。

在这里插入图片描述图6:零次启动评估任务:为了评估我们的基础模型,我们在预训练后运行五个任务:折叠衬衫、简单清理、困难清理、打包杂货和取出吐司。这些任务需要一系列灵巧操纵、多阶段行为和语义识别的组合。


在这些实验中提供比较是具有挑战性的,因为很少有先前的模型可以在这种规模上运行。我们与OpenVLA [24]比较,一个训练在OXE数据集 [10]上的7B参数VLA模型。我们在我们完整的混合数据上训练OpenVLA。这对OpenVLA是一个非常困难的混合,它不支持动作分块或高频控制。我们还与Octo [50]比较,一个较小的93M参数模型。虽然Octo不是VLA,但它确实使用扩散过程生成动作,为我们的流匹配VLA提供了一个有价值的比较点。我们也在与我们模型相同的混合数据上训练Octo。由于时间限制,我们无法训练OpenVLA和Octo与我们的完整模型相同的周期数。因此,我们还比较了一个“计算平等”版本的我们的模型,它只训练了160k步(与我们主模型的700k步相比),这等于或低于提供给基线模型的步数(OpenVLA 160k,Octo 320k)。我们还包括了一个我们只在UR5e数据上微调的OpenVLA模型,没有跨执行体训练,希望为UR5e任务提供一个更强的基线。最后,我们还包括了第IV节中描述的 π 0 \pi_0 π0-small模型的比较,可以看作是我们模型的一个缩小版,没有VLM预训练。

评估指标使用每个任务和方法的10个剧集的平均标准化分数,其中一个剧集获得1.0的满分,部分成功获得分数。例如,清理的得分是正确放置在适当容器中的物品的比例。我们在附录E中描述了评分标准。结果如图7所示,显示 π 0 \pi_0 π0在所有零次启动任务上获得了迄今为止最好的结果,折叠衬衫和较简单的清理任务获得了近乎完美的成功率,并且在所有基线上都有很大的改进。只训练了160k步的 π 0 \pi_0 π0“平等”版本仍然优于所有基线,甚至 π 0 \pi_0 π0-small也优于OpenVLA和Octo。OpenVLA在这些任务上表现不佳,因为其自回归离散化架构不支持动作分块。只用于UR5e的OpenVLA模型表现更好,但仍远低于 π 0 \pi_0 π0的性能。Octo支持动作分块,但表现能力相对有限。这一比较说明了结合大型、表现能力强的架构与能够通过流匹配或扩散建模复杂分布的能力的重要性。此外,与 π 0 \pi_0 π0-small的比较说明了纳入VLM预训练的重要性。不幸的是,这最后一种比较很难公平: π 0 \pi_0 π0-small使用的参数较少,但更大的模型在没有预训练的情况下难以使用。总的来说,这些实验表明 π 0 \pi_0 π0提供了一个强大的预训练模型,能够有效地执行多种任务,与多种机器人一起使用,其性能远超先前的模型。


在这里插入图片描述图7:零次启动评估结果:我们评估了训练了全部700k步的 π 0 \pi_0 π0、训练了160k步与基线模型匹配的版本、 π 0 \pi_0 π0-small以及三个基线:训练在我们所有数据上的OpenVLA和Octo,以及只在UR5e任务上训练的OpenVLA(我们发现它在UR5e任务上表现更好)。在所有任务和所有比较中,即使是“平等”版本的我们的模型也超过了所有基线,而我们的模型的完整版本则以很大的优势取得了最佳结果。


B. 遵循语言指令

在下一组实验中,我们对基础 π 0 \pi_0 π0 模型进行微调,使其能够在一组评估领域中遵循语言指令。我们将这个经过微调的 π 0 \pi_0 π0 模型与第四节中描述的 π 0 \pi_0 π0-small 模型进行比较,后者在上一节中被认为是最强的基线模型。请记住 π 0 \pi_0 π0-small 没有使用 VLM 初始化。因此,这个实验的目的是衡量 VLM 预训练对增强我们模型遵循语言指令能力的影响。需要注意的是, π 0 \pi_0 π0-small 也是一个明显更小的模型——不幸的是,很难消除这个混淆变量,因为 VLM 初始化既有助于训练一个更大的模型而不会过拟合,也有助于改善遵循语言指令的能力。我们仍希望这个实验能够揭示 π 0 \pi_0 π0 的语言能力。每个任务的语言指令包括要拿起的物品和放置这些物品的位置,具有大约2秒长度的语言标记的片段。每个完整任务由许多此类片段组成。此评估包括的任务有:

  • 清理:机器人必须清理桌面,将餐具和餐具放入一个容器中,将垃圾放入垃圾桶中。
  • 餐桌布置:机器人必须从一个容器中取出物品来布置餐桌,包括餐垫、餐盘、餐具、餐巾和杯子,并根据语言指令调整它们。
  • 杂货打包:机器人必须打包杂货物品,如咖啡豆袋、大麦、棉花糖、海带、杏仁、意大利面和罐头。

在这里插入图片描述图8:我们的语言评估任务。我们在三个不同的语言条件任务上评估我们的模型,每个任务都需要按照一系列中间语言命令执行。任务涉及清理桌子(顶部)将餐具放入垃圾箱和垃圾放入垃圾桶,设置餐桌(中间)通过从垃圾箱中取出物品,以及打包购物袋(底部)。


在图8中,我们展示了我们评估中的语言条件任务,并展示了评估结果。我们评估五种不同的条件。 π 0 \pi_0 π0-flat(和 π 0 \pi_0 π0-small-flat)对应于直接使用任务描述命令模型(例如,“打包杂货”),没有中间语言命令。 π 0 \pi_0 π0-human(和 π 0 \pi_0 π0-small-human)提供中间步骤命令(例如,选择哪个物品拿起和放置的位置)来自专业人类用户。这些条件评估每个模型遵循更详细语言指令的能力:虽然这些中间命令提供了执行任务的大量信息,但模型必须能够理解并遵循这些命令才能从中受益。最后, π 0 \pi_0 π0-HL 评估 π 0 \pi_0 π0 使用由高级 VLM 提供的高级命令,如第 V-B 节所述。这种条件也是自动的,没有任何人类专家的干预。

在图9中,平均每个任务10次试验的结果显示, π 0 \pi_0 π0 的语言遵循精度显著优于 π 0 \pi_0 π0-small。这表明从较大的预训练 VLM 初始化获得了显著的改进。这种能力转化为在专家人类指导( π 0 \pi_0 π0-human)和高级模型指导( π 0 \pi_0 π0-HL)下的性能改进。结果表明, π 0 \pi_0 π0 的语言遵循能力直接转化为在高级指导下执行复杂任务的更好自主性能。


在这里插入图片描述图9:语言评估。我们比较我们政策的“flat”版本,−flat,它们只接收整体任务命令(例如,“打包杂货”)与接收来自人类专家的中间命令的方法,−human,或高级 VLM 政策,−HL。我们还将我们的模型与在“专家”条件下的小型非 VLM 变体进行比较, π 0 \pi_0 π0 π 0 \pi_0 π0-small,根据语言遵循精度进行比较。结果显示, π 0 \pi_0 π0 从人类专家提供的中间语言命令和在较小程度上从自动高级政策获得了显著的改进。值得注意的是,由于 π 0 \pi_0 π0-small 的有限语言遵循能力,总体上它没有因添加高级专家而获得好处。


C. 学习新的灵巧任务

在下一组实验中,我们对模型进行评估,涉及的新任务与预训练数据显著不同,需要完全新的行为。在这些评估中,我们使用各个新任务的不同数据量对模型进行微调。虽然每个任务都是新的,我们根据它们与预训练数据中的任务的差异程度将任务分为不同的“层级”。任务如图10所示,包括:

  • UR5e堆叠碗:此任务需要堆叠不同大小的四个碗。由于该任务需要像预训练数据中的清理任务一样抓取和移动餐具,我们将其归为“简单”层级。训练数据包含多种碗,评估使用见过和未见过的碗混合。
  • 毛巾折叠:这个任务需要折叠毛巾。由于这与预训练中存在的衬衫折叠类似,我们将其归为“简单”层级。
  • 微波炉中的保鲜盒:这个任务需要打开微波炉,将塑料容器放进去,并关上。容器有不同的形状和颜色,评估使用见过和未见过的容器混合。容器操纵与预训练数据类似,但微波炉在预训练中未出现。
  • 纸巾更换:这个任务需要从支架上取下旧的纸巾纸筒,并更换为新的纸巾卷。由于预训练中未出现此类物品,我们将其视为“困难”。
  • Franka抽屉中的物品:这个任务需要打开一个抽屉,将物品打包进抽屉,并关上。由于预训练中没有与Franka机器人类似的任务,我们将其视为“困难”。

在这里插入图片描述图10:微调评估任务:我们将我们的模型微调到与预训练任务不同的各种下游任务。我们的任务代表了从与预训练任务最相似的任务(堆叠碗和毛巾折叠),引入未见过的新元素(一个微波炉),以及需要新动作和新物体类型的任务(Franka 抽屉中的物品和纸巾更换)。


我们将微调后的模型与OpenVLA[24]和Octo[50]进行比较,这两种也采用了预训练和微调配方。由于我们的目标是评估特定模型(而非架构),我们使用这些模型的公开可用的预训练检查点,这些检查点在OXE[10]上训练,然后将它们微调到每个任务。我们还将模型与ACT[57]和Diffusion Policy[9]进行比较,这两种策略专门用于从较小数据集中学习灵巧任务。ACT和Diffusion Policy仅在与ACT和Diffusion Policy实验[9, 57]中使用的类似大小的微调数据集上训练。我们通过从我们的预训练基础模型进行微调以及从头开始训练来评估 π 0 \pi_0 π0。此比较旨在评估 π 0 \pi_0 π0架构和我们的预训练程序的个别优势。我们假设具有VLM初始化的 π 0 \pi_0 π0架构应该为单个任务提供更强的起点,而预训练程序应进一步提高其性能,特别是使用较小的微调数据集时。

图11显示了在各种方法上,针对所有任务的表现,每个任务平均进行10次试验,每个任务的微调数据量不同。我们包括了所有基线模型在堆叠碗和微波炉中保鲜盒任务上的表现。由于OpenVLA和Octo的表现显著较差,我们只在一个数据集大小上运行这些模型,因为在现实世界中评估如此多的模型的时间成本很高。结果显示, π 0 \pi_0 π0通常胜过其他方法。有趣的是,表现最强的之前的模型是那些完全从头开始针对目标任务训练的,这表明在这些领域中利用预训练呈现出现有方法的一个主要挑战。尽管在保鲜盒任务上, π 0 \pi_0 π0的5小时政策的表现与基线相似,但1小时版本显著更好。如预期,预训练对与预训练数据更相似的任务带来了更大的改善,尽管预训练模型通常比非预训练模型表现更好,有时甚至好2倍。


在这里插入图片描述图11:使用不同数量数据的微调。 π 0 \pi_0 π0可以通过较少量的数据学习一些较简单的任务,而预训练模型通常比从头开始训练的模型取得更大的改善。


D. 掌握复杂的多阶段任务

在我们的最后一组实验中,我们通过微调和语言的结合来应对一系列挑战性的多阶段任务。对于这些任务中的一些,预训练数据中已存在,但需要进行微调以达到精通水平。对于另一些任务,则在预训练数据中不存在。这些评估任务如图12所示,包括:

  1. 洗衣折叠:这个任务需要一个静态(非移动)的双臂系统来折叠衣物。衣物从一堆随机皱巴巴的状态开始,目标是取出衣物,折叠它,并将其放在之前折叠好的衣物堆上。随机初始配置的皱巴巴洗衣物呈现出一大挑战,因为策略需要泛化到任何配置。这个任务在预训练中存在。
  2. 移动洗衣:这里,图5中的Fibocom移动机器人需要折叠洗衣,面临许多相同的挑战,同时还需控制方向和平移。这个任务在预训练中存在。
  3. 烘干机卸载:这里,Fibocom移动机器人需要从烘干机中取出洗衣并将其放入洗衣篮中。这个任务在预训练中存在。
  4. 餐桌清理:这个任务需要清理一个摆满各种新奇物品的杂乱餐桌,这比我们的零次评估基准测试更具挑战性:政策必须泛化到未见过的各种形状和大小的物品,并执行复杂的灵巧动作,例如扭转抓手以捡起大盘子以及小心抓取如玻璃这样的薄而脆弱物品。机器人必须处理密集的杂乱,并智能地排序各种行为——例如,要清理带垃圾的盘子,它必须首先捡起盘子,然后将内容物摇入垃圾桶,然后将盘子放入垃圾桶中。这个任务在预训练中不存在。
  5. 盒子组装:机器人需要组装一个开始时呈平板状态的纸板盒。这个任务呈现出许多重大挑战:盒子需要以正确的方式弯曲,机器人需要在折叠其他部分时用两只手臂甚至是桌面来固定盒子的某些部分。机器人可能需要重新尝试某些折叠,需要有反应性和智能的策略。这个任务在预训练数据中不存在。
  6. 打包盒:这个任务需要将几种食物从盘子移动到打包盒中,需要将物品打包到盒子里,以便它们不突出盒子,然后用两只手臂关闭盒子。这个任务在预训练数据中不存在。
  7. 打包鸡蛋:机器人需要从碗中取出六个鸡蛋,并将它们打包到鸡蛋盒中,然后关闭盒子。鸡蛋需要以适合其在碗内姿势的方式被抓取,然后放入盒子的开放槽中。这呈现出挑战,因为鸡蛋的形状、滑性,以及需要小心放置。关闭盒子需要使用两只手臂。这个任务在预训练数据中不存在。

在这里插入图片描述图12: 我们评估一系列复杂且时间较长的任务。这包括:用静态(a)或移动(b)机器人从箱子中折叠衣物,清理真实午餐桌(c),组装箱子(d),将鸡蛋打包入纸盒(e),以及将食物打包入外带盒(f)。这些任务需要组合数十种个别行为,如抓取、堆叠、折叠和压平,泛化到各种物品配置,并处理复杂的物理属性,如可变形物体或柔性纸板。


图 13 显示了 10 次试验中每项任务的平均得分。评分标准见附录 E。得分1.0代表完美执行,部分得分对应于部分完成的任务(例如,0.5表示正确放置了一半的物品)。这些任务非常困难,我们无法使用其他方法解决它们。因此,我们使用这些任务来比较我们方法的消减版本,评估 π 0 \pi_0 π0在预训练和微调后的表现,预训练后的零次评估(“零次射击”),以及在没有任何预训练的情况下在微调数据上训练(“从零开始”)。结果表明 π 0 \pi_0 π0可以解决许多这些任务,我们的完整预训练和微调配方在各方面都表现最佳。请注意,这些更难的任务显示出使用预训练模型的非常大的改善,表明预训练对更难的任务特别有用。 π 0 \pi_0 π0的绝对性能因任务而异,可能是因为任务难度的差异以及任务在预训练中的代表程度。我们建议读者观看伴随网站上的任务视频,以更全面地了解这些任务及其复杂性。我们相信,这种在如此具有挑战性的任务上的自主性能表现代表了灵巧机器人操纵领域学习策略的新状态。


在这里插入图片描述图13: 复杂任务后期训练结果,以10次试验的平均得分表示。完整预训练的 π 0 \pi_0 π0模型在所有任务中的得分超过50%,通常优于减法版本,尤其是在最困难的任务上有显著的提高。



VII. 讨论、局限性与未来工作

我们提出了一个训练机器人基础模型的框架,我们称之为 π 0 \pi_0 π0,该框架包括在高度多样化的数据上进行预训练,然后进行零次评估或微调以应对复杂的下游任务。我们的实证评估研究了结合灵巧性、泛化能力和时间延展的多阶段行为的任务。我们的模型结合了互联网规模的视觉-语言模型(VLM)预训练和流匹配来表征复杂的高频动作块。我们的预训练混合物包括来自7种不同机器人配置和68个任务的10,000小时的灵巧操作数据,以及以前收集的大量机器人操作数据,如OXE [10]、DROID [23]和Bridge [52]。据我们所知,这是用于机器人操控模型的最大的预训练混合物。我们的微调实验包括20多个任务,我们展示了我们的模型如何胜过各种基准,包括以前的VLA模型 [24] 和专门为灵巧操作设计的模型 [57, 9]。我们还检验了我们的后期训练配方如何能够实现高度复杂的任务,如从任意初始配置折叠多件衣物或组装箱子。

我们的框架广泛地类似于用于大型语言模型的训练程序,这通常包括在从网络上抓取的非常大的数据集上预训练基础模型,然后进行后期训练程序,以“校准”模型以便它能够遵循指令并执行用户命令。通常认为,这类模型中的大部分“知识”是在预训练阶段获得的,而后期训练阶段的作用是告诉模型应如何利用这些知识来满足用户命令。我们的实验暗示,类似的现象可能也会出现在机器人基础模型上,其中预训练的模型具有一些零次射击能力,但像洗衣跟随这样的复杂任务需要用高质量数据进行微调。仅用这些高质量数据训练得到的模型表现出脆弱性,不一定能可靠地从错误中恢复,而零次射击运行的预训练模型并不总是展示后期训练数据中示范的流畅策略。

我们希望我们的结果能成为通向广泛适用的机器人基础模型的垫脚石。我们的实验表明,这样的模型可能很快就会成为现实,但还有许多限制和充分的未来工作空间。首先,我们的实验还未能全面理解预训练数据集应如何组成:我们结合了所有可用的数据,但理解哪种类型的数据更有帮助以及如何加权仍是一个开放的问题。并非我们评估中的所有任务都能可靠地工作,且目前还不清楚需要多少以及哪种类型的数据才能达到接近完美的性能。最后,将高度多样化的数据结合在一起是否有积极的传递作用还有待观察,特别是来自不同任务和不同机器人的数据:尽管我们的结果表明通用预训练机器人基础模型可能成为现实,但未来的工作需要理解这种通用性是否扩展到更多不同的领域,如自动驾驶、导航和足式运动。

致谢

我们感谢Laura Smith和Dibya Ghosh对论文的反馈及协助处理图表和视频,感谢Philip Clark、Kelly Sims和Saunaz Moradi对写作的反馈,以及感谢Evan Pokrandt、Joakim Keussen、Dan Philibin、Eitan Penner、Adam Lisagor和Greg Miller在插图、设计和视频方面的帮助。我们还要感谢Lili Yu的技术讨论。我们非常感激所有机器人操作员辛苦地收集机器人操作数据。关于完整的贡献声明,请参见附录A。


APPENDIX

A. 贡献

作者对以下领域做出了贡献(按字母顺序排列):
数据和运营: Noah Brown, Michael Equi, Chelsea Finn, Niccolo Fusai, Lachy Groom, Liyiming Ke, Suraj Nair, Lucy Shi, Anna Walling。
评估实验: Kevin Black, Michael Equi, Chelsea Finn, Brian Ichter, Liyiming Ke, Adrian Li-Bell, Suraj Nair, Karl Pertsch, Lucy Shi。
模型设计: Kevin Black, Brian Ichter, Sergey Levine, Karl Pertsch, Lucy Shi, Quan Vuong。
后训练: Michael Equi, Chelsea Finn, Liyiming Ke, Adrian Li-Bell, Suraj Nair, Lucy Shi。
预训练: Kevin Black, Danny Driess, Brian Ichter, Sergey Levine, Karl Pertsch, Lucy Shi, Quan Vuong。
机器人硬件: Noah Brown, Adnan Esmail, Chelsea Finn, Tim Jones, Mohith Mothukuri。
机器人软件: Karol Hausman, Szymon Jakubczak, Sergey Levine, James Tanner, Haohuan Wang。
训练基础设施: Kevin Black, Michael Equi, Sergey Levine, Adrian Li-Bell, Suraj Nair, Quan Vuong, Haohuan Wang, Ury Zhilinsky。
写作和插图: Kevin Black, Chelsea Finn, Lachy Groom, Karol Hausman, Brian Ichter, Sergey Levine, Quan Vuong。

B. 模型架构细节

在这一部分,我们提供了模型架构的完整描述。我们遵循PaliGemma VLM [5]的设计,但有以下不同:(1)为机器人特定的标记(tokens),包括状态向量 q t q_t qt和动作向量 A t = [ a t , . . . , a t + H − 1 ] \text{A}_t = [\text{a}_t, ..., \text{a}_{t+H-1}] At=[at,...,at+H1],添加了额外的输入和输出投影;(2)添加了一个额外的MLP,用于整合流匹配时间步信息 τ \tau τ;(3)为动作专家添加了一组较小的权重。

额外的输入和输出。 标准的PaliGemma架构接收一系列图像 [ I t 1 , . . . , I t n ] [\text{I}^1_{t}, ..., \text{I}^n_{t}] [It1,...,Itn],随后是语言提示 ℓ t ℓ_t t。我们为机器人的本体感知状态添加了一个输入 q t \text{q}_t qt,该输入通过线性投影映射到变换器嵌入维度。输入标记的最终集合对应于噪声动作块 A t τ = [ a t τ , . . . , a t + H − 1 τ ] \text{A}^\tau_{t} = [\text{a}^\tau_{t}, ..., \text{a}^\tau_{t+H-1}] Atτ=[atτ,...,at+H1τ],标记数量等于动作视野(H = 50对于我们的任务)。我们仅使用与H个噪声动作相对应的变换器输出,这些输出通过线性投影解码成 v θ ( A t τ , o t ) \text{v}_{\theta}(\text{A}^\tau_{t}, \text{o}_t) vθ(Atτ,ot)

整合流匹配时间步。 噪声动作块 A t τ \text{A}^\tau_{t} Atτ通过一个同时整合流匹配时间步 τ \tau τ的MLP映射到变换器的嵌入维度。对于每个噪声动作 a t ′ τ \text{a}^\tau_{t'} atτ,输入变换器的相应嵌入表达式为 W 3 ⋅ swish ( W 2 ⋅ concat ( W 1 ⋅ a t ′ τ , ϕ ( τ ) ) ) W_3 \cdot \text{swish}(W_2 \cdot \text{concat}(W_1 \cdot \text{a}^\tau_{t'}, \phi(\tau))) W3swish(W2concat(W1atτ,ϕ(τ))),其中 ϕ : R → R w \phi : \mathbb{R} \rightarrow \mathbb{R}^w ϕ:RRw是一个正弦位置编码函数 [51], W 1 ∈ R w × d W_1 \in \mathbb{R}^{w \times d} W1Rw×d W 2 ∈ R w × 2 w W_2 \in \mathbb{R}^{w \times 2w} W2Rw×2w W 3 ∈ R w × w W_3 \in \mathbb{R}^{w \times w} W3Rw×w d d d是动作维度, w w w是动作专家的嵌入维度(或宽度)。

注意力掩码。 π 0 \pi_0 π0使用分块因果注意力掩码,包含3个块: [ I t 1 , . . . , I t n , ℓ t ] [\text{I}^1_{t}, ..., \text{I}^n_{t}, ℓ_t] [It1,...,Itn,t] [ q t ] [\text{q}_t] [qt] [ a t τ , . . . , a t + H − 1 τ ] [\text{a}^\tau_{t}, ..., \text{a}^\tau_{t+H-1}] [atτ,...,at+H1τ]。每个块内部有完全的双向注意力,而各块中的标记不能注意到未来块中的标记。第一个块包括PaliGemma VLM预训练期间的输入模式,这些模式被阻止注意到包含新输入的未来块,以最小化说预训练的分布偏移。机器人状态 q t \text{q}_t qt是其自己的块,因为它不会在每个流匹配集成步骤中改变;阻止它注意到最终块允许在采样期间缓存其对应的键和值。最终块对应于噪声动作 A t τ \text{A}^{\tau}_{t} Atτ,它可以注意到完整的输入序列。

动作专家。 π 0 \pi_0 π0被实现为一个单一的变换器,具有两组权重(也称为专家 [45]),其中每个标记被路由到其中一个专家;权重只通过变换器的自注意层相互作用。图像和语言提示 [ I t 1 , . . . , I t n , ℓ t ] [\text{I}^1_{t}, ..., \text{I}^n_{t}, ℓ_t] [It1,...,Itn,t]被路由到更大的VLM主干,我们从PaliGemma初始化。在VLM预训练期间未见过的输入 [ q t , A t τ ] [\text{q}_t, \text{A}^{\tau}_{t}] [qt,Atτ]被路由到动作专家。PaliGemma基于Gemma 2B [49]语言模型,使用多查询注意力 [44] 和配置{width=2048, depth=18, mlp dim=16,384, num heads=18, num kv heads=1, head dim=256}。由于专家只在自注意层中互动,宽度和mlp维度不必在专家之间匹配。为了加速推理(需要对动作专家进行多次前向传递),我们将动作专家缩小到{width=1024, mlp dim=4096},导致参数总数约为300M。

采样流匹配时间步。 原始的流匹配论文 [28, 32] 从均匀分布中采样流匹配时间步: τ ∼ U ( 0 , 1 ) \tau \sim \mathcal{U}(0, 1) τU(0,1)。Esser等人 [14] 提出改为从一个强调中间时间步的对数正态分布中采样;作者认为在高时间步(低噪声水平)时,模型只需学习恒等函数,在低时间步(高噪声水平)时,模型只需学习数据分布的均值。然而,我们假设动作预测任务与高分辨率图像合成略有不同——虽然预测以文本标签为条件的平均图像相对容易,但预测以机器人观察为条件的平均动作(即学习 E [ A t ∣ o t ] \mathbb{E}[\text{A}_t|\text{o}_t] E[Atot])是一个更困难的问题;这是因为观察 o t o_t ot非常有信息量,它应该比文本标签更强地约束可能动作的分布。因此,我们设计了一个强调低时间步(高噪声水平)的时间步采样分布;此外,一旦给定阈值 s s s以上的时间步不再被采样,因为只要集成步长 δ \delta δ大于 1 − s 1-s 1s,它们就不再需要。分布由 p ( τ ) = Beta ( s − τ s ; 1.5 , 1 ) p(\tau) = \text{Beta}\left(\frac{s-\tau}{s}; 1.5, 1\right) p(τ)=Beta(ssτ;1.5,1)给出,并在图14中可视化。我们的实验中使用 s = 0.999 s = 0.999 s=0.999,这允许 δ > 1 1000 \delta > \frac{1}{1000} δ>10001,或多达1,000个集成步骤。


在这里插入图片描述Fig. 14: 流匹配时间步采样分布。我们从一个强调低时间步的移位Beta分布中采样 τ \tau τ,这些时间步对应于更噪声的动作,并且在一个截止值 s s s以上根本不采样时间步。我们的实验中使用 s = 0.999 s = 0.999 s=0.999


C. 非VLM基线架构

我们的基线架构 π 0 \pi_0 π0-small不基于VLM骨架。因此,我们使用它来评估VLM预训练的好处。我们设计它能够足够表达以适应我们的大型数据集,同时仍然在从头开始训练时提供良好的性能。这个模型大约有470M参数,与我们的主模型有以下不同:(1) 我们使用DistilBERT [42]编码语言命令 ℓ t \ell_t t的语言标记,因为这个模型不使用语言模型骨架;(2) 动作专家跨注意力到观察编码器的输出,类似于传统的编码器-解码器变换器 [51],而不是我们主模型中更像解码器的专家混合 [45];(3) 图像使用一个较小的预训练ViT编码器编码(具体来说是Steiner等人 [47] 的R26-S-32 ResNet-ViT混合体);(4) ViT图像编码器不共享权重;(5) 编码观察的变换器骨架(在ViT图像编码器之后)没有在互联网数据上预训练;(6) 动作专家使用DiT架构 [36] 而不是Gemma架构,因此使用AdaLN-Zero层整合流匹配时间步 τ \tau τ。除此之外,模型在很大程度上相似:两者都使用预训练的ViT图像编码器,都使用单独的权重为观察编码器和动作专家,都接受相同的观察格式,并且都执行10步流匹配来预测动作块。

D. 推理

回想一下,我们的模型接收观察 o t = [ I t 1 , . . . , I t n , ℓ t , q t ] \text{o}_t = [\text{I}^1_{t}, ..., \text{I}^n_{t}, ℓ_t, \text{q}_t] ot=[It1,...,Itn,t,qt]和噪声动作 A t τ \text{A}^{\tau}_t Atτ,输出需要整合以获得下一个流匹配步骤的向量场 v t τ \text{v}^{\tau}_t vtτ。每次我们预测一个新的动作块 A t \text{A}_t At时,我们必须对每幅图像 I t 1 , . . . , I t n \text{I}^1_{t}, ..., \text{I}^n_{t} It1,...,Itn编码,对 o t ot ot对应的标记进行一次前向传递,然后运行10步流匹配,其中每步都需要对 A t τ \text{A}^{\tau}_t Atτ对应的标记进行一次前向传递( o t ot ot对应的键和值被缓存)。表I总结了这个操作的计算时间,使用3个相机图像。这些操作是在NVIDIA GeForce RTX 4090消费级GPU上进行计时的。对于移动机器人,推理是通过Wi-Fi连接在外部进行的,增加了少量的网络延迟。进一步的优化、量化和其他改进可能进一步减少推理时间。

由于模型一次生成整个H步的动作块,我们可以在需要再次进行推理之前执行多达H个动作。然而,我们可能会更频繁地进行推理,并且可以使用各种聚合策略将不同推理调用的动作结合起来。我们早期尝试了时间集成 [57] 并发现它损害了策略表现,因此我们选择不聚合动作而是开环执行动作块。对于20Hz的UR5e和Franka机器人,我们每0.8秒(执行16个动作后)运行一次推理;对于其他以50Hz运行的机器人,我们每0.5秒(执行25个动作后)运行一次推理。


在这里插入图片描述表 I: 我们模型在NVIDIA GeForce RTX 4090 GPU上的推理时间。


E. 评估细节

对每项任务,我们设计了一套评分标准来衡量任务的进展,并用于我们的定量结果。以下是每个任务的评分标准描述:

A. 基础模型评估

衬衫折叠: 衬衫折叠被记录为成功或失败。每次评估开始时,我们会把衬衫平铺在桌子上。成功定义为已折叠好衬衫的袖子并沿衬衫长度折叠一半。我们的评估包括4件小号T恤和1件中号T恤。每件物品进行2次评估,每次最多15000步或大约5分钟。
简单清理: 此任务的得分为7分,桌上有7个不同的物体,每放对一个物体得1分。
困难清理: 此任务的得分为12分,桌上有12个不同的物体,每放对一个物体得1分。这个任务版本包括特别具有挑战性的设置,比如筷子放在垃圾上面。
杂货打包: 此任务得分为7分。每放对一个杂货物品得1分。
烤面包取出:此任务得分为4分。每正确取出一片烤面包并放在盘子上得1分。

B. 遵循语言指令评估。

评估政策是否成功地重新定位每个物体并是否遵循指令。
清理: 机器人必须按命令拾起正确的物体,并将其放入正确的容器。机器人总共接收到12个物体和大约30条指令。
摆桌: 机器人需要根据语言指令摆放所有盘子、餐具和餐巾,并进行调整。机器人总共接收到7个物体和大约20条指令。
杂货打包: 机器人需要拾起正确的物品(包括咖啡豆、大麦、棉花糖、猫粮、意大利面、海带、杏仁),并将它们打包进纸袋。机器人总共接收到7个物品和大约14条指令。

C. 学习新的灵巧任务

堆叠碗: 此任务得分为3分。每对两个碗堆叠在更大的碗中得1分,最终产品的整洁度得1分。
毛巾折叠: 此任务得分为3分。第一次半折得1分,第二次半折得1分,最终产品的整洁度得1分。
微波炉中的保鲜盒:此任务得分为4分。开微波炉得1分,拿起保鲜盒得1分,将保鲜盒放入微波炉得1分,关微波炉得1分。
纸巾更换: 此任务得分为4分。拿旧卷得1分,取下旧卷得1分。然后拿新的纸巾卷得1分,将其放置在分配器上得最后1分。
抽屉中的物品: 此任务得分为5分。打开抽屉得1分,每放一个物品入抽屉得1分(共3个),关闭抽屉得1分。

D. 掌握复杂的多阶段任务

衣物折叠: 此任务得分为4分。我们的评估包括五件物品,三件M、L和XL尺寸的衬衫和两条28和36尺寸的短裤。每件物品进行两次试验,未评估的物品随机皱在洗衣篮中(而之前评估的物品开始时叠在一堆)。从篮子中拿出一件物品并放在桌子上得1分。展平衬衫或短裤得1分。折叠衬衫或短裤得1分。将物品放在桌角(如果是第一件评估的物品)或叠放在已有的衣物堆上得最后1分。每次评估最多15000步或大约5分钟。
移动洗衣: 此评估遵循与洗衣折叠相同的协议。三件衬衫尺寸为M、M和XL,短裤尺寸为32和31 W。
桌面清理: 此任务得分为12分,桌上有12个不同的物体,每放对一个物物得1分。这个任务版本包括特别具有挑战性的设置,比如筷子放在垃圾上面。
盒子组装: 此任务得分为5分。成功拿起盒子开始任务得1分。折叠盒子一半以便可以关闭盖子得1分。关闭右侧盖子得1分。关闭左侧盖子得1分。最终产品整齐地居中得最后1分。
装鸡蛋: 此任务得分为7分。每将一个鸡蛋放在纸盒正确的槽中得1分,关闭盖子得1分。
打包食物: 此任务得分为5分。拿起食物盘得1分,每将3个食物项目放入外带盒中得1分,关闭外带盒得1分。
干衣机卸载: 此任务涉及机器人带着洗衣篮接近干衣机并将衣物卸载到篮子中。我们为这个评估得分为五分,正确接近干衣机得1分。将洗衣篮放在凳子上得1分。打开干衣机得1分。将所有衣物放入篮子得1分。关闭干衣机得最后1分。我们用3件衬衫和2条短裤进行评估,这些衣物在干衣机内随机摆放。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/884651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【含开通报告+文档+源码】基于SpringBoot的新能源充电桩管理系统的设计与实现

开题报告 近年来,随着全球对环境问题的关注和新能源汽车的普及,新能源充电桩的需求显著增加[1]。为了满足大量新能源车辆的充电需求,各地纷纷建设新能源充电桩站点。然而,随着充电桩数量的增加,管理和运营充电桩也面临…

克服奖励欺骗:Meta发布全新后训练方式CGPO,编程水平直升5%,打破RLHF瓶颈

克服奖励欺骗:Meta发布全新后训练方式CGPO,编程水平直升5%,打破RLHF瓶颈 在人工智能领域,奖励欺骗成为了多任务学习中的一大难题,严重影响了大型语言模型(LLMs)的表现。为了有效应对这一挑战&a…

Python小游戏19——滑雪小游戏

运行效果 python代码 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕尺寸 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("滑雪小游戏") # 定义颜色 WH…

goframe开发一个企业网站 前端界面 拆分界面7

将页面拆出几个公用部分 在resource/template/front创建meta.html header.html footer.html meta.html <head><meta charset"utf-8"><meta content"widthdevice-width, initial-scale1.0" name"viewport"><title>{{.…

读书笔记#深入理解Java虚拟机(第三版)# Java内存模型与线程

深入理解Java虚拟机&#xff08;第三版&#xff09;# 高效并发 chap12 Java内存模型与线程 概述 在许多场景下&#xff0c;让计算机同时去做几件事情&#xff0c;不仅是因为计算机的运算能力强大了&#xff0c;还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统的…

鸿蒙笔记--自定义点击事件

这一节主要了解一下鸿蒙中自定义点击事件&#xff0c;主要是实现在父组件点击子组件后获取子组件的返回参数。 栗子&#xff1a; import { MyCustomButton } from ./MyCustomButton;Entry Component struct Index {State message: string Hello World;build() {Column(){MyC…

第三十一章 Vue之路由(VueRouter)

目录 一、引言 1.1. 路由介绍 二、VueRouter 三、VueRouter的使用 3.1. 使用步骤&#xff08;52&#xff09; 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. Friend.vue 3.2.4. My.vue 3.2.5. Find.vue 一、引言 1.1. 路由介绍 Vue中路由就是路径和组件的映…

软件测试学习笔记丨SeleniumPO模式

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ 说明&#xff1a;本篇博客基于sel…

【学习enable_if模板, 学习unqiue_str 删除操作】

enable_if 是 C 标准库中的一个模板结构体&#xff0c;它用于条件编译和 SFINAE&#xff08;Substitution Failure Is Not An Error&#xff09;。enable_if 的主要作用是通过条件编译来控制模板的实例化&#xff0c;从而实现条件编译和 SFINAE。 1. enable_if 的基本用法如下…

【自然资源】关于多测合一,你了解吗?

关于多测合一&#xff0c;你了解吗&#xff1f; “多测合一” 是指&#xff1a;按照“统一标准、多测合并、成果共享”要求和“应合尽合、能合则合”原则&#xff0c;对同一工程建设项目各个阶段的多项测绘服务事项进行整合优化的测绘服务和管理模式。 是将工程建设项目竣工验…

江协科技STM32学习- P28 USART串口数据包

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

HarmonyOS鸿蒙开发入门,常用ArkUI组件学习(二)

书接上回&#xff0c;让我们继续来学习ArkUI的其他组件 目录&#xff0c;可以点击跳转到想要了解的组件详细内容 组件四&#xff1a;Button组件五&#xff1a;Slider组件六&#xff1a; Column & Row组件七&#xff1a;循环控制组件八&#xff1a; List 组件四&#xff1a;…

SqlSugar查询达梦数据库遇到的异常情况

使用SqlSugar连接达梦数据库&#xff0c;联查两张表的数据遇到的奇怪问题&#xff1a;同一套代码&#xff0c;在一个环境中可以正常查询并返回数据&#xff0c;但在另一环境中运行则查不到数据。在个人电脑上测试时也能正确运行&#xff0c;搞不清楚是怎么回事&#xff0c;特此…

ip地址分为几大类-IP和子网掩码对照表

一、IP地址的基本概念与分类 IP地址是用于在网络中标识每个设备的逻辑地址。互联网协议将IP地址分为A、B、C、D和E五类&#xff0c;其中A、B、C三类最常用&#xff0c;它们主要根据地址的首位位数以及用途进行划分。 A类地址&#xff1a; 范围&#xff1a;0.0.0.0 - 127.255.2…

【AI开源项目】Botpress - 开源智能聊天机器人平台及其部署方案

文章目录 Botpress 概述Botpress 的定位 Botpress 的主要特点1. OpenAI 集成2. 易于使用3. 定制和扩展性4. 多平台支持5. 集成和扩展 API6. 活跃的社区和详尽的文档 部署方案集成集成开发集成部署机器人示例开发工具代理本地开发先决条件从源代码构建 Botpress 如何解决常见问题…

JetPack Compose安卓开发之底部导航Tabbar

效果&#xff0c;页面切换 项目结构 TabBar.kt package com.weimin.strollerapp.components.tabbarimport androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.f…

SpringBoot应用:精品在线试题库的设计与实现

2 相关技术 2.1 Spring Boot框架简介 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Sprin…

乐鑫esp32和esp32s3使用flash download tool V3.9.7工具下载固件的使用说明

使用esp32IDF工具编程后使用vscode内置的烧录工具&#xff08;火的图标按钮&#xff09;烧录是正常的&#xff0c;说明程序没有问题。 如果要使用flash download tool V3.9.7工具下载固件还是有些要注意的事项&#xff1a; 1.三个bin文件分别在&#xff1a; 第一个&#xff1a;…

如何在Linux系统中使用Apache HTTP Server

如何在Linux系统中使用Apache HTTP Server Apache简介 安装Apache 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动Apache服务 验证Apache是否正在运行 访问Apache默认页面 配置Apache虚拟主机 创建虚拟主机配置文件 示例虚拟主机配置 创建网站根目录 准备静态网站内…

HTTP相关返回值异常原因分析,第二部分

今天我们讲讲HTTP相关返回值异常如何解决&#xff08;实例持续更新中&#xff09; 一、4xx状态码 这些状态码表示请求有问题&#xff0c;通常是由于客户端的错误引起的。 1.1 400 Bad Request: 请求格式不正确&#xff0c;服务器无法理解。 状态码400的含义&#xff1a; …