在这里插入图片描述

写在最前面:这篇不吹参数,只拆配方。

启元把机器人的能力叫“技能(Skill)”,技能能装、能卸、能由社区发布,这件事成立的前提只有一个——动作可以由模型生成,而不是由工程师一行行写死。要理解这条路走到哪一步了,绕不开 Physical Intelligence 的 π0。它不是我见过参数最大的 VLA,但它是我见过配方最完整的那个:数据怎么攒、动作怎么表示、预训练和后训练怎么分工,全都写在论文里,代码也真的开源了。

论文速览

项目内容
标题π0: A Vision-Language-Action Flow Model for General Robot Control
作者Kevin Black、Noah Brown、Danny Driess、Chelsea Finn、Karol Hausman、Sergey Levine 等 23 人
机构Physical Intelligence(含 Stanford、UC Berkeley 背景作者)
发表arXiv:2410.24164,v1 于 2024-10-31,v4 于 2026-01-08;RSS 2025 收录
开源Physical-Intelligence/openpi,Apache-2.0,含 π0 / π0-FAST / π0.5 权重与微调脚本
一句话用 flow matching 在 VLM 之上生成 50 步动作块,最高 50 Hz 输出,跨 7 种机器人本体训练

摘要正文、23 位作者、Comments 一栏注明 Published in RSS 2025。判断一篇论文值不值得精读,先看两件事:有没有进正式会议、有没有可运行的开源实现。

一、先把问题摆正:机器人学习缺的不是模型,是配方

过去几年,机器人模仿学习的标准套路是“一个任务,一个策略”:要它叠衬衫,采 200 条叠衬衫的示范,训一个小模型;要它清桌子,再采一遍、再训一个。这条路在实验室好用,在家庭场景立刻失效——家里的活是长尾的,你不可能为“把袜子从沙发缝里掏出来”单独训一个模型。

π0 要回答的是另一个问题:能不能训一个“通用策略”(generalist policy),让它像大语言模型那样,先在海量杂乱数据里学会世界怎么运转,再靠少量高质量数据适配具体任务?

论文把障碍拆得很清楚,就三条:

  1. 数据。语言模型有整个互联网,机器人只有自己采的轨迹。没人有几十万小时的机械臂数据。
  2. 泛化。换个杯子、换张桌布、换间屋子的光照,模型就崩。
  3. 鲁棒。叠衣服这种任务,中途布料的形状每次都不一样,策略必须会“从错误里爬回来”。

π0 的答案不是单一技巧,而是一套组合拳:VLM 提供语义常识 + flow matching 提供高频连续动作 + 跨本体数据提供多样性 + 预训练/后训练分离提供“广度”与“熟练度”。下面逐个拆。

1.1 为什么拿 π0 当参照,而不是 RT-2 或 GR00T

机器人基础模型这几年出了不少名字,选谁做参照,决定了你能从文章里拿走什么。三者的差别不在参数量,在动作怎么产生:

模型时间动作表示控制频率关键局限
RT-22023把动作离散成文本 token 自回归生成约 3–5 Hz动作被"语言化",精度与频率双输
OpenVLA2024同上,7B 开源实现约 5–10 Hz不支持动作块,灵巧任务吃亏
π02024flow matching 连续动作块(50 步)最高 50 Hz算力门槛高,端侧放不下
GR00T N12025双系统:VLM 做慢思考 + 扩散动作头中高频人形数据依赖仿真合成

把它们排在一起,规律很清楚:行业正在从“把动作当语言”转向“把动作当轨迹”。 语言是离散的、一次一个 token;轨迹是连续的、一次一整段。前者天生适合文本,后者天生适合控制。

这也是为什么 π0 值得细读——它是这条转向里配方写得最全、代码真的开源、数字给得最细的那一篇。读懂它,再去看其他 VLA,你会发现大部分差异只是在“动作头”和“数据配比”上做文章。

结构上,π0 没有把图像、语言、动作塞进一个同构的塔里,而是做成“一宽一窄”两个专家:宽的那个负责看懂,窄的那个负责算动。这个不对称,是后面所有性能数字的前提。

