Hana's Blog
FAST 论文精读:高效的 Vision-Language-Action 动作 TokenizationBlur image
Arxiv ID 2501.09747
幻觉翻译 2501.09747
publication pending

FAST 先用 DCT 把动作块变成稀疏频域系数,再用量化与 BPE 压缩成高信息密度 token,使自回归 VLA 能处理高频、灵巧操作;FAST+ 还能作为跨机器人通用 tokenizer。

推荐指数:
Website

1. 论文概述#

论文名称:《FAST: Efficient Action Tokenization for Vision-Language-Action Models》

作者:Karl Pertsch、Kyle Stachowicz、Brian Ichter、Danny Driess、Suraj Nair、Quan Vuong、Oier Mees、Chelsea Finn、Sergey Levine

会议 / 期刊:arXiv 预印本(2025)

论文链接arXiv

代码链接Physical-Intelligence/openpi

项目主页FAST

FAST 将高频动作压缩后输入自回归 VLA,并对比不同控制频率下的性能(论文 Figure 2)

一句话总结#

【Paper】 FAST(Frequency-space Action Sequence Tokenization)指出:高频控制数据的问题不是动作本身太复杂,而是逐维、逐时间步 binning 产生了大量高度相关的 token,使 next-token prediction 的边际学习信号趋近于零。它先用离散余弦变换(DCT)把动作块转换到频域,量化后再用 Byte Pair Encoding(BPE)压缩,最后让自回归 VLA 只预测少量高信息密度 token。

核心贡献#

【Paper】

  1. 提出一种不需要训练神经网络的压缩式动作 tokenizer:DCT 负责把平滑动作集中到低频系数,BPE 负责无损地合并稀疏系数序列。
  2. 在 20 Hz 的 Table Bussing、50 Hz 的 T-Shirt Folding 等高频任务上,FAST 让原本无法学习的自回归 VLA 取得有效策略;T-Shirt Folding 的平均 token 数从 700 降到 53。
  3. 发布在约 100 万条真实机器人动作块上训练的 FAST+ universal tokenizer,覆盖 single-arm、bi-manual、mobile 等 embodiment 与 joint / end-effector action space。
  4. 将 FAST 接入 π0\pi_0 后,π0\pi_0-FAST 在 10k 小时级跨机器人数据上达到接近 diffusion π0\pi_0 的表现,训练速度最高提升 5 倍,并首次展示 DROID 的完全 zero-shot 新场景语言指令控制。

【Analysis】 这篇工作真正改变的是 action representation,而不是 VLA backbone:它把“自回归模型是否能学会高频动作”转化为“每个 token 是否携带足够的新信息”。

2. 背景与相关工作#

【Paper】 自回归 VLA 把图像、语言和动作放到同一条 token 序列中,用 Transformer 做 next-token prediction。语言 token 天然经过 BPE 等压缩,连续机器人动作却常被直接按每个时间步、每个维度量化成 256 个 bin。对于长度为 HH、动作维度为 DD 的 chunk,这会产生 HDH D 个 action token。

这种做法在低频数据上尚可,但在高频数据上会产生两个连锁问题:

  1. 序列过长:1 秒、14 维、50 Hz 的动作块需要 700 个 token,训练显存和推理时延都随之增加。
  2. 边际信息过低:平滑轨迹在相邻时间步变化很小,给定前一个 token 后,下一个 token 几乎可以被复制出来。模型可能得到较低的 token loss,却没有学会真正的动作形状。

论文用一个 cubic-spline toy example 说明这一点:保持底层函数不变,只提高采样率,naive tokenization 的预测误差会急剧上升,模型最终退化为复制第一个动作;DCT tokenization 在不同采样率下仍保持稳定。

【Analysis】 这解释了为什么“更高频的数据”不一定带来更多可学习信息:如果 tokenization 把一个连续信号切成许多近似重复的符号,模型容量会被消耗在记忆局部相关性,而不是建模轨迹的低维结构。

