前言
过去的半个多月
- 对于大模型
deepseek火爆全球,我对其的解读也写成了整整一个系列
详见《火爆全球的DeepSeek系列模型》,涉及对GRPO、MLA、V3、R1的详尽细致深入的解读
某种意义来讲,deepseek 相当于把大模型的热度 又直接拉起来了——相当于给大模型续命,不然,去年大模型的热度 还不如具身智能 - 对于具身智能
deepseek之外,具身智能也一直在稳定加速,但如果不小心 则会漏掉很多重要信息——比如π0「详见《π0——用于通用机器人控制的VLA模型:一套框架控制7种机械臂(基于PaliGemma和流匹配的3B模型)》」到底还是开源了,开源于25年2.4日..
如此,我也算是被打脸了,因为我曾在发表于25年1.11日的这篇《一文通透OpenVLA及其源码剖析》文章里说
“一个多月前,有朋友曾说,一个月内,π0 会开源来着,当时虽然觉得不太可能,但还是抱着期待,可还是没开..
没开源必然是有点遗憾,故这两天我一直在考虑、对比,看目前哪个vla最逼近π0,然后借鉴π0的思路,去改造该vla”
且顺藤摸瓜,才发现,原来π0背后公司还发布了一个FAST版的模型:π0_FAST,且也把其一块开源了
- 本次π0开源的blog介绍:Open Sourcing π0
- 本次π0及π0-FAST的GitHub地址:github.com/Physical-Intelligence/openpi
本文便来解读下这个π0_FAST
顺带
- 另一篇《π0源码(openpi)剖析——从π0模型架构的实现:如何基于PaLI-Gemma和扩散策略去噪生成动作,到基于C/S架构下的模型训练与部署》则解读了下他们的源码
- 再一篇《π0的微调——如何基于各种开源数据集、以及私有数据集微调openpi(含我司七月的微调实践及在机械臂上的部署)》则涉及对π0的微调
相当于π0系列 已有4篇文章,上一个有3篇或以上文章的具身系列则是iDP3,这两个架构 我个人都非常看好,落地潜力都很大
进一步讲,以上的「大模型和具身」这两大热点是否可以结合呢?
- 那可太多了,详见此文《2024具身智能模型汇总:从训练数据、动作预测、训练方法到Robotics VLM、VLA》
- 且上面提到的deepseek也是可以赋能具身智能的——其与具身结合潜力比较大的一点是:其推理速度比标准transformer更快
「详见《一文通透DeepSeek V2——通俗理解多头潜在注意力MLA:改进MHA,从而压缩KV缓存,提高推理速度》」
对于我司而言
- 我司『七月在线』在q1会尝试下deepseek与具身结合的相关工作,毕竟应用落地爆发 才能真正推动社会,大模型与具身的结合,便是一大应用方向
- 而对于本文的主角π0及π0-FAST,他俩的开源意味着我们今年q1在具身方面的一些落地工作,对于被微调模型的选择上,便多了一个——如此,好事一件啊
最后,写本文的时候,和解读其他模型一样,内容上 我并没有严格按照原论文本身的顺序来,原因在于
- 一般论文的摘要、引言、相关工作都是一个个独立的部分,是可以单独拎出来理解的,所以这几个部分之间 会不可避免的有所重叠或重复
- 而本文是作为一个整体呈现在大家面前的,所以会去掉这类重复,尽可能简洁、紧凑、清晰
可能这也是很多人喜欢看我博客 胜过喜欢看原论文的原因之一吧
第一部分 π0-FAST:针对VLA模型的高效动作token化技术
1.1 背景与整体介绍
1.1.1 VLA模型及其动作表示
最近,多项研究开发了通用机器人策略[9-RT-1,51-Octo,6-Roboagent,10-Rt-2,20- Scaling cross-embodied learning:One policy for manipulation, navigation,39-Openvla,62-Scaling proprioceptive-visual learning with heterogeneous pre-trained transformers,11- Gr-2]
这些策略基于日益庞大的机器人学习数据集进行训练,比如
- 52-Open-X
- 38-Droid: A large-scale inthe-wild robot manipulation dataset
- 60- BridgeData v2: A dataset for robot learning at scale
- 24-Rh20t: A comprehensive robotic dataset for learning diverse skills in one-shot
- 47-Roboturk
- 35-Dexmimicgen
一种有前景的训练通用策略的方法是视觉-语言-动作模型VLAs,包括且不限于
- 10-Rt-2
- 17- Open X-Embodiment: Robotic learning datasets and RT-X models
- 39-Openvla
- 67-Robotic control via embodied chain-of-thought reasoning
- 7-π0
- 63-Tinyvla
- 73-Tracevla: Visual trace prompting enhances spatial-temporal awareness for generalist robotic policies
- 71- 3dvla: A 3d vision-language-action generative world model
- 13-NaVILA: Legged Robot VisionLanguage-Action Model for Navigation
- 11-GR-2
这些模型通过微调:在互联网规模图像和文本数据上预训练的视觉-语言模型——VLM,实现机器人控制
上面大部分模型 都已在本博客中详尽深入细致的解读过「暂未解读的 很快也会解读」,详见:视觉语言动作机器人:从Robotics VLM到VLA
这有多个好处:
- 采用拥有数十亿参数的大型视觉-语言模型主干,使策略具备拟合大规模机器人数据集所需的表达能力
- 复用在互联网规模数据集上预训练的权重,还提升了VLA对多样化语言指令的理解能力及其泛化能力,例如能够适应新物体和场景背景
[10,39,67,63,36- Beyond sight: Finetuning generalist robot policies with heterogeneous sensors via language grounding]
总之,大型、高容量的Transformer模型,无论是
- 从零开始训练
[8-Rt-1,69-ALOHA ACT
51-Octo,6-Roboagent,
20-Scaling cross-embodied learning: One policy for manipulation, navigation, locomotion and aviation,
62-Scaling proprioceptive-visual learning with heterogeneous pre-trained transformers]- 还是利用在互联网规模的图文数据集上进行下一个token预测预训练的模型[10-Rt-2,39-Openvla——这两都是使用下一个token预测技术独立预测动作token,63-Tinyvla-将一个基于扩散的头部附加到预训练的多模态模型上,以直接输出机器人动作,7-π0,65-Latent action pretraining from videos]
在捕捉复杂且具有泛化能力的机器人行为方面都极为有效
然而,这些模型需要对连续动作信号进行分词(tokenization),而分词方式决定了模型预测出的离散符号,需要考虑如何映射为连续的机器人动作[64-Elastictok:Adaptive tokenization for image and video,34-Efficient long video tokenization via coordinated-based patch reconstruction,41-Behavior generation with latent actions,12-Beats: Audio pre-training with acoustic tokenizers]
关于分词——分词方法的选择对模型训练和下游性能有显著影响[55]。虽然有多项研究探索“无分词”语言模型的训练[28,53-Byte latent transformer: Patches scale better than tokens],这些模型直接在bit流上操作,但目前大多数语言模型在训练前依赖文本分词阶段
1.1.2 此前的分词技术及其遇到的挑战
对于VLA训练的动作表示,先前的研究探索了多种用于训练机器人策略的动作参数化方法,包括VLA
- 一种研究方向使用“语义”动作表示,例如
语言子任务
[21-Palme,2-2-Do as i can and not as i say: Grounding language in robotic affordances,
4-Rt-h: Action hierarchies using language]
或关键点
50-Pivot: Iterative visual prompting elicits actionable knowledge for vlms
32-Rekep: Spatio-temporal reasoning of relational keypoint constraints for robotic manipulation
25-Moka: Open-world robotic manipulation through mark-based visual prompting
19-Keypoint action tokens enable in-context imitation learning in robotics
这些方法通常可以通过少量样本,甚至无需机器人样本即可零样本完成任务[50,32,25],但在任务执行时需要手工设计的低层控制器,限制了其通用性 - 另一种方法则直接训练VLA,使其在接收到图像和语言指令输入后输出低层机器人控制命令
最常见的设计是将动作直接嵌入到离散的token中,这些token可以通过标准的自回归序列模型生成,类似任何主流的视觉-语言模型
而好的分词选择对序列模型的性能至关重要[55-GPT2,57-Neural machine translation of rare words with subword units]
此类先前的机器人策略通常使用:基于每维度、每时间步分箱方案的简单分词策略[9,10-Rt-2,39-Openvla]——将连续的机器人动作映射为离散的动作token
但作者发现,当学习具有高频控制的灵巧技能时,这种方法表现不佳「即该方案难以扩展到高频机器人控制任务」(见下图图2,右)
且作者注意到,在预测未来动作序列(即动作“组块”)时,时间步之间的相关性对于简单的token化策略来说是一个重大挑战,而这在高频控制中很常见
因为高度相关的动作token会削弱自回归视觉语言模型中使用的下一个token预测目标的效果
直观地说,在这种情况下,低token预测损失通常可以通过简单地复制最近的动作token来实现,这使得模型处于较差的局部最优状态
相比之下,作者提出了一种基于时间序列压缩技术的新的FAST token化方案,允许在高频数据上训练自回归VLA - 此外,虽然还有许多研究也提出了token化以外的替代方案,例如通过使用回归头或引入新的权重进行扩散解码[20-Scaling cross-embodied learning:One policy for manipulation, navigation, locomotion and aviation,7,41-Behavior generation with latent actions,63-Tinyvla]
但作者的方法不需要修改底层的预训练transformer模型,可以轻松应用于任何预训练的自回归transformer模型,并在许多任务上实现了与最先进的基于扩散的VLA[7-即π0]相媲美的性能,同时训练所需计算资源显著更少 - 另一组相关研究探索了向量量化动作表示[41-Behavior generation with latent actions,3-Minivla: A better vla with a smaller footprint,49-Quest: Self-supervised skill abstractions for learning continuous control]
这些方法训练了一个向量量化的编码器-解码器网络,其重构质量对超参数选择和网络结构较为敏感[66-Magvit: Masked generative video transformer]
可结果发现这些方法在粗略、低保真度的重构任务中表现良好,但在需要精细控制的高频任务上表现不佳
相比之下,FAST token化方案的超参数较少,能够以高精度重构动作的同时,还具备了强大的压缩能力
1.1.3 高效分词技术:能在灵巧和高频率机器人数据下训练自回归VLA
总之,在这项工作中,作者从基本原理出发,提出了一种新的分词策略
- 他们的核心观点是,机器人动作信号在训练前需要进行压缩,以减少连续token之间的相关性
他们借鉴了基于压缩的分词策略,例如语言模型中常用的字节对编码方法「byte-pairencoding,BPE」[27,57]——通过合并频繁出现的token序列为新token来压缩输入文本 - 然而,由于机器人动作是连续的,相应的压缩策略也应作出相应调整。因此,他们的方法基于离散余弦变换(DCT)编码,这种方法广泛应用于压缩连续信号,如图像(例如 JPEG 压缩)
且发现如此所得的分词方法——频域动作序列分词『Frequency-spaceAction Sequence Tokenization,FAST』,使他们能够通过简单的下一个token预测(见上图图 2,左)训练自回归 VLA 策略,以适用于高灵巧性和高频率任务——而对应的标准离散化方法完全失败 - 此外,FAST 首次实现了对新近提出的大规模多任务“野外”机器人操作数据集 DROID [38] 的高效 VLA 训练
且最终得到的策略是首个可通过自然语言提示、在未见环境中零样本成功评估的语言条件通用操作策略 - 且基于FAST,作者还开发了FAST+,这是一种通用的机器人动作分词器,在覆盖多种机器人结构、动作空间和控制频率的100 万条真实机器人动作轨迹上进行训练
他们证明了FAST+ 分词器能够有效地对从单臂到双臂及移动机器人等多种机器人动作序列进行分词,并且是训练自回归VLA 模型的即插即用分词器
另,当与π0 VLA 集成时,基于FAST 的自回归VLA 能够扩展到在10k 小时的机器人数据上进行训练,并在多种任务中实现与基于扩散的VLA 相当的性能,同时将训练时间最多缩短至5 倍
1.2 从问题表述到token化如何影响VLA训练
1.2.1 初步准备与问题表述
首先,作者的目标是训练策略,将观测
映射为未来机器人动作序列
- 他们假设策略输出一个”动作块”[69-ALOHA ACT,40-Action chunking as conditional policy compression],即H 个动作的序列[15-Diffusion policy,7-π0,69]
这样可以更容易地产生时序一致的动作,并减少累积误差 - 动作tokenization的目标是定义一个映射
,将维度为
的连续动作序列
,映射为长度为
的离散token序列
,其中
为词汇表中大小
注意,同一个动作序列中的token数可能不同,就像长度相同的句子在分词后可能包含不同数量的文本token一样
其次,对于基于分箱的动作tokenization
动作tokenization中最常用的方法是简单的分箱离散化方案[8,10-Rt-2,39-Openvla,72-3dvla,56-A generalist agent]
- 对于给定的动作a,该方法独立地对每个维度进行离散化,将训练数据集中的取值范围划分为
个均匀的区间,最常用的是
- 对于一个D 维动作序列
,这种标记化tokenization方案将应用于每个时间步,最终得到的token序列为
然对于高频率的机器人数据,这种tokenization方案并不理想:它很容易为每个动作块产生数百个token,从而使训练变得具有挑战性,并导致推理速度变慢
For high-frequency robot data, this tokenization scheme is sub-optimal:it can easily produce hundreds of tokens per action chunk,which make training challenging and lead to slow inference
1.2.2 案例研究:token化如何影响VLA训练
为了更好的说明,对于RT-2和OpenVLA使用那种动作tokenization方法训练自回归策略的所面临挑战,作者举了一个案例「这个案例问题反映了在高频动作块上训练的策略所面临的挑战,这些策略必须在给定某些条件信息的情况下预测一系列连续动作」
- 首先,创建一个合成时间序列数据集,其目标是预测一个三次样条曲线,该曲线能够插值四个随机生成的点(见下图——原论文是图3的底部)
下图左侧是以前的自回归 VLA(如 RT-2 [10]、RT-2-X [52] 和OpenVLA [39])使用的每维度分箱方案进行比较——那种方案被称native tokenization
下图右侧是FAST所采取的tokenization
如果使用以前VLA策略中采用的native tokenization方案对目标序列进行tokenize,该方案将序列中的每个元素分别离散化为256个区间中的一个
然后,训练一个小型自回归transformer策略,在给定条件点的情况下预测tokenized后的信号
他们针对目标信号的不同采样率(每个序列的25到800个时间步长不等),重复进行该实验,而底层数据集保持不变,这模拟了在以不同频率采集的动作数据上训练自回归策略的过程 - 在不同采样频率下训练的自回归模型的平均预测均方误差(MSE)如下图——原论文是图3的顶部 所示(“简单”),可以看出来
在DCT压缩目标token上训练自回归模型在各种采样频率下始终保持较低的预测误差
而如果是使用分箱tokenization的模型,则虽然在低采样率下实现了良好的预测性能(即较低的MSE),但随着采样率的增加,预测误差急剧增加,最终模型仅仅复制了第一个动作,如下图图3左下角的定性可视化所示
请注意,这个问题不能归因于数据本身:底层数据分布的复杂性并未发生变化,作者预计具有在相同容量、相同训练步数下,模型在所有采样率上都应有相当的表现
the complexity of the underlying data distribution does not change, and we would expect a model with the same capacity trained for the same number of steps to achieve comparable performance across all sampling rates
那么,究竟发生了什么
要理解分词方案如何影响学习性能,需要查看学习目标本身。从根本上说,自回归模型被训练为在给定所有先前token的情况下预测下一个token
因此,它们的学习信号与『 在已知
条件下的边际信息量』成正比
- 关键在于,当使用简单的逐时刻分词方案时,随着训练信号的控制频率增加,这一边际信息趋近于零
对于平滑信号,随着时间步变短,每个时间步的变化也按比例减小。这极大地减缓了训练过程中的收敛速度,并可能导致难以拟合复杂的高频数据集 - 实际上,先前的研究中已经观察到了此类挑战。例如,OpenVLA 在低频的BridgeV2 和RT-1 数据集上表现良好,但在拟合高频的DROID 数据集时遇到了困难[39]
因此,这个案例的研究结果强调了为机器人动作设计更好分词方案的重要性
1.3 通过时间序列压缩实现高效动作Tokenization
经过上文可知,高频动作轨迹中的冗余可能导致每个动作token的边际信息量较低,从而导致训练性能不佳
为了解决这个问题,需要一种tokenization方法,将高度冗余的动作信号压缩为数量更少、信息量更高的token
在本节中,按照原论文的描述,将首先介绍一种压缩连续时间序列的简单方法,然后使用它来设计一个动作tokenization算法,最后解释他们如何训练一个通用的机器人动作分词器tokenizer
1.3.1 基于离散余弦变换的时间序列压缩
关于高效压缩连续时间序列,已有大量相关研究,涵盖了将信号变换到频域后进行压缩的方法[18,1,61] 以及基于向量量化的学习型压缩方法[59,48]
他们工作的一个关键结论是,任何足够高效的压缩方法,应用于动作目标时,都有助于提升VLA模型的训练速度。然而,在实际操作中,仍有一些因素可能使我们倾向于选择某些压缩算法而非其他算法,例如分词器训练的复杂性,以及其在动作分词和解码过程中的效率
在π0-FAST中,作者使用了一种基于离散余弦变换(DCT)的压缩算法[1-Discrete cosine transform]。DCT是一种频域变换,它将连续信号表示为不同频率的余弦元素之和
- 低频分量捕捉信号的整体形状,而高频分量则反映信号中的突变
DCT 由于其简洁性、计算效率高以及在实际图像上的强大压缩能力,被广泛应用于压缩算法,例如JPEG 图像压缩[61-The jpeg still picture compressionstandard] - 且因为像素通常变化平滑,DCT往往只需用少数系数表示输入信号的大部分信息。信号可以通过省略权重较低的频率分量,来实现信号压缩
总之,与基于向量量化的学习型压缩方法相比,基于DCT的压缩是一种解析方法,因此极为简单且速度极快
1.3.2 FAST分词算法:结合离散余弦变换DCT和字节对编码BPE压缩动作块
如此,作者使用离散余弦变换来设计FAST,这是一种快速且有效的机器人动作分词tokenization方法
在下图图4 中作者详细介绍了从原始机器人动作到动作token的步骤「给定一个标准化的动作块,应用离散余弦变换(DCT)将信号转换到频域。然后,对DCT系数进行量化,并使用字节对编码(BPE)将每个维度的DCT系数扁平化序列压缩成最终的动作token序列」
- 首先对输入动作进行归一化,使得训练数据集中每个动作维度的第1和第99 分位数的数值映射到区间[−1, . . . , 1]
这个初始标准化步骤有助于将数据带入指定范围,并且还使得具有不同动作尺度的跨实体数据集的标记化更为容易
且使用分位数来应对大型机器人数据集中偶尔出现的异常动作 - 在数据归一化后,作者对每个动作维度分别应用离散余弦变换DCT
为了压缩经过DCT 转换的信号,可以简单地省略不重要的系数,这一过程通过缩放和取整操作实现,其中缩放系数是一个超参数,用于在分词tokenization操作的有损性与压缩率之间进行权衡 - 在舍入操作之后,DCT系数矩阵通常是稀疏的,大多数元素为零,每个动作维度仅剩下少量显著系数
- 为了真正实现压缩,必须将这个稀疏矩阵转换为一系列稠密的token
故将矩阵展平为一维整数向量,通过优先包括所有低频分量来交错动作维度,并训练一个字节对编码(BPE)分词器 [27] 来无损地压缩成稠密的动作token - BPE 步骤能够“压缩”零值分量,并在动作维度上合并了频繁出现的系数组合
当然了,之所以选择 BPE来压缩 DCT 矩阵,因为已有许多高效实现,并且它可以生成一个固定大小的输出词表,便于集成到用于VLA训练的现有视觉-语言模型词表中
此外,其他无损压缩算法,如霍夫曼编码[33] 或 Lempel-Ziv 方法 [75]『这些算法是gzip压缩方法的基础』也可以使用——作者表示 将来考虑
另,作者在算法1中简要总结了他们的tokenization方法,并在原论文的第VI节测试了FAST tokenization在机器人控制问题上的有效性
此外,请注意,在BPE编码之前对DCT系数矩阵的展平顺序会对策略训练产生显著影响——即上述步骤的第4步
且其有两种选择:
- 列优先展平,即首先连接每个维度的最低频率分量
- 或者行优先展平,即首先连接单个动作维度的所有频率分量
作者选择前者,因为他们发现,在自回归预测过程中,首先预测表征输出序列整体形状的低频分量,会带来更稳定的策略展开rollout——We choose the former, since we find that predicting the low-frequency components, that characterize the overall shape of the output sequence, first during autoregressive prediction leads to more stable policy rollouts.
如此,tokenization流程中的所有操作都易于逆转,从而可以快速解码预测的动作
- 该分词器tokenizer只有两个超参数:对DCT系数进行四舍五入前所应用的缩放比例,以及BPE压缩步骤中的词汇表大小
- 作者发现,这两个参数对结果的敏感度都不高,因此在所有单数据集的分词实验中,均使用相同的参数设置(四舍五入缩放比例为10,BPE词汇表大小为1024)
这与端到端学习的压缩模块形成了对比,后者 “端到端学习” 依赖于向量量化
这类网络通常训练过程繁琐,并且需要针对特定数据集精心选择超参数,才能获得良好的重建效果。作者的实验表明,作者基于DCT的分词方法比基于VQ的方法,能够训练出性能更高的策略,同时方法本身显著更简单,也更易于调优
且通过实验证明了在「1.2.2 案例研究:token化如何影响VLA训练」的研究示例中,基于DCT的tokenization的好处
可曾还记得上文提到过的——即如下图图3显示,在DCT压缩目标token上训练自回归模型在各种采样频率下始终保持较低的预测误差
1.3.3 通用机器人动作tokenizer:FAST+
FAST分词器中唯一需要学习的部分是BPE编码器的词汇表,每当分词器应用于新的数据集时,都需要对其进行训练。尽管这一学习过程非常快速(通常只需几分钟),但它仍然为使用FAST分词带来了一定的阻碍
因此作者希望再训练一个通用动作分词器,能够对来自任何机器人的动作片段进行编码
- 为此,作者采用上述流程,在一个大规模、跨不同机体的机器人动作数据集上训练分词器,该数据集包含约一百万个1秒钟的动作片段,涵盖了单臂、双臂和移动操作机器人,涉及关节和末端执行器控制动作空间,以及多种控制频率——他们在附录A中详细列出了用于训练通用分词器的数据混合物
对于许多数据集,他们包括了多个动作空间参数化版本:联合空间、末端执行器世界框架和末端执行器摄像头框架,以确保生成的分词器的通用性。Open X-Embodiment [52]、DROID [38] 和 Bridge V2 [60] 以其原始形式包含在内
另,在分词之前,所有动作都填充到32维,以适应不同维度的动作空间 - 一旦训练完成,通用动作分词器FAST+可以作为一个黑箱分词器,应用于任何机器人系统设置的1秒动作序列。且实验评估表明,其性能与针对单一数据集微调的分词器相当
且发布了该预训练通用动作分词器的代码,在一个方便的HuggingFaceAutoProcessor类中,使得只需三行代码 即可轻松将分词器应用于任何新的机器人动作块:
为了获得最佳压缩效果,作者建议将输入动作通过分位数归一化方法标准化到范围[-1, ..., 1],如第V-B节《1.3.2 FAST分词算法》所述,并一次性对1秒的动作块进行分词tokenizingfrom transformers import AutoProcessor tokenizer = AutoProcessor.from_pretrained( "physical-intelligence/fast", trust_remote_code=True ) tokens = tokenizer(action_chunk)
他们的模块还支持在给定的动作片段数据集上轻松训练新的FAST分词器from transformers import AutoProcessor tokenizer = AutoProcessor.from_pretrained( "physical-intelligence/fast", trust_remote_code=True ) new_tokenizer = tokenizer.fit(action_dataset)
第二部分 实验:对FAST标准版和通用版的评估
在他们的实验中,他们使用两个VLA 主干测试FAST:π0 [7] 和OpenVLA [39]。且将FAST 与替代动作tokenization方案进行比较,并分析关键设计决策
然后,将使用FAST tokenization训练的π0 模型与最先进的π0 流匹配(扩散)VLA 进行比较,并使用 FAST 对具有 10000 小时灵巧机器人操作数据的大型跨实体数据集进行自回归 VLA 训练的扩展性测试——
即test the scaling of autoregressive VLA training with FAST to large, cross-embodied datasets with 10k hours of dexterous robot manipulation data.
2.1 实验设置
2.1.1 policy实施
作者测试了不同的分词方案用于自回归VLA训练,并结合主流VLA骨干网络
- 在作者的大多数实验中,作者使用π0[7],如本文开头所述,这是一种基于PaliGemma-3B [5]的VLA
- 且还测试了基于Prismatic 7B [37]构建的OpenVLA [39]
在训练过程中,作者对1秒的动作片段进行分词,并按照先前的VLA [10-Rt-2,39-Openvla]的做法,用生成的动作token覆盖VLM词表中使用频率最低的token——这句话 我感觉反过来 更合适
且作者微调用于机器人动作预测的VLA模型,未进行权重冻结
作者在附录C中提供了有关策略训练设置的更多详细信息
- 具体而言,作者使用π0[7]和OpenVLA[39]骨干网络训练策略。根据任务的不同,策略依赖于两个或三个输入图像(一个第三人称摄像机和每个机器人手臂一个腕部摄像机),使用224x224像素的分辨率
- VLA骨干网络通过预训练的视觉编码器分别编码每个图像,并将生成的tokens连接起来。且还基于自然语言任务指令和机器人的本体感受状态进行条件设置
- 两者都通过LLMs语言分词器进行分词,将它们视为字符串
对于本体感受状态,应用了一种类似于RT-2动作分词[10]的bin分词预处理,将其离散化为256个bins,然后将整数作为文本输入序列的一部分进行分词
请注意,对于本体感受状态,一个简单的bin分词方案就足够了,因为它是一个输入到策略(相对于需要高级tokenization的操作输出)- 使用短线性学习率预热(1k 步)来训练所有策略,然后使用常数学习率5e −5
且使用AdamW 优化器[45](b1 = 0.9, b2 = 0.95),不进行权重衰减,将梯度幅度裁剪到1,并计算网络权重的EMA,权重为0.999推理的时候,使用简单的自回归解码,除了双手机器人任务(T 恤折叠、从烤面包机取出吐司、洗衣折叠)——即During inference, we use simple greedy autoregressive ecoding, except for the bi-manual robot tasks (T-shirt folding,toast out of toaster, laundry folding),作者发现使用较小的温度β = 0.7 有助于使策略从初始位置移动(因为一些数据包含了机器人在训练开始时悬停在初始位置的静止动作段)
2.1.2 评估任务
作者开发了一套7个评估任务(6个真实机器人,1个模拟;见下图图5),旨在测试VLA在高度灵巧的任务(如折叠洗衣物)和泛化任务(如在未见过的环境中0-shot执行桌面操作)上的性能
- Libero:在Libero [43]模拟基准套件上进行测试。测量Libero-Spatial、Libero-Object、Libero-Goal和Libero-10的平均性能
- 桌面清理[7] (20 Hz):一个UR5单臂机器人需要清理桌面,将12个物体分类到垃圾桶中和一个塑料容器(用于放置盘子、碗、杯子和餐具)。该任务需要精确抓取各种物体
- 更多任务见原论文..
2.1.3 实验中涉及对FAST与FAST+的比较
作者测试了
- FAST,如上所述,这是一种基于 DCT 的动作tokenization方法,分别在每个评估数据集上进行训练
- 以及FAST+,通用的基于 DCT 的动作tokenization器,训练在一个包含 100 万个动作序列的大型数据集上
请注意,在能够组装的最具多样性的真实机器人数据集上训练了通用tokenization器,其中包括来自作者真实机器人评估任务的数据
然后,作者将这两种分词方法与以前的自回归 VLA『如 RT-2 [10]、RT-2-X [52] 和OpenVLA [39]』采用的逐维分箱方案(称为朴素分词native tokenization)进行了比较,且对于动作块的每个时间步,分别应用分箱分词(binning tokenization)并拼接
当然了,虽然作者的方法无需训练额外模型即可实现压缩分词,但也可以考虑一种替代的压缩方案
- 比如训练一个模型以生成动作的量化表示——chunk viaFSQ[48],这是 VQ-VAE[59] 的一种更简单的替代方案
- 这种tokenization策略以前用于对高维图像数据进行分词[48,66],并且可以视为作者基于压缩方法的一种消融变体,该方法利用压缩表示,但其学习方式比作者相对简单的基于DCT的方法更为复杂
// 25年6.3日注,本次修订 到这里为止..
2.2 FAST标准版与FAST通用版
2.2.1 FAST标准版:相比其他VLA训练的动作分词器,更适合高频
首先在下表表I中提供了作者提出的FAST分词器与先前工作中使用的简单分箱方案之间的压缩率比较,他们使用来自具有不同动作维度和控制频率的数据集的1秒动作块
对于以上的这两种方法,使用默认的超参数,这些参数具有可比的分词错误。可以看到
- FAST在所有数据集上都实现了输入动作序列的显著压缩。对于高频动作数据的数据集,压缩优势尤为明显
- 有趣的是,FAST在每个领域中始终为每个机器人臂块生成大约30个动作token(即,双手设置中为60个token)
这表明FAST找到了一个表示,该表示近似于底层动作信号的复杂性,并且在很大程度上与动作数据的频率无关
且注意到,这种压缩并不是完全无损的,在压缩比和重建精度之间存在权衡,这由算法1中的尺度参数决定
表I中的数据在可比的重建精度下列出——具体请参见附录B中的图表,展示他们比较的每个分词器在压缩和保真度之间的权衡
接下来,使用上文2.1节(对应于原论文VI-A节)中描述的策略架构和分词方法训练策略——在图6中报告结果
总体而言,可以发现之前工作中应用的简单分词在学习高频机器人数据的有效策略方面表现不佳——这在作者评估的最高频任务中特别明显:Table Bussing(20Hz) and T-Shirt Folding (50Hz)
在这两个任务中,使用简单分词训练的策略无法在任务上取得进展。相比之下,作者发现基于压缩的分词可以导致有效的训练
此外,值得注意的是
- FAST tokenization首次成功在DROID数据集[38]上训练出强大的通用策略,该策略可以在未见过的环境中进行零样本评估,而无需微调,只需用自然语言提示即可
- 而所有先前的工作,包括原始的DROID论文[38]和OpenVLA[39],都没有展示零样本结果,而是完全专注于共同训练或微调评估
作者通过在各种桌面操作任务上测试他们的DROID策略,展示了其通用性
2.2.2 FAST+通用版:通用动作Tokenizer FAST+ 的性能评估
在本节中,作者评估了他们的通用动作标记器 FAST+ 的性能,该tokenizer在 100 万个真实机器人动作序列上进行了训练——见1.3.3 通用机器人动作tokenizer:FAST+
为了测试tokenizer的通用性,作者组装了一组多样化的小型测试数据集。该数据集涵盖了广泛的机器人形态、动作空间和控制频率(见图 8,完整的数据集列表见表 III)
请注意,这些数据集中没有任何一个是tokenizer训练集的一部分。因此,它们测试了一个场景:将分词器应用于全新的机器人设置 而无需重新计算分词
- 作者发现FAST+ 分词器在各种机器人数据集上都取得了良好的压缩性能,将所有数据集的动作token数量减少了2倍,在某些数据集上的减少幅度更大
- 且还测试了通用分词器在策略训练中的性能,并在图6中报告了与每个数据集分词器的结果
在所有任务中,通用分词器的表现与数据集特定的FAST分词器非常接近,这表明通用分词器可以作为机器人动作分词的强大默认选择
2.3 FAST标准版的消融研究、训练速度、扩展
2.3.1 对FAST标准版的消融研究
接下来,重点研究两个关键方面:
- FAST分词方法是否独立于基础的VLA骨架?
- BPE压缩步骤有多重要,这是FAST分词流程中唯一的学习组件
为了回答第一个问题,作者在具有挑战性的高频T恤折叠数据集上训练了一个OpenVLA策略[39],比较了最初在OpenVLA中使用的native tokenization方法和FAST+tokenizer
为了符合任务设置,作者修改了OpenVLA模型代码以接受多个输入图像并预测1秒的动作片段
- 下图的结果表明,FAST能够显著提升OpenVLA的性能,使其能够有效地在高频机器人操作数据上进行训练。这表明,作者的tokenization独立于底层模型骨干,并且可以轻松应用于各种预训练的自回归transformer模型
- 其次,作者在桌面整理和T恤折叠任务中对BPE编码步骤进行了消融实验,下面的图表显示,没有BPE编码的策略在展开性能上表现更差(但仍优于native tokenization)
直观地,DCT变换仍然将信号的大部分信息集中在少数几个token中,从而改善学习信号
然而,在没有BPE中存在大量重复的0-token,这会稀释学习信号并显著减慢推理速度,因为模型需要自回归地预测数百个动作token,最终导致策略性能变差
2.3.2 FAST标准版与扩散π0的比较:自回归π0训练快,而扩散π0推理快
在本节中,作者将最先进的扩散VLA π0 与结合了FAST 的模型进行比较,并使用自回归解码。作者比较了两种模型在第VI-B节任务上的表现,作者在图9 中报告了结果
作者发现,在小数据集(Libero,T-Shirt Folding; <50h)上,两个VLA 的表现相当
- 然而,在如Table Bussing 这样的大数据集上,他们发现基于FAST 的VLA 收敛速度显著更快,达到高性能所需的训练步骤比扩散变体的π0 少3x
- 此外,他们发现使用FAST tokenization训练的自回归π0 模型更紧密地遵循语言指令:在DROID 评估中,扩散π0 模型经常忽略语言指令,导致得分较低。作者将把对扩散和自回归VLA 语言跟随能力的详细研究留待未来工作
- 自回归VLA 的一个当前限制是其推理速度:
虽然使用扩散的π0 通常可以在NVIDIA 4090 GPU 上在100ms 内预测一秒的动作块
while π0 with diffusion typically predicts onesecond action chunks with in 100ms on an NVIDIA 4090 GPU
但使用FAST 分词的π0 模型每个块需要大约750 ms 的推理时间,因为它必须执行更多的自回归解码步骤(通常需要解码30-60 个动作tokens,而扩散π0需要10 个扩散步骤)
the π0 model with FAST tokenization needs approximately750ms of inference time per chunk, since it must perform more autoregressive decoding steps (typically 30-60 action tokens need to be decoded, vs. 10 diffusion steps for diffusionπ0)
并使用完整的2 B 参数语言模型骨干进行自回归解码(而扩散π0 使用的是300M 参数的” 动作专家”)
and use the full 2B parameter language model backbone for autoregressive decoding (vs. a 300M parameter “actionexpert” for diffusion π0)
虽然没有发现这种较慢的推理会对评估的静态操作任务的性能造成影响,但它确实使评估显著变慢
虽然有许多技术可以加速离散、自回归transformer模型的推理,这些技术在LLM 文献中被广泛使用(例如,推测性解码、量化、自定义推理内核等),但作者表示只能把对此的研究留待未来工作
对于上面第3点,我个人当时的第一反应是可以结合deepseek 试下,因为deepseek 的推理速度 还是比较快的「详见一文通透DeepSeek V2——通俗理解多头潜在注意力MLA:改进MHA,从而压缩KV缓存,提高推理速度_deepseek-v2-优快云博客」——此外,mamba也比标准transformer的推理速度 更快,所以出来了RoboMamba
// 待更
2.3.3 将FAST标准版的自回归VLAs扩展到大型机器人数据集
上文已经展示了FAST在单个机器人数据集上训练自回归VLAs的有效性,但它是否能扩展到训练灵巧的通用策略?
为了测试这一点,他们在上一节中使用的π0-FAST模型上训练了跨多种身体结构的机器人数据混合数据集,这是迄今为止最大的灵巧机器人操作数据集
它包括来自他们自己数据集的903M时间步。此外,训练混合数据集中有9.1%由开源数据集BRIDGE v2 [60]、DROID [38]和OXE [52]组成
作者将零样本性能与Black 等人[7] 任务中的扩散π0 模型进行比较,如下图图11 所示
总体而言,可以发现自回归π0-FAST 模型在性能上与扩散π0 模型相当,包括在最具挑战性的折叠衣物任务上,同时训练所需的计算量显著减少
同时在展示π0-FAST 执行折叠衣物任务的一个定性例子时,发现π0-FAST 的收敛速度明显快于扩散π0 模型:在上述评估中,该模型的训练所需GPU 小时数比Black 等人[7] 的π0 模型少5x
作者在下图图1 中展示了训练过程中多个检查点的机器人评估结果(在两个代表性任务:清理桌子和折叠T 恤上的平均性能)
- 结果清楚地表明π0-FAST 显著更快地实现了高性能。对于通常需要数千GPU 小时的最先进VLA 训练运行来说,计算需求减少5× 是非常显著的。
- 且在附录图15 中包含了所有任务的计算匹配π0 检查点的完整比较,发现相同的结论成立:由于更快的收敛,π0-FAST 明显优于计算匹配的π0
总之,作者已经证明了FAST tokenizer使得能够在复杂、灵巧的机器人任务上训练自回归VLA,而之前的tokenization方案在这些任务上完全失败
且作者还展示了当FAST 与诸如π0 等最先进的VLA 结合时,可以扩展到训练通用的、跨身体的策略,其性能可与最佳扩散VLA 相媲美,同时训练速度显著更快
更多,请继续参见
- π0及π0_fast的源码剖析——核心模块src的全面分析与解读:如何实现PaLI-Gemma、如何去噪生成动作
- 对开源VLA sota π0的微调——如何基于各种开源数据集、以及你自己的私有数据集微调π0(含我司的微调实践)
第三部分 pi0_fast的代码实现
3.1 src模块下的model模块
3.1.1 核心基础模型定义:`model.py`
这是模型框架的核心文件,定义了基础的抽象类和数据结构:
- `BaseModelConfig`: 所有模型配置的抽象基类
- `BaseModel`: 所有模型实现的抽象基类
- `Observation`: 保存模型输入的数据类
- `Actions`: 定义动作数据格式
- 提供了通用功能如`preprocess_observation`和`restore_params`
3.2 models/pi0_fast.py:π0-FAST的实现
Pi0的快速自回归变体:和Pi0一样都继承自`BaseModel`,使用`gemma_fast.py`而非`gemma.py`,采用自回归token生成方法而非扩散法
// 待更
3.3 models/gemma_fast.py
Gemma的优化变体,针对自回归推理场景,实现了更高效的KV缓存机制,其针对解码速度做了优化
// 待更
3.4 视觉模型siglip.py和其他支持模块:LoRA、tokenizer、vit的实现
Pi0和Pi0FAST代表了两种不同的实现策略,前者基于扩散模型,后者优化为自回归生成,但它们共享相同的基础视觉和语言处理组件
- `siglip.py`: 实现了视觉编码器,基于Vision Transformer (ViT),定义了位置编码、注意力池化等组件,支持不同大小的模型变体
- `lora.py` 实现了LoRA (Low-Rank Adaptation)微调方法
- `tokenizer.py`: 提供文本tokenization功能
- `vit.py`: Vision Transformer实现
// 待更