双专家结构。主干只前向一次并把 KV 缓存下来,动作专家在 10 步去噪里反复读取这份缓存——73 ms 不是“模型小所以快”,而是“只让该算的部分反复算”。

二、架构:VLM 出“常识”,action expert 出“动作”

π0 的骨架是“双专家”:

  • 主干:PaliGemma(3B),本身是 Gemma 2B 语言模型 + SigLIP 视觉编码器,用来继承互联网规模的语义知识。
  • 动作专家(action expert):约 300M 参数,从头初始化,专门负责把“噪声动作”一步步去噪成真实动作。
  • 合计:3.3B。

关键在于两个专家怎么交互。它们不是拼接,也不是串行,而是在同一套 Transformer 里用两套权重,只在自注意力层共享信息——本质是一个只有两个元素的 MoE。注意力掩码被设计成块状因果(block-wise causal),切成三块:

[ 图像 + 语言指令 ]  →  [ 机器人状态 q_t ]  →  [ 带噪动作 A_t^τ ]
        块 1                    块 2                  块 3

块 3 能看见块 1、块 2 和自己;块 1 谁也看不见。这个掩码决定了信息流的方向:动作可以读观测,观测读不到动作。工程上还有一个好处——前两块(视觉+语言+状态)在一轮推理里是固定的,KV 缓存一次,后面 10 步去噪只跑块 3,这也是它能做到 73 ms 的原因。

对比一下两条主流路线就更清楚了:

路线代表动作表示频率短板
自回归离散化OpenVLA(7B)把动作切成 token 一个个预测低(受 token 数限制)无法原生输出动作块,高频任务吃亏
扩散 / 流匹配π0、Diffusion Policy连续向量场,一次出一整块最高 50 Hz训练与推理更复杂,需要 ODE 求解
小模型纯模仿ACT、π0-small直接回归动作块中语义理解弱,换任务就重训

论文里有个细节很能说明问题:OpenVLA 在叠衬衫、清桌子这类任务上“struggles”,作者的归因直指自回归离散化不支持动作块(action chunk)。这不是模型不够大,是表示方式不对。

2.1 双专家的参数账

3B + 300M 这个配比不是随手定的,背后是推理经济学的算术。

一次推理要跑 10 步去噪。如果整个 3.3B 模型每步都完整前向,算力是 10 × 3.3B;而 π0 的做法是:视觉语言那 3B 只前向一次,把 KV 缓存下来,后面 10 步只有 300M 的动作专家在跑。

粗算一下:前者约 33B 等效算力,后者约 3B + 10 × 0.3B = 6B 等效算力。差了五倍多。 这就是 73 ms 能成立的结构性原因,而不是"模型小所以快"。

还有一层设计意图:动作专家的宽度被特意缩到 1024(主干是 2048),MLP 维度 4096(主干 16384)。动作是低维稠密信号,不需要语言模型那么宽的表示。 主干负责"看懂",专家负责"算动",两者宽度不同才是合理的。

对照一下单塔方案(一个模型同时输出语言和动作):它的问题不是性能差,是没法做这种非对称压缩——你不能只缓存一半的层。

三、为什么必须是 flow matching

flow matching 做的事,用一句话说:学一个速度场,把噪声“推”成动作。

训练时,取真实动作块 A t \mathbf{A}_t At​(长度 H=50 的未来动作序列),采一个噪声 ϵ \epsilon ϵ,在两者之间按时间 τ \tau τ 线性插值出“半噪声动作”:

A t τ = τ A t + ( 1 − τ ) ϵ \mathbf{A}_t^{\tau} = \tau \mathbf{A}_t + (1 - \tau)\epsilon Atτ​=τAt​+(1−τ)ϵ

然后让网络 v θ v_\theta vθ​ 去预测“从噪声指向真值”的方向:

u ( A t τ ∣ A t ) = A t − ϵ \mathbf{u}(\mathbf{A}_t^{\tau} \mid \mathbf{A}_t) = \mathbf{A}_t - \epsilon u(Atτ​∣At​)=At​−ϵ