3. 问题定义#

【Paper】 给定观测 oo,策略输出长度为 HH 的动作 chunk:

π(a1:Ho),atRD\pi(a_{1:H}\mid o), \qquad a_t\in\mathbb{R}^{D}

动作 tokenizer 定义一个映射:

Ta:a1:H[T1,,Tn],TiV\mathcal{T}_a: a_{1:H}\longrightarrow [T_1,\ldots,T_n], \qquad T_i\in\mathcal{V}

其中 nn 可以小于 HDH D,词表大小为 V|\mathcal V|。训练目标是只在动作 token 上最大化:

LAR(θ)=i=1nlogpθ(Tio,T<i)\mathcal{L}_{\mathrm{AR}}(\theta)=-\sum_{i=1}^{n}\log p_\theta(T_i\mid o,T_{<i})

论文覆盖的 Embodied AI 要素如下:

要素FAST 中的设定
ObservationRGB 图像、语言指令和 proprioceptive state;具体相机数量随任务而变
Vision / Languageπ0\pi_0 使用 PaliGemma-3B,OpenVLA 使用 Prismatic-7B
Action representation1 秒 action chunk,先归一化,再做 DCT、量化、BPE
Policy自回归 VLA,以 prefix-LM attention 预测动作 token
Embodimentsingle-arm、bi-manual、mobile;实验还包含静态机器人上的 Libero、DROID 等
Control frequency5–50 Hz 的公开与内部数据;DROID 评测为 15 Hz
DecoderBPE 逆变换、DCT inverse 与反归一化恢复连续动作

【Code】 当前 openpiFASTTokenizer 默认把 prompt 和离散 state 放在 prefix,把 FAST action tokens 放在 postfix;训练只对 postfix 的 token_loss_mask 计算 loss,推理时通过 extract_actions 解析 Action: ... | 区间并恢复动作。

4. 方法#

4.1 Overall Architecture#

FAST 动作 tokenization 流程:归一化动作块经过 DCT、量化、低频优先 flatten 与 BPE,得到压缩 token(论文 Figure 3)

【Paper】 整体数据流是:action chunk → quantile normalization → DCT → scale-and-round → low-frequency-first flatten → BPE → action tokens;解码按相反方向执行,再将 token 拼回 VLA 的语言模型词表。

4.2 核心模块#

Quantile Normalization#

  • 输入:每个动作维度的连续轨迹 a1:Hia^i_{1:H}
  • 输出:大致落在 [1,1][-1,1] 的归一化轨迹。
  • 做什么:用训练集第 1 和第 99 分位数映射到 [1,1][-1,1],对偶发 outlier 更稳健。
  • 为什么需要:不同机器人、不同 action space 的物理尺度差异很大;统一范围后,同一个 DCT scale 才能跨 embodiment 工作。

DCT Frequency Transform#

  • 输入:归一化后的每个动作维度时间序列。
  • 输出D×HD\times H 的频域系数矩阵 CC
  • 做什么:把轨迹表示为不同频率的 cosine basis;低频系数描述整体形状,高频系数描述急剧变化。
  • 为什么需要:平滑机器人轨迹的大部分能量集中在低频,频域表示天然比逐时间步表示更稀疏。

Scale-and-Round Quantization#

  • 输入:DCT 系数 CjiC^i_j 与尺度 γ\gamma
  • 输出:整数系数 Cˉji\bar C^i_j
  • 做什么Cˉji=round(γCji)\bar C^i_j=\operatorname{round}(\gamma C^i_j),用 γ\gamma 在重建误差和压缩率之间做 trade-off。
  • 为什么需要:BPE 需要离散整数序列;舍弃很小的系数会把大量近似零的频率分量变成可压缩模式。

