具身智能π0.5(pi0.5)模型介绍
原文发表在知乎,辛苦移步~:具身智能π0.5(pi0.5)模型介绍
大概半年前学习过pi0与pi0.5模型,那时候pi0.5还没有开源,现在pi0.5开源了(2025.9月),先研究了一下它的代码,笔记如下。此文主要基于lerobot的代码(git链接)阅读而来,同时也参考官方代码(git链接)。
pi0与pi0.5在模型结构上的区别
看到pi0.5后,第一个会想到的是,它与pi0(π0模型前向推理过程详解, π 0模型数据-训练-评测过程)相比的升级点在哪里。以前pi0.5代码没有开源的时候,也写过一篇文章总结区别(π0.5与π0区别),但这个总结偏宏观,更多是通过论文总结的。但在此文中,对比会更细节一些。
主要区别总结:
状态处理:
pi0: 显式地将机器人的本体感受状态state(如关节角度)作为输入。它有一个state_proj层,用于将状态向量投影到模型的嵌入空间中,与50维action chunk拼在一起,形成一个51维的embedding,然后在action expert中使用。
pi05: 将state放在VLM中使用,使用方法可以参考下文章节:pi0.5的输入处理。而action expert中不再使用state。
时间步(Timestep)调节机制:
pi0: 将时间步嵌入(time embedding)与动作嵌入(action embedding)简单地拼接(concatenate)在一起,然后通过一个MLP层进行处理。pi05: 使用了一种更先进的机制,即GemmaRMSNorm。它将时间步嵌入作为条件,在Transformer的每一层动态地调节归一化层(Layer Normalization)。这允许模型在生成动作的不同阶段(denoising step)具有不同的行为,是一种更精细的调节方式。关于GemmaRMSNorm在下文有详细的说明。
tokenizer:
pi0: 在tokenizer层面没有改变,用的默认paligemma的tokenizer。
pi05: 在预训练时,输入是语言指令+state(下文有介绍),通过vlm的自回归输出动作token的初步预测,以加快收敛。所以这时需要将action编码成token。pi0.5复用了pi0-fast中的fast tokenizer技术。
原理参考:【VLA系列】Pi0-FAST,统一具身智能的动作Tokenization训练加速5倍。代码参考:可在hugging face上下载physical-intelligence/fast模型后,在里面有一个processing_action_tokenizer.py中有它的代码实现。
上面是主要的三点不同,下面在前两个不同点之上,展开讲一讲。