损失就是最朴素的回归:

L = E ∥ v θ ( A t τ , o t ) − ( A t − ϵ ) ∥ 2 L = \mathbb{E}\left\| v_\theta(\mathbf{A}_t^{\tau}, \mathbf{o}_t) - (\mathbf{A}_t - \epsilon) \right\|^2 L=E∥vθ​(Atτ​,ot​)−(At​−ϵ)∥2

推理时反过来:从纯噪声出发,跑 10 步欧拉积分( δ = 0.1 \delta = 0.1 δ=0.1),每步往前走一点:

A t τ + δ = A t τ + δ ⋅ v θ ( A t τ , o t ) \mathbf{A}_t^{\tau+\delta} = \mathbf{A}_t^{\tau} + \delta \cdot v_\theta(\mathbf{A}_t^{\tau}, \mathbf{o}_t) Atτ+δ​=Atτ​+δ⋅vθ​(Atτ​,ot​)

10 步、50 步动作块、50 Hz——这三个数字放一起,就是“每 0.5 秒算一次,一次管 25 帧”的节奏。论文明确说,开环执行动作块、不做时间集成(temporal ensembling),因为实测反而更差:多次推理的平均会把动作磨平,灵巧任务需要的是果断。

这里有个我觉得最值得学的工程判断:时间步 τ \tau τ 的采样分布。图像生成(比如 SD)习惯强调中间时间步,因为语义在这段成形;π0 反过来,用平移 Beta 分布 p ( τ ) = B e t a ( s − τ s ; 1.5 , 1 ) p(\tau) = \mathrm{Beta}\left(\frac{s-\tau}{s}; 1.5, 1\right) p(τ)=Beta(ss−τ​;1.5,1),把采样权重压向低 τ \tau τ(高噪声),并且不采 s = 0.999 s=0.999 s=0.999 以上的点。理由写得很直白:机器人观测对动作分布的约束比文本对图像的约束强得多,真正难学的是高噪声段的“平均方向”,而不是末端的精细修形。

学到的经验是:扩散类方法搬到机器人上,超参不能照抄图像生成的直觉。

把训练和推理并排放在一起看,flow matching 其实只做了一件很朴素的事:定义一个从噪声到真值的直线路径,然后学这条路径上的速度。

训练学速度场,推理沿场走 10 步。需要注意的是 τ 的采样分布被刻意压向高噪声段——机器人的观测对动作分布约束很强,难学的是“大致往哪走”,不是末端修形。

3.1 为什么不直接用 DDPM

Diffusion Policy 已经把扩散模型搬进机器人控制,效果不差。π0 换成 flow matching,动机不是“新”,而是三个很实际的理由:

第一,路径是直的。DDPM 的前向过程是一条弯弯曲曲的马尔可夫链,要采样几百上千步才能走完;flow matching 用线性插值定义路径,最优传输意义下最直,10 步欧拉积分就够。对机器人来说,“10 步”和“50 步”的差别就是“能不能 50 Hz”的差别。

第二,训练目标更稳。它回归的是速度场,量级固定在“真值减噪声”这个尺度上,不随 τ \tau τ 剧烈变化;DDPM 的噪声预测目标在不同时间步方差差异很大,需要额外的噪声调度来平衡。工程上,前者对学习率、批大小的容忍度高得多。

第三,和 VLM 主干更容易共存。flow matching 只在动作块那一块做迭代去噪,视觉语言那一块的 KV 可以一次算好反复用;扩散模型的迭代如果跨模态反复进出,缓存就废了。

这三条加起来,才是“73 ms”这个数字的来源。论文里没有一处是炫技,每个设计都在为一个工程指标让路。

3.2 动作块到底解决什么问题

外行容易把“一次输出 50 步”理解成“预测未来”,其实它解决的是两个更朴素的问题:

  • 推理开销摊薄。每 0.5 秒算一次,中间 25 帧直接执行,网络调用次数下降一个数量级。
  • 动作连贯性。逐步预测时,每帧独立采样会抖;一次性出一段,段内天然平滑,段间靠重叠执行衔接。