Low-Frequency-First Flatten#

  • 输入:稀疏的 D×HD\times H 整数矩阵。
  • 输出:一维整数序列。
  • 做什么:按频率列优先排列,即先放所有动作维度的低频系数,再放更高频系数。
  • 为什么需要:自回归模型先预测低频系数,就先确定了整段动作的总体形状,rollout 更稳定;论文明确指出 flatten 顺序会影响训练。

BPE Compression#

  • 输入:flatten 后的一维整数序列。
  • 输出:词表大小固定的 dense action token 序列。
  • 做什么:学习高频共现的系数组合,把连续的零和重复模式合并。
  • 为什么需要:仅有 DCT 会留下大量重复的 0 token;BPE 进一步缩短序列,并让 action token 能复用 VLA 词表的离散接口。

【Paper】 FAST 只有两个主要超参数:rounding scale 和 BPE vocabulary size。单数据集实验默认使用 γ=10\gamma=10、BPE vocabulary size 10241024,作者称它们比 learned VQ/FSQ tokenizer 更容易调节。

4.3 关键公式#

DCT 表示#

对动作维度 ii 的长度 HH 序列,DCT-II 可写成:

Cji=αjt=0H1aticos[πH(t+12)j],j=0,,H1C^i_j=\alpha_j\sum_{t=0}^{H-1}a^i_t\cos\left[\frac{\pi}{H}\left(t+\frac12\right)j\right],\quad j=0,\ldots,H-1

其中 atia^i_t 是第 ii 个动作维度在时间 tt 的归一化值,CjiC^i_j 是第 jj 个频率系数,αj\alpha_j 是 DCT 的归一化因子。jj 越小,频率越低。

量化与压缩#

Cˉji=round(γCji),s=flattenlow-first(Cˉ)\bar C^i_j=\operatorname{round}(\gamma C^i_j),\qquad \mathbf{s}=\operatorname{flatten}_{\text{low-first}}(\bar C)

随后训练或加载 BPE 字典 Φ\Phi

[T1,,Tn]=BPE(s;Φ)[T_1,\ldots,T_n]=\operatorname{BPE}(\mathbf{s};\Phi)

其中 γ\gamma 越大,保留的重建细节越多、token 越长;Φ\Phi 只负责 lossless 地合并整数序列,不负责把动作映射到新的连续 latent space。

自回归 prefix-LM#

xx 表示图像、语言和 state 的 prefix,T1:nT_{1:n} 表示 FAST tokens:

p(T1:nx)=i=1np(Tix,T<i)p(T_{1:n}\mid x)=\prod_{i=1}^{n}p(T_i\mid x,T_{<i})

prefix 内部使用双向 attention,action postfix 使用 causal attention;因此模型可以同时看完整 observation,又必须按顺序生成动作 token。

4.4 Training#

【Paper】 训练阶段先对每个数据集的 1 秒动作块做 FAST tokenization,再把 action tokens 放入 VLA 的语言序列中。π0\pi_0 与 OpenVLA 均不冻结 backbone;图像通常为 224×224224\times224,state 以 256-bin 离散值作为输入。主要优化设置是 AdamW(β1=0.9,β2=0.95\beta_1=0.9,\beta_2=0.95)、learning rate 5×1055\times10^{-5}、1k steps warm-up、gradient clipping 1,以及 decay 为 0.999 的 EMA。

Algorithm 1 FAST VLA Training
输入:
图像、语言指令、proprioception、连续动作 chunk,以及 FAST 的 scale 与 BPE 字典
输出:
训练完成的自回归 VLA checkpoint
  1. Given 观测 oo 与动作块 a1:Ha_{1:H}
  2. 按训练集 q01/q99 将每个动作维度归一化到 [1,1][-1,1]
  3. 逐维计算 DCT,执行 scale-and-round,并按低频优先 flatten
  4. 用 BPE 字典将整数序列压缩为 action tokens
  5. 拼接 image tokens、语言 / state prefix、Action: 与 action tokens
  6. for 每个训练 batch
  7. 对 prefix 使用双向 attention,对 action postfix 使用 causal attention
  8. 只在 action token 位置计算 next-token cross-entropy
  9. 用 AdamW 更新 VLA 参数,并维护 EMA 权重
  10. end for
  11. return VLA checkpoint 与 tokenizer 配置

