GR00T N1:人形机器人的快与慢
NVIDIA · 2025 · arXiv:2503.14734 · 权重与数据全部开源
如果你从总图篇《当 AI 长出手来》走来,你在结尾的沙盒里勾过一个叫「双系统」的复选框,雷达图上"速度"那一格亮了。这一篇,我们把那个复选框拆开,看里面的两颗脑子怎么咬合。然后是更狠的第二幕:人形机器人最缺的不是钱,是数据——NVIDIA 的回答是,缺就自己造。照例先说好:GR00T、VLM、DiT、VQ-VAE……这些名字你一个都不用记。你只需要盯住一颗红苹果,和你自己的手速。
先来当一回机器人的脑子
桌子上方悬着一只机械手,苹果会一颗颗往下掉。规则只有一条:手不会自己动——我每「想」一次,它才朝苹果挪一步。思考的方式很简单:狂点下面这张图(或那颗按钮)。没什么大不了的吧?点快一点就是了。点「开始掉苹果」,接住三颗。
一颗脑子不够,就长两颗
其实你自己就是这么活的。心理学家卡尼曼把人的认知分成两套:系统二负责慢而深的思考——你心算 17×24 的时候,会走神到差点撞上电线杆;系统一负责快而自动的反应——走路避开坑洼,你从来不用打草稿。想和动,本来就该跑在两个不同的时钟上。
GR00T N1(NVIDIA 的开源人形机器人基座模型,读作 Groot,没错,就是那棵树人)把这个隐喻做成了架构,而且不是嘴上说说——两个模块真的以不同频率运行:
System 2「慢脑」是一个视觉语言模型(VLM,看图 + 读指令的大模型,这里用 NVIDIA 自家的 Eagle-2,13.4 亿参数):看到桌面画面,读到「把红苹果放进篮子」,每秒 10 次输出它对局面的理解。System 1「快手」是一个扩散变换器(Diffusion Transformer,白话:一只靠「去噪」画出动作的手,π0 篇会细讲这套生成术):它不断偷看慢脑的理解笔记,每次一口气产出一小段 16 步的动作(叫动作块),整段只花 63.9 毫秒,动作以 120Hz 送进关节。
关键在「偷看」二字:两颗脑子不是用电线接起来的两个产品,而是一个 22 亿参数的模型——快手通过交叉注意力(就是总图里那个「每个词选择关注谁」的机制)随时读取慢脑的思考,训练时两边一起端到端优化。想和动,从出生起就在学着配合。
数字控的折叠区:双系统的参数表(可跳过)
| 部件 | 本体 | 规模 / 数字 | 备注 |
|---|---|---|---|
| System 2 慢脑 | Eagle-2 VLM(SmolLM2 语言模型 + SigLIP-2 视觉编码器) | 13.4 亿参数 · 10Hz | 图像压成 224×224,每帧 64 个词元 |
| System 1 快手 | Diffusion Transformer(交叉注意力 + 自注意力交替) | 动作块 H=16 · 去噪 4 步 · 63.9ms | 动作 120Hz 闭环执行 |
| 全模型 | GR00T-N1-2B | 共 22 亿参数 | 预训练约 5 万 H100 GPU·时 |
| 跨具身接口 | 每种机器人一套小编码器/解码器(MLP) | — | 单臂、双臂、人形共用同一套主干权重 |
一个好玩的工程细节:快手读的不是慢脑的最后一层输出,而是第 12 层(中间层)的表示——论文发现这样既更快、成功率还更高。想得太"透"的表示,反而不好用来动手。
然而,「慢脑 10Hz + 快手 120Hz」说起来轻巧——慢脑两次思考之间隔着 100 毫秒,这段空窗里世界还在变,快手凭什么不抓瞎?光说不练没有用,下一节你亲手拧。
100 毫秒的空窗,谁来填
想想开车用导航:导航仪几秒钟才说一句「前方右转」,但车从不一顿一顿——因为握方向盘的手在两句话之间一直做着毫秒级的微调。它不需要新指令,它只需要知道当前这段路怎么走。快手的动作块就是这个:慢脑每次给一个方向,快手一次想好接下来 16 步,在空窗里自己走完。
下图还是那颗苹果(灰线是它的位置轨迹),两只手同时追它。拖动滑块,调慢慢脑的思考频率,看两种接法的差别:
先看紫线:这是把慢脑直接接在手上——手每 100 毫秒才动一下,画出一截一截的楼梯。眼熟吗?这正是你在第 1 节狂点按钮时的轨迹。再看橙线:同样只有 10Hz 的思考,快手却用动作块把空窗填成了平滑的曲线,误差只剩零头。现在把频率拖到 1Hz——橙线依然平滑,但你会看到它在苹果拐弯处画出大弧子:它在优雅地追一个过时的苹果。平滑掩盖不了迟钝。
慢脑给方向,快手填缝隙;填缝靠的是一次想好一小段,而不是一步一问。快手每次产出这 16 步,用的是 4 轮「去噪」——从一把随机乱点出发,四步收敛成一段干净的轨迹,全程 63.9 毫秒。这套连续动作生成术叫流匹配(flow matching),它为什么比「把动作切成词表」更适合灵巧的手,π0 那一篇会带你亲手推。
然而。架构画出来只要一支笔,真正的高墙在后面:这双手是要教的。教材从哪来?
比钱还稀缺的东西
语言模型的教材是整个互联网,抬手就能爬。机器人的「互联网」在哪里?不存在。世界上没有一个网站存着几十亿条「关节角随时间变化」的记录。人形机器人数据的标准产法,是一个真人戴上追踪器和动捕手套,像牵线木偶一样牵着机器人做一遍——论文原话:机器人数据随人力线性增长。一小时人工,换一小时数据。NVIDIA 全力开动这条产线,攒下了多少自家人形机器人的遥操作(teleoperation,真人远程牵动机器人)数据?88.4 小时。这就是塔尖的全部家底。
GR00T 团队的回答不是「继续雇人」,而是把训练数据组织成一座三层的数据金字塔——塔尖不够,就把下面两层造出来:
看右边的三张账单:塔尖的真数据一小时就是一小时人工,全世界的公开机器人数据集拼起来也才三千多小时;塔腰的仿真数据,11 个墙钟小时就能造出 6,500 等效小时;塔基的人类视频,互联网上现成躺着两千五百多小时——几乎免费。越往下越便宜、越庞大,问题只有一个:下面两层,压根没有「动作标签」。一段 YouTube 做饭视频里有画面、能配文字,唯独没有「此刻每个关节转了多少度」那一列。而机器人要学的恰恰是那一列。
所以金字塔不是画出来就能用的。接下来两节,是这篇论文真正的独门手艺:怎么让没有动作的视频「长出」动作。先从塔基说起。
塔基:从人类视频里剥出「动作的意思」
回想你看别人骑自行车:你学不到他小腿肌肉发了多大力(那是他的身体参数),但你学得到「过弯要往内倾」(那是动作的意思)。位移的语义,和长什么身体无关。
论文的做法叫潜动作(latent action,白话:动作的意思编码)。训练一个小模型玩「猜中间」:给它看视频的第 t 帧和第 t+16 帧,中间遮住,让它把「这中间发生了什么变化」压缩成一个短短的编码 z;再训练一个解码器,只凭第 t 帧和这个 z,把第 t+16 帧画回来。画得回来,说明 z 里装的恰好就是「发生了什么」——不多也不少。这套压缩编码器术语上叫 VQ-VAE,名字不重要,重要的是它挤出来的 z 有个神奇性质。点下面两个潜动作,看四种完全不同的身体各自怎么演它:
看到了吗:同一个 z₁,在人手上是手腕左移,在夹爪机械臂上是整条臂左移,在人形机器人上是右臂横摆——潜动作把「发生了什么」从「谁的身体」里剥了出来。而且论文特意在所有数据上共用一套 z 的编码本,于是「人类挪手」和「机器人挪臂」第一次说上了同一种语言。2,517 小时的人类视频,就这样全部变成了教材——训练时把它当作一种独立的「具身」(代号 LAPA)混进大锅,用同样的损失函数一起学。
把动作和身体解耦,人类就成了机器人的免费老师。不过塔基教的是见识——什么语义配什么动作。它到底不是机器人自己的手感。塔腰呢?
塔腰:梦境工厂
88 小时真数据,怎么变成 880 小时?NVIDIA 的答案听起来像科幻:让模型做梦。他们拿这 88 小时遥操作视频,微调了一个图生视频模型(就是「给一张图,续写成一段视频」的那类生成模型)。然后奇妙的事情发生了:给它一帧真实发生过的开局画面,配一句从没发生过的新指令,它就能生成一段以假乱真的「平行世界」轨迹——画面里机器人真的照新指令做了。
下面这帧开局是论文图 5 的真实场景:桌上有黄瓜、喷瓶、篮子和一只米色碗。点右边的指令,看同一帧现实增殖出多少条梦境:
注意第四条:生成出来的视频没按指令走(模型手滑抓了喷瓶)——这类残次品不是直接扔掉,而是由一个多模态大模型当裁判逐条审查:没跟上指令的,要么淘汰,要么按「实际发生了什么」重新配字幕再入库。梦不能乱做,做了要对得上账。
账本上的数字:88 小时底料 → 827 小时梦境数据,扩了差不多十倍;代价是生成 1 秒视频要花约 2 分钟 GPU 时间,总共 3,600 块 GPU 跑了一天半。这些梦没有动作标签,怎么办?你在上一节已经拿到答案了——潜动作照样能从梦的帧对里挤出 z;另外再训一个「逆动力学模型」(IDM,白话:看前后两帧、倒推中间动作的小模型),给梦标上伪动作。塔腰的另一半是物理仿真:用自动增殖系统 DexMimicGen,从少量人类种子演示出发,在模拟器里变换、重放、验收,78 万条轨迹——等效 6,500 小时、相当于一个人不吃不睡演示九个月——墙钟只花了 11 小时。
塔尖的每一滴真数据,都被塔腰放大了几十倍。数据不再只是「采」来的,是「造」出来的。金字塔码齐了,双系统也接好了。是骡子是马,该验货了。
验货:这座金字塔值多少分
验货方式很实在:拿一台傅利叶 GR-1 人形机器人(Fourier GR-1,双臂 + 灵巧手),在真实桌面上做四类任务——抓放、开关柜门抽屉、工业件装箱、两台机器人协作传递。对手是同一批任务数据从零训练的扩散策略(Diffusion Policy,此前模仿学习的标杆方法)。关键的一招在于:把喂给两边的示教数据砍到只剩 10%,再看谁还站着。点下面的开关:
全量数据下是 76.8% 对 46.4%,赢得干脆但不惊悚。惊悚的是 10% 那一档:42.6% 对 10.2%,四倍。更狠的读法是横着比——只吃了 10% 数据的 GR00T(42.6%),几乎追平吃了全量数据的对手(46.4%)。金字塔买到的不是分数,是数据效率:预训练里那 8,375 个小时,已经替你交过大部分学费了。你新任务只需要付零头。
那塔腰的梦境数据单独值几分?切到第二个标签页:在 RoboCasa 仿真基准上,往后训练里掺一半梦境数据,30 / 100 / 300 条示教三档平均再涨 4~9 个百分点。还有个耐人寻味的细节:示教极少(30 条)时潜动作标注略胜,数据多起来后 IDM 伪动作反超——倒推动作的小模型也是越吃越准的。
然而分数只是账面。预训练还埋了一个没人点单的彩蛋——这才是全文最好看的一幕。
彩蛋:苹果被放到了左手边
是时候兑现开头那颗红苹果了。评测者使了个坏:后训练数据里所有的抓放全部用右手完成,而他们把红苹果故意摆到左手那一侧、右手根本够不着的地方,指令照旧:「把红苹果放进篮子」。预训练模型从没见过这个摆位。先押注,再看它怎么办:
沙盒:快慢实验台
你已经拧过慢脑的频率。现在三个旋钮全部交给你:慢脑多久看一眼世界、快手一次想多长的动作块、以及世界本身转多快。默认参数正是 GR00T 的配平(10Hz × 16 步)。挑战:找到一组参数,让双系统也失手。能亲手弄坏它,才算真的懂了它为什么是这个形状:
先自己拧,再回来读这段。你大概已经发现了失手配方:动作块拉长 + 世界加速 + 慢脑降频。原因藏在动作块的本性里——块内的 16 步(或 32 步)是一次想好的,块没走完之前,世界再怎么变它也看不见。动作块越长越平滑,也越「活在过去」。GR00T 选 16 步(约 133 毫秒)配 10Hz 慢脑(100 毫秒一眼),两个时间尺度严丝合缝地咬住:块还没过期,新的理解就到了。双系统不是免费午餐,它是两个时钟的婚姻——过日子靠配平。桌面任务它配平了;要是哪天世界快过了这套时钟(被风吹歪的门、滚下桌沿的杯子),这场婚姻就得重新谈——论文自己也把「更长、更动态的任务」列为未竟之业。
凉亭:金字塔之后
学术锚点:这套双系统 + 数据金字塔来自 NVIDIA 2025 年 3 月的《GR00T N1: An Open Foundation Model for Generalist Humanoid Robots》。2B 参数的预训练权重、训练数据和仿真基准全部开源。本文做了不少简化:只讲了桌面短任务(论文自陈的局限——边走边操作的长任务还在路上);流匹配的数学一笔带过(π0 篇细讲);跨具身的编码器细节、辅助检测损失等工程从简。图里的机械手是教学玩具,不是真实策略的输出。
杠精角落:三条最常见的反驳,论文自己怎么接
「仿真数据有仿真味,真机不认账吧?」——成立,这叫仿真-现实鸿沟,论文承认它是合成数据路线的老病。药方是金字塔本身:塔尖的真实数据始终在场,三层混着一锅炖(联合训练),塔腰负责广度,塔尖负责落地。
「梦境数据物理靠谱吗?苹果不会穿模?」——会。论文原话承认现有生成方法「在多样性和遵守物理定律之间仍有挑战」,所以才有 LLM 裁判逐条验收 + 重新配字幕那道工序。这层数据是增益(平均 +4~9 分),不是地基。
「76.8% 也好意思叫强?」——真机评分是分阶段部分给分制(抓对没放进算 0.5),对手是同数据从零训练的最强基线(46.4%);而且别忘了 10% 数据档的四倍差距——这篇论文卖的从来不是绝对分数,是数据效率。
回想你这一路亲手做过的事:你狂点按钮,体会过每秒六七次思考追不上一颗苹果;你拖低慢脑频率,看橙色的快手怎么把 100 毫秒的空窗填成平滑曲线;你点过两个潜动作,看四种身体说出同一个「意思」;你按一帧现实增殖出四条梦境,还看着裁判拦下一条次品;你砍掉 90% 的示教数据,看金字塔怎么替新任务交学费;你押过那次凌空换手,也许还押错了;最后你亲手把动作块拉到 32 步,看着一只活在过去的手跟丢了苹果。
互联网喂大了语言模型,但世界上不存在「动作的互联网」。GR00T 的回答是:那就自己造——塔基借人类的身体,塔腰借仿真和梦境,塔尖才动用真正的机器人。这个思路正在溢出机器人圈:所有「真数据贵如金」的领域——医疗、驾驶、科学实验——都在走向同一个配方:少量真实、大量合成、外加一个会做梦的世界模型。下一站,去 π0 篇看看快手体内那套「流匹配」到底怎么让动作长出来;或者回总图,看这颗棋子落在整张地图的哪一格。