代价是开环误差。块内没有反馈,如果第 3 帧被碰了一下,后面 22 帧仍按原计划走。所以真实系统里必须有人在块边界兜底:要么缩短块长,要么在运控层加一层高频闭环(启元 T1 的做法是速度指令 ≥50 Hz 持续发布,中断 1 秒直接脱锁停机)。模型负责“想去哪”,运控负责“别摔倒”,这条分工在论文和真机上是一致的。

动作块这个设计,本质是把“每帧都算”换成“算一次、执行一段”。代价是块内开环,收益是频率和连贯性。

一次推理管 25 帧,段与段重叠衔接。50 Hz 的指令流不等于 50 Hz 的模型推理——模型只需要每 0.5 秒给一个目标块,中间由运控插值补足。

四、跨本体的关键:18 维动作空间

跨机器人训练听起来很宏大,落地时是一堆脏活。π0 的做法是把所有本体的动作统一塞进一个 18 维向量:双臂各 6 自由度 + 2 个夹爪 + 移动底座 + 升降躯干,谁自由度少就补零。

补零这个操作很土,但极其有效——它让“UR5e 单臂”“双臂 Trossen”“移动 ARX”这些完全不同的机器共享同一套输出头,模型不需要为每种本体改结构。代价是大量维度常年是 0,训练效率有浪费。

数据加权也有讲究:每个“任务-机器人”组合按 n 0.43 n^{0.43} n0.43 加权( n n n 是该组合的样本数)。这是个次线性指数——样本多不等于权重大,防止那几个采了几百小时的台面任务把整个梯度带偏。

五、数据:1 万小时是攒出来的,不是买来的

数据来源规模
自有灵巧操作数据9.03 亿时间步(单臂 1.06 亿 + 双臂 7.97 亿)
折合时长约 10,000 小时
自有机器人构型7 种(UR5e、双臂 UR5e、Franka、双臂 Trossen、双臂 ARX/AgileX、移动 Trossen/ARX、移动 Fibocom)
自有任务数68 个
开源数据占比9.1%(OXE、Bridge v2、DROID,控制频率只有 2–10 Hz)

注意最后一行:开源数据只占 9.1%,而且频率低。这意味着“拿开源数据集训一个通用机器人模型”在今天仍然不成立——真正值钱的是自采的高频灵巧数据,这也是为什么做机器人模型的公司必须先有机器人。

对个人机器人厂商来说,这条结论直接决定了策略:本体卖得越多,数据飞轮才转得起来。 启元把 Q1、T1 卖到 19999 元这个价位、并把 SDK 和技能市场同时开出来,本质上是在为“数据从哪来”这个问题提前铺路。

5.1 数据工程里最脏的三件事

论文没细写,但从 68 个任务、7 种构型这个规模能反推出大量工程细节,这些恰是复现时最容易卡住的地方:

时间同步。 一个动作块要同时对齐 3 路相机、关节状态、末端位姿。相机 30 fps、关节 100–500 Hz、动作标签来自遥操作或规划器,三套时钟必须统一到一个时间基准上,否则学出来的策略会“看着上一帧的画面做下一帧的动作”。这一项做不好,模型会表现出一种很典型的症状:动作永远晚半拍。

语言标注。 预训练阶段的标签只有任务名 + 约 2 秒分段,看着很粗,但它是“跨任务共享”的关键——没有语言,68 个任务在模型眼里只是 68 堆互不相干的数字。标注成本也很现实:一段 10 分钟的长任务,切段落是人力活。

失败数据要不要。 直觉是“只留成功轨迹”,π0 的做法相反:大量多样性数据里包含大量不完美甚至失败的片段,模型从中学会“偏了怎么拉回来”。这解释了为什么后训练只需要 5 小时——恢复能力已经在预训练里买过了。

5.2 一万小时是个什么概念

按一个人一天有效采集 8 小时算,1 万小时是 1250 人天,约 3.4 人年,还不含设备折旧、场地、标注。这不是一个团队能“顺手”攒出来的规模,它需要产线式采集:固定的工位、标准化的任务脚本、轮班的操作员。