4.5 Inference#

【Paper】 推理时给定图像、语言和 state,模型以 greedy autoregressive decoding 生成 FAST tokens;双臂任务中作者发现温度 β=0.7\beta=0.7 有助于离开 home position。BPE 解码后做 inverse DCT 和反归一化,得到可执行的连续动作 chunk。

【Code】 openpi/src/openpi/models/tokenizer.pyextract_actions 先把 PaliGemma token 解码成字符串,截取 Action: | 之间的 token,再通过 _fast_tokenizer.decode(..., time_horizon, action_dim) 恢复动作。Pi0FAST.sample_actions 则实现 prefix KV-cache、逐步采样和最大 decoding steps 截断。

Algorithm 2 FAST VLA Inference
输入:
当前视觉观测、语言指令、state、FAST+ tokenizer
输出:
长度为 HH 的连续动作 chunk
  1. 将图像编码为视觉 tokens,并把语言 / state 组成 prefix
  2. prefill prefix 的 KV-cache
  3. while 未生成终止符且未达到最大长度
  4. 按 causal mask 预测下一个 action token(greedy 或设定温度采样)
  5. end while
  6. 解析 Action: ... |,执行 BPE decode 与 inverse DCT
  7. 按训练集统计量反归一化并执行动作 chunk

4.6 代码实现对照#

【Code】 官方 Physical-Intelligence/openpi 是论文之后公开的可运行实现,代码行为与论文的核心 tokenizer 一致,但将 tokenizer 与 PaliGemma / π0\pi_0 的训练接口具体化:

