SONIC:没人教过它走路
Luo, Yuan, Wang, Li, Castañeda et al. · NVIDIA GEAR · 2025 · arXiv:2511.07820 · 代码与 288 小时动捕数据开源
如果你从 GR00T 篇走来,你见过慢脑和快手怎么指挥一双臂。但把镜头拉远一点——那双臂长在一副会摔倒的身体上。走路、蹲下、被撞一下不倒,这些你五岁就会、却一辈子说不清自己是怎么会的事,恰恰是人形机器人的第一道坎。NVIDIA GEAR 实验室的回答蛮横得可爱:别教了。把 GPT 的老配方——大模型、大数据、大算力——原封不动砸进身体。照例先说好:PPO、FSQ、MPJPE、SMPL……这些名字你一个都不用记。你只需要盯住一台叫 G1 的小机器人,和结尾那颗可乐罐。
先来当一回驯兽师
教机器人走路的经典做法,是当驯兽师:你没法拆开它的脑子往里塞知识,只能立规矩——做对了给分,做错了扣分,让它自己在仿真里试出高分动作。这套「给分规则」行话叫奖励函数(reward function,白话:机器人的 KPI)。听起来不难吧?下面是一台仿真里的 G1,四条最常用的规矩摆在桌上。勾选你觉得能教会它走路的组合,点「开练」。
先接一个反驳:不是有人用「判别器」代替 KPI 吗?
有。AMP、ASE 这类对抗式模仿方法(GAN 的思路:训练一个判别器猜「这段动作是真人录的还是机器人编的」,骗过它就得分),确实免掉了手写 KPI。但论文引用的多项研究发现:动作库一旦变大变杂,判别器的任务本身变得太难,反馈越来越糊,最后模式崩塌——机器人只学会动作库里最平庸的几招。对抗信号随数据多样性衰减,这条路同样 scale 不动。伏笔:下一节的方法恰好相反——数据越多越杂,信号反而越足。
别写考卷,给它一个影子
换个教法。不定义「什么是好」,直接给它一段真人的动作录像——动作捕捉(motion capture,白话:给真人贴满反光点,把骨架动画逐帧录下来)——然后命令只剩一条:跟上这个影子,每一帧都跟上。这个任务叫运动跟踪(motion tracking)。它和考卷式 KPI 的差别,全在学习信号的密度上。拖动时间轴,看两种教法一路上各自攒下多少条「学习信号」:
拖到头,账已经悬殊得不像同一门生意:考卷式攒了 0 条信号——还没走到终点,一分都没发;影子式已经攒了两千多条——每秒 50 帧,每帧 14 个部位(头、手腕、脚踝……),每个部位都有一支红色小线段在说「你偏了这么多,往这边修」。KPI 要人想破头去写,影子自带每一帧的标准答案。更妙的是教材现成:动捕是电影和游戏行业攒了几十年的家底,走跑跳舞、打斗、搬箱子、醉步全有。SONIC 团队搞来 700 小时动捕,把人的骨架逐帧换算到 G1 的 29 个关节上(这一步叫重定向),筛掉机器人做不到的动作(爬楼梯、盘腿坐),剩下 611 小时——一亿帧,每秒 50 帧的标准答案,33 个大类、8447 个动作小类。
然而「追影子」这个任务并不新,前人做过一票(论文老实列了七八家)。为什么以前没起飞?因为以前从没有人把它当 GPT 练——数据几小时、模型几层、GPU 几块。SONIC 的赌注就一句话:这个任务的信号密度,配得上一次真正的「做大」。
把 Scaling Law 砸进身体
三个旋钮一起拧到底:模型从 120 万参数加到 4200 万;数据从 400 万帧加到 1 亿帧;算力从 16 块 GPU 加到 128 块,共 21000 GPU·时——一块卡不吃不睡要跑两年半。考题也够狠:考卷全是训练里从没出现过的动作种类(182 个全新小类,比如没学过的舞种)。先押注,再看结果:模型加大 35 倍,这些「没见过的动作」的跟踪成功率会怎么变?
数字控的折叠区:三条轴的明细 + 和同行 tracker 的对账
| 轴 | 档位 | 结果(没见过的动作) |
|---|---|---|
| 模型 | 120 万 → 1600 万 → 4200 万参数 | 成功率 98.0% → 99.6%,偏差 27.7 → 23.8 毫米 |
| 数据 | 400 万 / 1000 万 / 2200 万 / 1 亿帧 | 持续上升,1 亿帧仍未饱和 |
| 算力 | 16 / 32 / 128 块 GPU(约 2 千 / 9 千 / 2.1 万 GPU·时) | 同样迭代数下,GPU 越多批次越大,收敛得越高 |
横向对账(同一物理引擎、同一判摔标准):SONIC 在三套考卷上成功率 98.7% / 99.6% / 97.0%,同期最强的 BeyondMimic 是 81.6% / 85.8% / 73.4%,Any2Track 只有 31.1%。跟踪偏差 23.2 毫米,比 BeyondMimic 的 39.1 毫米低 41%。第三套考卷 PHUMA 最狠——那是别人家用完全不同管线做的 6.8 万段动作,SONIC 照样 97.0%。(论文自己声明:各家训练数据不同,这更像「跨数据集泛化」的证据,不是严格对照实验。)判摔标准:躯干或手脚高度偏离参考超过 0.25 米、或朝向偏离超过 1 弧度,即记失败。
然而,「会模仿一亿帧录像」听着还是像才艺表演。真本事得踢馆才见分晓——就说走路这个项目,行业里有的是练了专项十年功的冠军。
通才踢馆
对手叫 OpenHomie:专为人形机器人走路设计的控制器,上半身听指挥、下半身专精速度跟踪,是这个单项上的行业强手。规则公平:同一台 G1、同一个物理引擎,给两边下同样的速度指令,看谁跟得上、谁先摔。拖动速度指令,从散步一路拖到冲刺:
1.5 m/s 之前平分秋色。1.5 一过,专项冠军的存活率直接跳水到 20% 以下;SONIC 一路稳到 4 m/s 附近——这已经是你在小区里狂追公交的速度。总账:存活率 98.5% 对 43.0%。为什么练「所有动作」的通才,反而在专项上赢了专才?因为专才的天花板是它的 KPI(你在第 1 节亲手领教过 KPI 的表达力),而通才的天花板是数据的多样性——一亿帧里藏着几千种「快要失去平衡时怎么办」。论文还补了一刀:OpenHomie 的算力加到 8 块 GPU 就再也涨不动了,SONIC 还在涨。多样性喂通才,比专精喂专才长得快。这句话你在语言模型那边听过一遍,现在身体也验证了。
真实世界也验了货:123 段动作上真机,成功率 99.2%,仿真里是 100%;偏差 25.7 毫米对仿真 22.3 毫米——最大的鸿沟在脚上(53.7 对 29.0 毫米),真实地面的摩擦从来不讲道理。然而说到底,tracker 只是个演员:给影子才会动。演出得有剧本——真上了街,谁来实时写影子?
编剧:把中间帧当填空题做
行业的传统答案是动画库:预存几段走路、几段出拳,指令来了挑一段播放。毛病你在游戏里见过——两段动画切换的瞬间,角色僵住、跳帧、脚底打滑。SONIC 的编剧(论文叫它运动规划器)不查库存,它做填空题:把「现在的姿势」和「大约一两秒后要到达的姿势」钉在句子两头,中间的帧全部蒙住,让一个生成模型一轮一轮把空填上——和 BERT 做完形填空是同一门手艺,只不过词换成了姿势。选一个目标姿势,点「生成」,看它怎么填:
注意填空的顺序——不是从左到右,是先落最有把握的空,再逐轮啃难的,四轮收敛(每轮定稿多少个,按余弦节奏排定)。每段填空的长度 0.8 到 2.4 秒,由模型自己定;在笔记本上算一次不到 5 毫秒,在机器人肚子里的 Jetson 芯片上 12 毫秒;最快每 100 毫秒重写一次剧本——你手柄一推,下一段立刻改写。最妙的是账单:导航、拳击、蹲走、匍匐,加上醉步、伤腿、潜行这些走路风格,25 种技能每种只喂一段示范 clip,全部在训练结束之后才指定,一次都没重训。因为编剧真正会的是那门通用手艺——任何两个姿势之间的「接上」。技能,只是给填空题换个结尾。
然而剧本的来源远不止手柄:还有 VR 头盔、网络另一头的真人视频、会把音乐写成舞蹈的生成模型。每种来源的数据格式都不一样——难道每种都往策略里拉一根专线?
合龙:给身体发明一门世界语
SONIC 的解法是在身体里立一道关卡:不管动作指令从哪来,一律先翻译成一种体内通用语——一个 64 维的离散编码,论文叫通用 token。三种来源各配一个翻译官(编码器):机器人动作一个、真人骨架(视频/VR 全身)一个、「上半身三个点 + 下半身机器人动作」的混合遥操一个。翻译完,控制器只需要听得懂 token 这一种话。点下面三个输入源,看同一个「爬行」动作从三条路走进来,各自被翻译成什么:
看中间的 token 格子:三个来源翻出来的编码几乎一模一样——同一个动作,不管谁说的,进到体内都是同一句话。这不是碰巧,是训练时拿三条损失硬摁出来的:三个翻译官对同一动作的输出必须彼此靠拢(对齐损失)、从人的动作翻译过去再翻译回来必须还是原话(循环损失)、还有一条重建损失顺手把「人的骨架 → 机器人骨架」的换算学掉了——重定向不再是预处理,是翻译的一部分。点「拔掉插头」你已经看到了:没有这三条损失,三个翻译官各说各话,编码差距瞬间拉大 8 倍(0.57 → 4.23),从人类视频进来的动作直接没法看。而有它们在,用真人骨架控制和用机器人原生指令控制,精度只差 0.6 毫米。
现在退后一步看全景——这是组装时刻:§2 的追影子给了它一身功夫,§3 的大火把功夫炼到 99.6%,§5 的编剧实时写剧本,本节的三个翻译官把所有入口汇进同一个 token。一个 4200 万参数的策略,一套 token 接口,手柄、视频、VR、文字、音乐(文字和音乐先由一个叫 GEM 的生成模型写成人体动作,再走视频那条路进来)全部通吃。但这扇 token 之门真正的野心,是给一位你认识的客人留的——会说 token 的不止人类。
一颗可乐罐的旅程
GR00T 篇的主角回来打工了:GR00T N1.5,那个看画面、听指令的 VLA 大模型,如今接上了 SONIC 的 token 接口。它不再输出手臂关节角,而是每步吐出 64 维 token(交给 SONIC 的解码器变成全身动作)加 14 维手指。为什么要绕 token 这一道,而不是让 VLA 直接输出人体姿态?先押注:教 VLA 干「捡起可乐罐、走到垃圾桶、踩踏板开盖、扔进去」这种长活儿,两种输出方式谁赢?赢多少?
沙盒:遥控一台 G1
整套系统现在都归你:速度、方向、姿态高度,全在你手上,规划器和 tracker 在幕后接活。三个挑战:① 把速度指令拉满到 6 m/s,看实际速度停在哪;② 全速时猛点「急转身」,看虚线的指令怎么被弹簧模型揉成实线的动作;③ 点「推它一把」——站着推、跑着推、趴着推,各试一次。
三个挑战的答案,对应它不摔的三层保险。指令拉到 6,实际速度停在 4 附近——6 只是指令的上限,真正的上限是 tracker 的功夫,多出来的部分被安静地吃掉了。急转身时,一个「临界阻尼弹簧」模型把 +6 到 −6 的悬崖指令揉成一条圆滑的曲线——乱来的命令进不了身体。至于推它:站着推,它踉跄两步站回来;趴着推,纹丝不动(重心低是物理外挂);全速跑的时候推,它有时真的会摔——然后自己爬起来,因为「摔倒后爬起」这个动作,也在那一亿帧里,跟人学过。
凉亭:模仿的副产品
学术锚点:本文来自 NVIDIA GEAR 实验室 2025 年 11 月的《SONIC: Supersizing Motion Tracking for Natural Humanoid Whole-Body Control》(arXiv:2511.07820)。部署与训练代码已开源(GR00T-WholeBodyControl),288 小时动捕数据以 BONES-SEED 数据集公开(14.2 万段、522 名演员)。本文做了不少简化:PPO 训练细节、不对称演员-评论家、域随机化、按失败率自适应采样这些工艺没有展开;文字与音乐控制背后的 GEM 生成模型一笔带过;所有图里的小人都是教学玩具,不是真实策略的输出;§4 的对决曲线按论文图 2 描摹,非逐点复刻。
杠精角落:四条最硬的反驳,论文自己怎么接
「和 BeyondMimic 们的对比不公平吧?训练数据都不一样。」——论文自己先招了:各家源数据和重定向管线不同,这组数字应读作「跨数据集泛化 + 规模效应」的证据,不是严格对照实验。所以他们又补了 PHUMA 这套完全外部的考卷(97.0%)。
「一亿帧也只是模仿。没见过的物理情境呢?」——成立。论文承认极端动态、超出训练分布的情境下 tracker 仍会失去平衡;域随机化和弹簧滤波是缓冲,不是保票。
「安全和能耗呢?」——论文列为未竟之业:长期部署的安全性与能效都没有正式处理。这是一篇「能力先行」的论文,工程红线留给了后来者。
「脚上 53.7 毫米的真机误差,不影响用吗?」——影响,这正是 sim-to-real 最大的裂缝:真实地面的接触动力学最难仿真。上半身只差 0.4 毫米,说明裂缝集中在「和世界接触」的地方——这也是全行业的下一道坎。
回想你这一路亲手做过的事:你当过驯兽师,眼看自己写的每一条 KPI 被钻成空子,换个任务全部作废;你拖过时间轴,数过「考卷 0 条、影子两千条」的信号账;你押过 scaling 的注,看一千个点里的红点从 20 个熄到 4 个;你把速度拖过 1.5 m/s,看专项冠军跳水、通才稳到 4;你点过填空题,看中间帧按把握大小逐轮落定;你拔过一致性损失的插头,看三个翻译官瞬间各说各话;你押过 token 对姿态的赌局,见过 60% 与 0% 之间那道次元墙;最后你亲手推倒过它,看它自己爬起来。
把这些串成一句话,就是这篇论文对整个领域说的话:智能不必被逐条定义,它可以被大规模地模仿出来——只要信号足够密(每帧都有答案)、教材足够多(人类攒了几十年的动作)、锅足够大(128 块 GPU)。语言模型走过的路,身体正在重走一遍:先用海量人类数据练一个什么都会一点的底座,再让高层的脑子(VLA)用一门干净的小语种指挥它。下一站:回 GR00T 篇,看那颗慢脑怎么长在这副身体上;回 π0 篇,看「手上功夫」那条平行线;或者回总图《当 AI 长出手来》,看这颗棋子落在整张地图的哪一格。