看清这一点,就能理解为什么国内做具身智能的公司都在强调“量产”——量产不只为了卖钱,也为了让机器人分布到足够多的真实环境里,把数据采集的成本从“雇人采”转移到“用户用”。这条逻辑在手机上验证过一次(用户产生数据、数据改进模型),机器人只是把周期拉长了。

六、训练配方:预训练管“见过世面”,后训练管“手熟”

π0 明确借用了 LLM 的两段式:

  • 预训练:全部数据混着训,目标是广度。语言标签很粗——任务名 + 约 2 秒一段的分段标注。这一阶段不追求单任务高分,只求“什么都见过”。
  • 后训练:用高质量、任务专精的数据微调。最简单的任务 5 小时够,最难的 100 小时以上。

论文对这套配方的解释我很认同:多样但质量一般的预训练数据,教模型怎么从错误中恢复;干净的后训练数据,教模型做得又快又稳。 只做前者,动作毛糙;只做后者,换个场景就废。

主模型训了 70 万步。为了公平比较,作者还训了个“算力对齐”的 16 万步版本(下称 parity 版),结果 parity 版依然打赢所有基线——这点比绝对分数更有说服力,说明赢的不是算力,是方法。

6.1 后训练到底需要多少数据

论文给的两个端点很有参考价值:最简单的任务 5 小时,最难的 100 小时以上。这里的"小时"是机器人真实运行时长,不是标注条数。

按遥操作节奏换算,5 小时大约对应 300–500 条示范轨迹,100 小时对应 6000 条以上。这个量级和很多团队的经验是吻合的:

任务类型示范量级典型表现
单步抓取、定点放置几十条两三天能跑通,换个物体就掉点
多步桌面任务200–500 条成功率 70–85%,需要重试机制
长时序灵巧任务(叠衣、装箱)数千条 + 预训练单靠数据堆不出来,必须有基座模型

还有三个容易被忽略的细节:

帧率必须对齐。 预训练数据里 9.1% 来自开源数据集,控制频率只有 2–10 Hz,而自有数据是 20–50 Hz。频率不一致会直接导致动作速度学歪——这也是为什么 π0 要统一到 50 步动作块,用“块”而不是“帧”来对齐时间。

语言标注要分段。 50 步动作块对应大约 1 秒,一段 10 分钟的长任务要切成几百个语义段。这件事没有自动化方案,至今仍是人力密集环节。

失败样本不要过滤。 论文明确说多样性比干净更重要:模型在杂乱数据里学会"偏了怎么拉回来",在后训练数据里学会"怎么做漂亮"。只喂成功轨迹,得到的策略一旦被碰一下就崩。

七、实验:赢在哪,赢多少

开箱对比(每任务 10 回合):π0(70 万步)在叠衬衫、清桌子这类任务上接近满分;parity 版仍全面优于 OpenVLA(7B)、Octo(93M);连只有 4.7 亿参数、不带 VLM 初始化的 π0-small 也赢过这两个基线。

语言跟随:给人类专家的中间指令(“先抓住左边袖子”),π0 提升显著;π0-small 基本吃不到这个红利——说明语言理解能力确实来自 VLM 主干,不是动作头能补的。

学新任务:预训练带来的增益“有时高达 2 倍”。有个反直觉的发现——之前最强的基线是完全从头训练的模型,也就是说,此前的预训练方法根本没被用起来。

长任务:叠衣服、卸烘干机、组装纸箱、打包餐盒,单条 5–20 分钟。作者称这是端到端机器人学习文献里最长的灵巧任务,而且难到其他方法无法完成,只能跟自己的消融版本比。预训练在最难的任务上增益最大。

openpi 的 Requirements 表:推理 > 8 GB(RTX 4090 可跑)、LoRA 微调 > 22.5 GB、全量微调 > 70 GB(A100/H100)。这张表比任何 benchmark 都更直白地说明了“机器人模型离端侧还有多远”。 仓库同时提供 π0、π0-FAST(自回归 + FAST 动作分词器)与 π0.5 三套权重。