论文概念代码位置实际行为
FAST action tokenizersrc/openpi/models/tokenizer.py:FASTTokenizer从 Hugging Face 加载 physical-intelligence/fastAutoProcessor,将 action tokens 映射到 PaliGemma 词表末端并跳过 128 个 special tokens
Prompt / action 拼接src/openpi/models/tokenizer.py:tokenizeprompt、256-bin state 是 prefix;Action:、FAST tokens、`
Loss masksrc/openpi/transforms.py:TokenizeFASTInputstoken_ar_mask 区分 prefix-LM 与 causal 区域,token_loss_mask 只监督 postfix
自回归模型src/openpi/models/pi0_fast.py:Pi0FAST图像和 prefix 一次性 prefill,随后 KV-cache 逐 token 解码
DROID 配置src/openpi/training/config.py:pi0_fast_droidaction_dim=8、action_horizon=10,使用 DROID 数据 transform
FAST+ / specialist tokenizersrc/openpi/training/misc/roboarena_config.py默认可用 universal FAST+,也支持加载 KarlP/fast_droid_specialist

【Code】 这意味着“FAST”在论文中是通用的 action representation,而 pi0_fast 是把该 representation 接进 PaliGemma 语言模型的具体架构;不要把 DCT/BPE tokenizer 本身和完整 VLA backbone 混为一谈。

5. 实验#

5.1 Experimental Setup#

【Paper】 作者使用 π0\pi_0 与 OpenVLA 两种 VLA backbone,对比四类动作表示:naive per-dimension binning、FSQ、数据集专用 FAST、通用 FAST+。评测包含 Libero 仿真、Table Bussing(20 Hz)、T-Shirt Folding(50 Hz)、Grocery Bagging、Toast out of Toaster、Laundry Folding,以及 DROID(15 Hz)零样本新场景。

数据集动作维度 / 频率Naive 平均 tokenFAST 平均 token压缩倍数
BridgeV27 / 5 Hz35201.75×
DROID7 / 15 Hz105293.6×
Table Bussing7 / 20 Hz140285.0×
T-Shirt Folding14 / 50 Hz7005313.2×

5.2 Main Results#

不同 action tokenizer 在 Libero、DROID、Table Bussing 与 T-Shirt Folding 上的策略结果(论文 Figure 5)

【Paper】 主要结果有三层:

  1. naive tokenization 在高频 Table Bussing 与 T-Shirt Folding 上几乎无法学会有效策略;FAST 与 FSQ 都显著改善训练,FAST 在灵巧真实任务上通常更好。
  2. FAST+ 的策略表现接近数据集专用 FAST,说明 universal tokenizer 不需要为每个机器人重新训练 BPE 字典。
  3. DROID policy 可以在完全未见的桌面、背景、物体、视角和桌高上,仅通过自然语言 prompt 完成拾取、擦桌、开关抽屉等任务;论文称这是该数据集首次展示这种 zero-shot evaluation。

5.3 Ablation Study#

【Paper】 两个消融揭示了组件的作用:

  • Backbone independence:在 OpenVLA 的 T-Shirt Folding 上,把原本的 naive tokenizer 换成 FAST+ 后,策略重新获得可学习性,说明收益并不依赖 π0\pi_0 的特定骨干。
  • 去掉 BPE:仅保留 DCT 仍优于 naive,但大量重复 0 token 会稀释学习信号、延长自回归解码,rollout 明显变差。因此 DCT 负责“集中信息”,BPE 负责“把集中后的稀疏序列真正压短”。

【Analysis】 这个消融把“频域变换”和“序列压缩”拆开了:DCT 是 representation 的主要来源,BPE 则是让 representation 适合语言模型训练和推理的关键工程步骤。

5.4 Generalization#

\pi_0-FAST 与 diffusion \pi_0 在跨机器人数据混合上的 generalist policy 表现(论文 Figure 8)

【Paper】 在单任务比较中,π0\pi_0-FAST 在 Table Bussing 上约用 3 倍更少训练 steps 达到较高表现;在 Libero 与 T-Shirt Folding 等小数据集上两者相近。对 10k 小时级跨 embodiment 数据混合训练的 π0\pi_0-FAST generalist policy,其平均表现与 diffusion π0\pi_0 接近,但训练计算量更低。

单任务中自回归 \pi_0-FAST 与 diffusion \pi_0 的收敛与任务进度对比(论文 Figure 7)

【Paper】 代价也很明确:在 NVIDIA 4090 上,diffusion π0\pi_0 约 100 ms 生成 1 秒动作块,而 π0\pi_0-FAST 约 750 ms;后者通常要解码 30–60 个 action tokens,并使用完整的约 2B 参数语言模型,而 diffusion 只需约 10 个采样 steps 和更小的 action expert。

6. 方法分析#

6.1 为什么有效?#

【Analysis】 FAST 有效的核心不是“DCT 比 binning 更精确”,而是它改变了监督信号的统计结构:

  1. 高频采样下,相邻时间步的差异趋近于零;DCT 把这些重复变化投影到少数低频系数。
  2. 自回归模型先预测低频系数,相当于先确定动作 chunk 的全局形状,再补充高频细节。
  3. BPE 把零和常见系数组合合并,减少需要依次预测的位置,使每个位置携带更多条件信息。

因此,FAST 同时降低了序列长度和 token 间相关性,训练速度与策略质量都会改善。

6.2 核心创新#

【Paper】 创新可以概括为“compression-first action tokenization”:把语言模型领域的压缩思想迁移到连续机器人信号,并选择无需 learned encoder 的 DCT 作为前端,再用成熟 BPE 接入现有 VLA 词表。

【Analysis】 FAST+ 的重要性不亚于 FAST 本身:它把“每换一个数据集就重新 fit tokenizer”的额外步骤,变成一个可以直接加载的黑盒组件,降低跨 embodiment 训练的工程摩擦。

6.3 与已有方法的本质区别#

方法表示方式学习组件高频动作的主要问题
Naive binning每时间步、每维一个 bintoken 数随 HDH D 线性膨胀,强相关
FSQ / VQ 类学习 latent code需要训练 tokenizer调参和重建质量更复杂
FASTDCT 系数 + BPE只学习 BPE 词表需要处理 inference latency

【Analysis】 FAST 并没有消除动作的连续性,而是把连续性放到更适合建模的频域坐标中;它与 diffusion policy 的差别也不只是“离散 vs 连续”,而是 autoregressive decoding 是否能通过良好 tokenization 获得高效监督。

6.4 关键假设#

【Paper】 方法隐含或明确依赖以下假设:

  • 机器人动作在所用 chunk 内具有足够的平滑性,使低频系数集中主要信息。
  • 一个 1 秒 chunk 能同时表达有用的局部轨迹和可压缩的时间结构。
  • 低频优先的顺序对 rollout 稳定性有帮助。
  • 在训练混合中看到的动作统计足以让 FAST+ 泛化到未见 robot morphology、action space 和 control frequency。

【Analysis】 对极端接触、碰撞、快速反射等高频不连续动作,DCT 的能量集中可能变差;此时增大 γ\gamma 会保留细节,却又牺牲压缩率,说明 tokenizer 仍需与控制频率和任务动态共同设计。

7. 局限性#

7.1 作者明确提出的局限#

【Paper】

  • 实际 policy 实验主要集中在静态 manipulation robots;FAST+ 在 mobile、dexterous hand、humanoid 上的实验主要是离线压缩测试,尚未证明真实控制效果。
  • 自回归 π0\pi_0-FAST 推理明显慢于 diffusion π0\pi_0,动态任务可能因此受限。
  • 其他压缩算法、与 diffusion / non-autoregressive decoder 的组合,以及更系统的 autoregressive 与 diffusion VLA 对比留给未来工作。

7.2 自己分析得到的局限#

【Analysis】

  1. BPE 词表是离线学习的;当部署机器人动作分布远离训练混合时,压缩率和 token 频率可能同时下降,论文没有给出在线检测或重新 fit 策略。
  2. DCT 是全 chunk 变换,解码前需要预测足够多的 token;如果任务需要低延迟闭环或动作块长度动态变化,固定 1 秒 chunk 未必合适。
  3. 论文报告了平均成功率和压缩率,但没有充分拆解 tokenization 误差、控制器误差与视觉 / 语言误差各自对最终失败的贡献。
  4. 官方代码中的 max_token_len 是 padding 后的硬上限;当双臂或高细节动作超出上限时会截断 postfix,必须由使用者根据 action horizon 与 robot morphology 调整。

8. 启发与研究思考#

【Analysis】 FAST 给 VLA 研究的启发是:动作 tokenization 应像文本 tokenizer 一样被当作一等公民,而不是训练脚本里的预处理细节。后续工作可以沿几条线推进:

  • 根据任务动态自适应选择 DCT scale、chunk 长度和频率保留范围,而不是固定 γ=10\gamma=10 与 1 秒窗口。
  • 让 BPE 词表与 embodiment 条件联合建模,或使用可扩展的在线 / 分层 tokenizer,解决新机器人分布漂移。
  • 用 speculative decoding、quantization、small action head 或并行 token decoding 缩短 FAST 的推理时延。
  • 把频域动作表示与 diffusion、flow matching 或 masked parallel decoding 结合,探索“压缩 representation + 非自回归执行”的折中。
  • 在动态 locomotion、whole-body humanoid control 和高频接触操作上验证“低频先、 高频后”的生成顺序是否仍成立。
FAST 论文精读:高效的 Vision-Language-Action 动作 Tokenization
https://agusexp25.top/blog/paper-deep-dive-fast
Author 菊花花
Published at August 25, 2026