FAST基于频域压缩的通用视觉-语言-动作模型高效动作令牌化技术深度解析论文信息标题FAST: Efficient Action Tokenization for Vision-Language-Action Models会议arXiv:2501.09747v1 [cs.RO]单位Physical Intelligence, UC Berkeley, Stanford University代码https://pi.website/research/fastHuggingFace 模型库: physical-intelligence/fast论文https://arxiv.org/pdf/2501.09747.pdf一、引言自回归VLA的“高频死穴”视觉-语言-动作VLA模型是当前通用机器人的核心技术路线之一把预训练大模型的语义能力迁移到机器人控制靠语言指令就能驱动机器人完成各种任务。但长期以来自回归架构的VLA比如RT-2、OpenVLA一直有个难以突破的瓶颈在高频灵巧操作任务上几乎学不动。问题的根源不在模型大小也不在数据量而在最基础的动作令牌化Action Tokenization环节。传统方案采用“逐维度、逐时间步分箱”的朴素离散化方法把连续动作切成256个离散档位。在5Hz、10Hz的低频抓取任务上还能凑合一旦到了50Hz的叠衣服、拧瓶盖这类灵巧任务动作序列长度暴涨相邻时间步的动作几乎一模一样自回归模型的“预测下一个token”目标就变得毫无信息量——模型不用学任何规律直接复制上一步的token就能拿到极低损失最终陷入局部最优啥也学不会。本文提出的FASTFrequency-space Action Sequence Tokenization就是针对这个痛点的解决方案。它借鉴JPEG图像压缩的思路先通过离散余弦变换DCT把时域动作信号转到频域集中能量、去除冗余再配合字节对编码BPE做无损压缩把原本几百个token的动作序列压缩到几十个。最终效果非常亮眼自回归VLA第一次能稳定学习50Hz的灵巧操作任务性能追平扩散架构的VLA搭配π₀模型在1万小时的跨体数据集上预训练性能和原版扩散π₀持平训练速度提升5倍训练出的DROID策略首次实现了完全 unseen环境下的零样本泛化换个学校的实验室也能直接干活。图1展示了FAST带来的训练效率提升图1π₀-FAST与扩散版π₀的训练收敛速度对比。在达到同等任务性能的前提下FAST方案训练速度提升可达5倍。出处原文Figure 1通俗解释传统动作令牌化就像让你逐像素临摹一幅画分辨率越高越费劲而且相邻像素几乎一样画着画着就开始机械复制根本抓不住整体形状。FAST就像先提取轮廓和主要色块不管分辨率多高都能用很少的信息抓住核心动作模型学起来又快又准。二、追根溯源为什么朴素分箱在高频下彻底失效2.1 问题形式化定义我们的目标是训练策略π(a1:H∣o)\pi(a_{1:H} | o)π(a1:H​∣o)给定观测ooo输出长度为HHH的未来动作序列动作chunk。动作令牌化的本质是定义一个连续到离散的映射Ta:a1:H→[T1,T2,...,Tn] T_{a}: a_{1:H} \to [T_1, T_2, ..., T_n]Ta​:a1:H​→[T1​,T2​,...,Tn​]符号逐一解释TaT_aTa​动作令牌化映射函数输入连续动作输出离散令牌序列a1:Ha_{1:H}a1:H​长度为HHH的连续动作chunk每个时间步包含∣A∣|A|∣A∣个动作维度比如关节角度、夹爪开度、底盘速度T1,T2,...,TnT_1, T_2, ..., T_nT1​,T2​,...,Tn​输出的离散令牌序列每个令牌来自大小为∣V∣|V|∣V∣的固定词表nnn令牌总数随动作内容变化和文本分词的变长特性一致传统朴素分箱方案的做法很直接每个时间步、每个维度单独离散化均匀切成N256N256N256个区间。最终token总数为H×∣A∣H \times |A|H×∣A∣和时间步长成正比。2.2 玩具实验频率越高误差越离谱为了直观验证tokenization的影响论文做了一个极简的对照实验让自回归Transformer预测一条三次样条曲线其他条件完全不变只改变曲线的采样频率。结果如图3所示图3不同采样频率下的预测误差对比。左朴素分箱方案随频率升高误差急剧上升最终退化为复制初始值右基于DCT的FAST方案在所有采样频率下都保持稳定的低误差。出处原文Figure 3可以看到朴素分箱方案采样率从25升到800预测误差指数级上涨到最后模型直接摆烂——输出一条水平线完全复制第一个点的值。DCT方案不管采样率多高预测误差都很低曲线拟合得非常好。2.3 底层逻辑边际信息量归零自回归模型的训练目标是“给定前面所有token预测下一个token”学习信号的强度和下一个token的边际信息量成正比。对于平滑的动作信号采样频率越高相邻两步的差异就越小。当频率高到一定程度下一个token几乎和上一个完全一样边际信息量趋近于0。模型不用学任何运动规律直接把上一步的token抄过来就能拿到极低的损失最终卡在很差的局部最优里。这也解释了为什么OpenVLA在低频的BridgeV2数据集上表现不错但到了频率更高的DROID数据集就训不动——不是模型不行是tokenization拖了后腿。通俗解释这就像你听0.5倍速的慢歌每个字都清晰可辨你能轻松接上下一句歌词但如果加速到10倍速每个字都和上一个粘在一起你根本听不出区别只能瞎蒙。自回归模型在高频动作上遇到的就是这个问题。三、FAST核心算法频域压缩熵编码的组合拳3.1 核心设计思路FAST的核心洞察很朴素连续动作信号冗余度极高先压缩再令牌化。机器人的动作大多是平滑的不会突然跳变时域上相邻点高度相关。而频域变换能把能量集中在少数低频系数上高频分量都是细微抖动大部分可以舍弃。这和JPEG压缩图片的原理一模一样人眼对低频的色彩、轮廓敏感对高频细节不敏感丢掉高频信息几乎不影响观感还能大幅压缩体积。FAST把这个思路搬到了动作信号上用时域压缩去除冗余让每个token都携带足量信息自回归模型才能真正学到东西。3.2 完整流水线详解FAST的完整处理流程如图4所示一共5步所有步骤都可逆解码速度极快图4FAST动作令牌化完整流程。从归一化的动作chunk出发经DCT频域变换、系数量化、低频优先展平、BPE压缩最终输出稠密的动作令牌。出处原文Figure 4步骤1分位数归一化首先对每个动作维度做归一化用训练集的1%和99%分位数把数值映射到[−1,1][-1, 1][−1,1]区间。用分位数而不用最大最小值是为了抗离群点避免偶尔的异常动作把整个归一化范围拉偏统一到相同区间也方便跨机器人、跨数据集的混合训练。步骤2逐维DCT变换对每个动作维度单独做离散余弦变换DCT-II把时域信号转到频域。低频系数对应动作的整体趋势、大的运动轨迹是核心信息高频系数对应细微抖动、噪声占比很小可以压缩。变换之后大部分系数都接近0能量集中在前几个低频分量上天然具备了稀疏性。步骤3系数量化把DCT系数乘以缩放因子γ\gammaγ后取整完成连续到离散的转换。γ\gammaγ是唯一的核心超参数越大精度越高、token越多越小压缩率越高、精度越低论文默认用γ10\gamma10γ10在重建精度和压缩率之间取得了很好的平衡。步骤4低频优先展平把∣A∣×H|A| \times H∣A∣×H的系数矩阵展平成一维向量这里有个关键设计按频率维度优先排列先放所有动作维度的第0阶低频系数再放第1阶依次类推。这么设计是为了适配自回归从左到右的预测顺序模型先预测所有维度的整体运动趋势再逐步补充细节和人类做动作的逻辑一致策略部署时更稳定。步骤5BPE无损压缩量化后的系数非常稀疏大部分都是0直接当token用还是很浪费。因此论文再用字节对编码BPE做一次无损压缩合并频繁出现的系数组合把大量重复的零值合并成单个token最终生成固定大小的词表可以直接替换VLM词表里的低频token不用改模型结构。通俗解释这一步就像把文章里反复出现的“的”“了”“是”合并成更短的符号进一步压缩篇幅而且完全不损失信息。BPE是大语言模型的标准操作这里直接复用兼容性拉满。3.3 重建精度与压缩率的权衡所有离散化方案都存在“压缩率”和“重建精度”的权衡论文对比了FAST、朴素分箱、FSQ三种方案在不同数据集上的表现如图12所示图6不同令牌化方案的压缩率-重建精度权衡曲线。FAST在高精度区域优势显著更适合对控制精度要求高的机器人任务。出处原文Figure 6结论很明确低精度、高压缩率场景下FSQ等学习式量化方法略有优势高精度区域机器人控制的核心需求FAST的表现远超其他方案能用更少的token达到更高的重建精度。四、FAST开箱即用的通用动作令牌化器如果每次换数据集都要重新训BPE词表还是有点麻烦。论文直接放出了FAST一个在百万级真实机器人轨迹上预训练好的通用动作令牌化器拿来就能用不用自己训。4.1 训练数据FAST在约100万条1秒动作chunk上训练数据覆盖极其全面机器人形态单臂、双臂、移动操作臂、灵巧手、人形机器人动作空间关节空间、末端世界坐标系、末端相机坐标系控制频率从5Hz到60Hz全覆盖。所有动作统一补零到32维兼容不同维度的动作空间。4.2 极简调用方式官方提供了HuggingFace格式的封装三行代码就能完成令牌化fromtransformersimportAutoProcessor tokenizerAutoProcessor.from_pretrained(physical-intelligence/fast,trust_remote_codeTrue)tokenstokenizer(action_chunk)也可以在自己的数据集上继续微调生成专属tokenizernew_tokenizertokenizer.fit(custom_action_dataset)4.3 跨域通用性验证论文在14个完全没见过的数据集上测试了FAST的压缩率覆盖单臂、灵巧手、人形、自动驾驶等完全不同的领域结果如图8所示图8FAST通用令牌化器在各类未见数据集上的压缩倍率。所有场景下都能实现2倍以上压缩高频灵巧场景提升更显著。出处原文Figure 8所有数据集都实现了2倍以上的压缩高频灵巧场景甚至能到10倍以上。这说明FAST学到了通用的动作压缩规律不是只在某一类机器人上好用。通俗解释FAST就像一个万能压缩软件不管是文档、图片、视频还是安装包都能给你压得又小又准不用针对每种文件格式单独调参数开箱即用。五、全方位实验验证5.1 实验设置模型骨干主实验用π₀PaliGemma-3B消融实验用OpenVLAPrismatic 7B评测任务共7个覆盖仿真到真实、低频到高频、简单到复杂Libero仿真多任务操作收桌子20Hz单臂UR512个物体分类收纳叠T恤50Hz双臂ARX衣物折叠装购物袋20Hz单臂UR5烤面包机取吐司50Hz双臂Trossen叠衣服50Hz双臂ARX从筐里取衣折叠堆叠DROID零样本泛化15Hz未见环境桌面操作对比方法朴素分箱、FSQ有限标量量化、数据集专属FAST、通用FAST5.2 压缩率对比首先看最直观的token数量对比在重建精度相当的前提下FAST的压缩效果如表1所示数据集动作维度控制频率朴素分箱token数FAST token数压缩倍率BridgeV275 Hz35201.75DROID715 Hz105293.6收桌子720 Hz140285.0叠T恤1450 Hz7005313.2表1朴素分箱与FAST的平均token数对比1秒动作chunk出处原文Table I结果分析频率越高压缩收益越大50Hz的叠T恤任务直接压缩了13.2倍从700个token降到53个效果极其显著。token数稳定单臂任务稳定在30个token左右双臂在60个左右和控制频率关系不大。这说明FAST提取的是动作的本质复杂度不是简单按采样率线性增长。5.3 策略性能对比不同令牌化方案训练出的策略实际表现如图6所示图12四类任务下不同令牌化方案的策略性能对比。朴素分箱在高频任务上完全无法收敛FAST全面领先通用版FAST和数据集专属版性能接近。出处原文Figure 12核心结论朴素分箱在高频任务直接失效20Hz的收桌子、50Hz的叠T恤任务上朴素分箱训练的策略任务进度为0完全学不会。FAST全面优于FSQ哪怕和学习式量化方法比FAST在灵巧任务上的表现也更好而且不需要额外训练量化网络简单得多。通用tokenizer够用FAST和在单个数据集上专门训练的FAST性能几乎持平说明通用版完全可以开箱即用不用额外调优。5.4 DROID零样本泛化突破FAST的另一个重磅成果是第一次在DROID数据集上训出了能纯零样本部署的策略。之前的DROID相关工作都只能在共训练环境或者微调后测试而用FAST训练的策略直接拿到三个完全没见过的大学校园实验室伯克利、斯坦福、华盛顿大学靠自然语言指令就能执行任务如图7所示图7DROID策略零样本跨环境测试。同一模型在三所不同大学的实验室中直接部署无需微调即可执行各类桌面操作任务。出处原文Figure 7策略能完成抓取放置、开关抽屉、开水龙头、擦桌子等基础操作哪怕失败的尝试也会正确伸向把手等目标位置行为逻辑非常合理。5.5 消融实验5.5.1 和模型骨干无关论文在OpenVLA上也做了测试原本在叠T恤任务上完全学不会的OpenVLA换上FAST tokenization之后性能暴涨。这说明FAST是通用方案不绑定特定VLA骨干任何自回归Transformer架构都能直接用。5.5.2 BPE模块的作用去掉BPE之后策略性能会下降但依然远好于朴素分箱。原因很直观DCT已经完成了核心的信息压缩但大量重复的零token会稀释学习信号还会拖慢推理速度。BPE把冗余的零值合并既提升了学习效率又加快了推理。5.6 和扩散VLA正面PK之前大家普遍认为“自回归VLA做不了灵巧任务扩散架构才是正道”FAST直接推翻了这个结论。论文把π₀-FAST和原版扩散π₀做了全面对比结果如图9所示图9自回归FAST方案与扩散π₀的单任务性能对比。小数据集两者持平大数据集FAST收敛更快且语言跟随能力更强。出处原文Figure 9具体对比小数据集50小时两者性能差不多打个平手大数据集FAST收敛速度快3倍用更少的训练步数就能达到高性能语言跟随能力FAST的自回归架构更听指令在DROID任务上扩散模型经常忽略语言描述得分更低推理速度扩散版更快RTX 4090上约100ms出结果FAST要约750ms因为需要自回归生成几十个token且用的是全量3B参数骨干。5.7 万小时级大规模预训练最重磅的缩放实验用π₀的完整10k小时跨体数据集9.03亿时间步覆盖7种机器人、68个任务训练π₀-FAST和原版扩散π₀比零样本性能。结果如图11所示图11大规模预训练后的零样本任务性能对比。π₀-FAST与扩散版π₀性能基本持平包括难度最高的叠衣服任务。出处原文Figure 11π₀-FAST在所有任务上都追平了扩散版π₀的性能哪怕是最难的叠衣服任务也不落下风。而训练所需的GPU小时数只有扩散版的1/5训练效率提升5倍。如果用相同的训练算力对比算力对齐π₀-FAST的性能会显著超过扩散版如图15所示图15相同训练算力下的性能对比。π₀-FAST凭借更快的收敛速度在同等算力下性能明显优于扩散VLA。出处原文Figure 15图10是π₀-FAST执行叠衣服任务的实拍效果动作流畅度和完成度都和扩散模型没有区别![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/666d9e9703b04979ade44c05c8b3711b.png#pic_center)图10π₀-FAST执行衣物折叠任务的实际效果。FAST让自回归VLA首次具备了复杂长时序灵巧操作的能力。出处原文Figure 10六、核心代码实现以下是FAST令牌化核心逻辑的简化Python实现覆盖归一化、DCT变换、量化、展平、解码全流程便于理解核心原理importnumpyasnpfromscipy.fftimportdct,idctclassFASTTokenizer:def__init__(self,action_dim7,chunk_len50,scale10.0,quantile_low0.01,quantile_high0.99): FAST动作令牌化器简化实现 Args: action_dim: 动作空间维度数 chunk_len: 动作chunk的时间步长度 scale: DCT系数量化缩放因子 γ quantile_low / quantile_high: 归一化分位数抗离群点 self.action_dimaction_dim self.chunk_lenchunk_len self.scalescale self.quantile_lowquantile_low self.quantile_highquantile_high self.norm_minNoneself.norm_maxNonedeffit_normalizer(self,action_dataset):在数据集上统计归一化参数all_actionsnp.concatenate([seq.reshape(-1,self.action_dim)forseqinaction_dataset],axis0)self.norm_minnp.quantile(all_actions,self.quantile_low,axis0)self.norm_maxnp.quantile(all_actions,self.quantile_high,axis0)defnormalize(self,actions):将动作映射到 [-1, 1] 区间normed2*(actions-self.norm_min)/(self.norm_max-self.norm_min)-1returnnp.clip(normed,-1,1)defdenormalize(self,normed_actions):反归一化回原始动作空间actions(normed_actions1)/2*(self.norm_max-self.norm_min)self.norm_minreturnactionsdefencode(self,action_chunk): 编码连续动作 → 量化DCT系数低频优先展平 Args: action_chunk: [chunk_len, action_dim] 原始连续动作 Returns: flat_coeffs: 展平后的整数量化系数 # 1. 归一化normedself.normalize(action_chunk)# 2. 逐维度做DCT-II变换dct_coeffsnp.zeros_like(normed)fordinrange(self.action_dim):dct_coeffs[:,d]dct(normed[:,d],type2,normortho)# 3. 缩放 量化取整quantizednp.round(self.scale*dct_coeffs).astype(int)# 4. 低频优先展平先遍历频率再遍历维度flat_coeffs[]forfreq_idxinrange(self.chunk_len):fordim_idxinrange(self.action_dim):flat_coeffs.append(quantized[freq_idx,dim_idx])returnnp.array(flat_coeffs)defdecode(self,flat_coeffs): 解码量化DCT系数 → 连续动作 Args: flat_coeffs: 展平的整数量化系数 Returns: action_chunk: [chunk_len, action_dim] 重建的连续动作 # 1. 恢复二维矩阵形状quantizednp.zeros((self.chunk_len,self.action_dim),dtypeint)idx0forfreq_idxinrange(self.chunk_len):fordim_idxinrange(self.action_dim):quantized[freq_idx,dim_idx]flat_coeffs[idx]idx1# 2. 反量化dct_coeffsquantized/self.scale# 3. 逐维度反DCTnormednp.zeros_like(dct_coeffs)fordinrange(self.action_dim):normed[:,d]idct(dct_coeffs[:,d],type2,normortho)# 4. 反归一化action_chunkself.denormalize(normed)returnaction_chunk# -------------------# 使用示例# -------------------if__name____main__:# 模拟 7维、50Hz、1秒动作chunktokenizerFASTTokenizer(action_dim7,chunk_len50,scale10.0)# 生成演示平滑动作tnp.linspace(0,2*np.pi,50)demo_actionnp.stack([np.sin(ti*0.5)foriinrange(7)],axis1)tokenizer.fit_normalizer([demo_action])# 编码coeffstokenizer.encode(demo_action)print(f原始动作形状:{demo_action.shape}(共{50*7350}个数值))print(f量化后系数长度:{len(coeffs)})print(f非零系数占比:{np.count_nonzero(coeffs)/len(coeffs):.1%})# 解码重建recon_actiontokenizer.decode(coeffs)msenp.mean((demo_action-recon_action)**2)print(f动作重建MSE:{mse:.6f})代码说明上述实现覆盖了FAST的核心DCT压缩与量化逻辑BPE词表训练部分因依赖词表优化过程未纳入简化版。实际工程使用建议直接调用官方HuggingFace实现包含完整的BPE编解码与预训练词表。七、总结与展望核心贡献找到了问题根源明确指出朴素分箱令牌化导致的“边际信息量归零”是自回归VLA在高频灵巧任务上失效的核心原因而非自回归架构本身不行。提出了简洁高效的方案FAST基于DCTBPE的频域压缩思路无需修改模型结构能直接接入任何自回归VLA大幅提升训练效率和最终性能。放出了通用开箱工具FAST通用令牌化器在百万轨迹上预训练覆盖多种机器人形态与动作空间拿来就能用。验证了自回归路线的潜力在万小时级预训练规模下自回归VLA能达到和扩散VLA持平的性能训练速度还快5倍为通用机器人基础模型提供了更高效的技术路线。局限与未来方向推理速度优化目前自回归推理比扩散慢未来可以复用大语言模型的加速技巧比如投机解码、量化、自定义推理核提升实时性。更多形态落地目前主要在桌面操作机器人上验证了策略效果灵巧手、人形机器人、自动驾驶等领域的实际策略表现还有待验证。架构融合探索压缩式令牌化和扩散架构并非互斥两者结合或许能同时兼顾训练效率和推理速度。更优压缩算法DCT只是起点小波变换、深度学习压缩等方案都有可能进一步提升压缩率和精度。总的来说FAST本质上补上了自回归机器人基础模型最关键的一块拼图——好的动作“分词器”。就像BPE让大语言模型实现了规模化腾飞一样高效的动作令牌化也会让通用机器人模型的训练效率迈上新的台阶。