7.1 三张图,三种容易误读的结论

论文的实验图信息量很大,但有三处特别容易被读歪。

第一处:开箱对比的柱状图不能当“通用能力”看。 它测的是 68 个自有任务,其中有大量“拿起来、放下去”的桌面动作。π0 在这些任务上接近满分,不代表它能处理没见过的新场景;论文自己的措辞也是 “zero shot after pre-training”(预训练后零样本),前提是任务分布已见过。

第二处:语言跟随的提升幅度依赖“谁给指令”。 人类专家给的中间指令(“先抓左边袖子”)带来显著提升,高层 VLM 策略给的指令提升较小。这说明模型对指令的具体程度敏感——越模糊的指令,越依赖模型自己的常识补全,而常识恰恰是最不可控的部分。

第三处:长任务的分数是“平均分”,不是成功率。 5–20 分钟的任务用分段打分,一个任务里可能前 80% 做对、最后一步失败,分数依然不低。真实产品里这种“差一步”的失败最难被接受——用户看到的是“它把衣服扔地上了”,不是 0.8 分。

读论文时把这三处校准过来,就不会高估它的能力边界。

八、73 ms 的推理时延意味着什么

这是全篇我最关心的数字,因为它决定了“能不能上真机”。

环节耗时(RTX 4090,3 相机)
图像编码14 ms
观测前向32 ms
动作前向(flow × 10 步)27 ms
网络传输(板外)13 ms
板载总耗时73 ms
板外总耗时86 ms

73 ms 意味着单次推理能跟上 13 Hz 的决策频率;配合 50 步动作块,实际动作输出能撑到 50 Hz。但请注意硬件前提:RTX 4090。这不是机器人身上能塞的卡。

放到启元的硬件上看就很具体了:Q1 的算力在机身内,T1 Pro 用的是英伟达 Orin Nano。Orin Nano 的 INT8 算力在几十 TOPS 量级,跑 3.3B 参数的 VLA 显然不现实——这也是为什么消费级机器人今天的架构必然是“端侧小模型 + 云/近端大模型”,而不是把 π0 直接搬进机身。

一条实用的换算:显存需求。openpi 官方给的表格是——推理 > 8 GB(RTX 4090 可跑)、LoRA 微调 > 22.5 GB、全量微调 > 70 GB(A100/H100)。想在本地玩微调,24 GB 卡刚好卡在 LoRA 线上。

8.1 延迟预算是怎么被吃掉的

把 73 ms 拆开看,会发现一个容易被忽略的事实:真正的模型计算只占一半,图像编码和观测前向加起来 46 ms,动作去噪只要 27 ms。

这带来一个反直觉的优化方向:想让它更快,别急着换更大的卡,先去砍输入。3 路相机各编码一次,是 14 ms;砍到 1 路、或者降低输入分辨率,收益立竿见影。论文之所以用 3 路,是因为灵巧任务需要腕部视角补盲;如果任务本来就简单(比如“走过去、抬手、抱住”),单目完全够用。

端到端延迟还有一段常被漏算:网络。板外推理要额外 13 ms 走网络,如果换成公网云推理,这一段会跳到 50–100 ms,抖动还大。这就是为什么“云端大脑”在演示里很好,在真机上必须配“端侧小脑”——决策可以慢,闭环不能抖。

8.2 把 π0 当 teacher:一条能落地的折中路

既然 3.3B 放不进机身,是不是就只能等?工程上有条更现实的路——把 π0 当教师,蒸一个小模型出来当学生。

具体做法分四步,每步的算力门槛都不一样:

步骤做什么显存/算力产出
1. 采数据用 Q1/T1 遥操作或脚本采 50–200 条任务轨迹,含语言标注无数据集(几百 MB 级)
2. 蒸馏标注用 π0 离线对每帧推理,产出"教师动作块"作为软标签> 8 GB(单卡即可,离线跑)带软标签的数据集
3. 训学生冻结视觉主干(如 SigLIP/CLIP),只训一个 1000 万–5000 万参数的动作头> 22.5 GB(LoRA 级)端侧可用的小策略
4. 部署量化到 FP16/INT8,接 5 Hz 决策 + 50 Hz 插值端侧 SoC能跑在机身上的技能

第 4 步那个“5 Hz 决策 + 50 Hz 插值”是整个方案的关键:模型不需要输出 50 Hz,它只要每 200 ms 给一个目标点,运控层的插值器负责把中间 10 帧补出来。人的小脑也是这么干的——大脑规划、小脑插值,没人用"思考"去控制每一块肌肉。

这条路的局限也要说清楚:学生模型的能力上限由教师和你的数据共同决定,换个任务就得重采重训,它是"技能",不是"通用策略"。但对一台两万元的个人机器人来说,这条路是目前唯一算得过账的。

如果要把这套东西真的落到 Q1 / T1 上,光“移植模型”是不够的,必须先把链路拆成三段:教师出软标签、学生学动作头、运控做插值。

教师—学生—插值三段式。中间那一段才是关键:决策频率可以低,执行频率不能低。人在拿杯子时,大脑也没有以 1 kHz 的频率思考。

九、把 π0 放到启元 Q1 上,会有几处“装不上”

这是论文解读最该做、也最少人做的一步:把论文的假设和真机的参数摆在一张桌子上对。

启元的 16 个公开仓库:技能(carry-clothes、didi_taxi_agent、robot_video_call)、SDK(q1-sdk)、模型描述(q1-urdf / t1-urdf)分仓管理。Q1 的 URDF 是公开的,自由度、限位、质量全在里面——这份文件比任何发布会 PPT 都诚实。

按 Q1 V3 的 URDF 数字对一遍:

π0 的假设Q1 的实际结论
18 维动作向量、双臂各 6 DoF + 夹爪全机 22 个可动关节,每臂 4 个(肩 3 + 肘 1),腕关节 fixed,无夹爪动作空间要重定义为 4+4 或全身 22 维,且没有“夹爪开合”这一维
输出高频连续动作关节力矩两档:髋/膝/腰 36 N·m,踝/肩/肘 22 N·m动作归一化必须按实际力矩上限缩放,否则输出会被限幅截断
3 路相机公开接口是单目头部相机(head_monocular_central)+ RTSP 流多视角能力要自己加硬件,三角化那类方法直接失去前提
板载 4090机身算力 + T1 Pro 的 Orin Nano只能跑蒸馏/量化后的子模型,或走“端侧执行 + 近端推理”
训练数据 1 万小时社区技能多为规则+视觉伺服数据规模差 3 个数量级,现阶段谈“通用策略”不现实

所以正确的期待是:π0 给的是方法论,不是可以直接 load 的权重。 你能拿走的是“动作块 + 流匹配 + 预训练后训练分离”这套设计,落到 Q1 上,量级应该是一个几千万参数、只输出上肢 8 维动作的小模型,而不是 3.3B。

9.1 真要适配,三条路可选

路线做法算力门槛适用场景
A. 云端推理 + 端侧执行图像上传到带 4090/A100 的机器,动作块回传,端侧只做插值与保护中(一台推理机)演示、科研、固定场景;延迟 100–200 ms
B. 端侧小模型从 π0 蒸馏/剪枝到 <1B,或直接用 π0-small 的路线自己训高(训练)+ 中(推理)需要脱网、需要低延迟
C. 不用 VLA,用“技能 + 视觉伺服”上肢走插值位姿,靠相机闭环把误差吃掉低现阶段社区技能的主流做法

第三条路看着最“土”,但它是目前真机上唯一稳定的方案。社区开源的搬运技能 carry-clothes 就是这么干的:没有 SLAM、没有夹爪、没有末端力传感,靠“相机取图 + 自建检测 + 速度指令视觉伺服”把一段 10 步的流程跑完。它的 README 里写了一句很诚实的话——v1.0 版本假设的那些接口(导航、夹爪、语音识别、力传感)“SDK 里并不存在”,全部废弃重写。

这句话比任何 benchmark 都更能说明当下具身智能的真实水位:模型的想象力,普遍超前于硬件与接口的现实。

十、一个开发者真正能拿走的四件事

  1. 动作表示优先于模型结构。 先想清楚你的机器人要输出什么:关节角、末端位姿、还是速度指令?输出块长度多少?控制环多快?这三件事定错了,换多大的模型都救不回来。
  2. 预训练和后训练必须分开做。 拿一批杂乱数据训到底,得到的模型“什么都会一点、什么都做不好”。先用广谱数据打底,再用 50–100 条高质量示范收口,这是可复现的最短路径。
  3. 别迷信端到端。 π0 的灵巧任务仍然依赖高频闭环。启元 T1 的走跑控制要求 ≥50 Hz 持续发布速度指令,中断超过 1000 ms 就会脱锁停机——这类硬实时约束,模型再大也绕不过去,必须由运控层兜住。
  4. 数据接口就是竞争力。 论文能成立的前提是“能采到高频、多本体、带语言标注的数据”。对应到启元 SDK,就是 CaptureJpegImage 抓拍、RTSP 取流、关节状态订阅这几条通路——先把数据管道修好,再谈模型。

论坛里的真实提问:麦克风通道与文档不一致、二次开发能否读到语音识别结果、仿真里跑通一个挥手动作。这些问题大多指向同一个环节——模型输出怎么接进机器人。 论文解决的是"算出动作",工程解决的是"把动作送进关节",后者更琐碎。

10.1 三个常见误读,顺手澄清

误读一:“π0 能直接控制任何机器人”。 论文标题里的 general 指的是“跨多种训练过的平台具备通用性”,不是“插上就能用”。它对没见过的本体没有零样本能力,跨本体迁移靠的是把所有动作塞进 18 维空间后联合训练,新本体仍要采集数据做后训练。

误读二:“3.3B 说明模型越大越好”。 恰恰相反,π0-small 只有 4.7 亿参数、不带 VLM 初始化,依然打赢了 7B 的 OpenVLA。赢的原因是动作表示(连续 + 动作块),不是参数量。真要上端侧,小模型 + 好表示是更现实的路。

误读三:“叠衣服做成了,家务就通了”。 论文里最难的叠衣服,本质仍是“布料 + 台面”这个受控场景。放进真实家庭,光照、杂物、宠物、孩子都会进来,成功率会掉一个量级。启元把家务基座模型 PrimeMind 的口径定成“将推进落地”而不是“已上线”,这个措辞是有分寸的。

10.2 复现清单

如果你想在自己手上跑一遍,按这个顺序推进,能少走很多弯路:

  1. 先跑通推理,别急着训。 装 uv、拉 openpi、单个 RTX 4090 跑 pi0_base 的 demo,确认整条链路没坏(>8 GB 显存)。
  2. 图像输入先用 1 路。 论文用 3 路相机,你自己实验先降到 1 路——编码耗时直接砍到三分之一,调试周期短很多。
  3. 动作空间先做"单臂 6 维 + 夹爪",不要一上来就全身 18 维。维度越高,补零越多,训练越难收敛。
  4. 数据先采 50 条,跑一次 LoRA(22.5 GB 显存够)。看 loss 和 rollout,不行再补数据,而不是一次采 500 条。
  5. 评估用固定场景 + 固定初始位,每任务 10 次,记成功率。别用"看起来还行"当结论。
  6. 再考虑蒸馏/量化上端侧,别一上手就想塞进机器人——那是最后一步,不是第一步。

结语

π0 最重要的贡献不是 3.3B 这个数字,而是它把“机器人基础模型”从口号做成了一套可复现的工程配方:用 VLM 继承语义、用流匹配保住频率、用跨本体数据换泛化、用两段式训练换熟练度。

对做个人机器人的团队来说,这篇论文真正的价值在于它划出了边界:通用策略需要万台级本体喂数据,而单机智能必须靠技能生态分解复杂度。 前者是厂商的活,后者是开发者的活。启元把 SDK、技能市场、URDF 全开源出来,赌的就是这个分工。


过来kk https://dev.primebot.com/

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