← Home

FAST: Efficient Action Tokenization for Vision-Language-Action Models

Karl Pertsch、Kyle Stachowicz、Brian Ichter et al. · Physical Intelligence · UC Berkeley · Stanford · 2025-01-16 · arXiv:2501.09747

用离散余弦变换(DCT)+BPE 把高频机器人动作序列压缩成短 token,让自回归 VLA 第一次能在灵巧高频任务上训起来,并且比 diffusion VLA 训练快 5 倍。

问题

要解决什么:自回归 VLA(把动作离散成 token、走 next-token prediction 的那一类)在低频任务(BridgeV2/RT-1)上工作,但一上高频灵巧任务(T恤折叠 50Hz、收桌 20Hz、DROID 15Hz)就完全训不动。作者要找到根因并给出一个能用、能 scale、还省训练算力的动作 tokenization 方案。

为什么 prior work 不够:之前所有自回归 VLA(RT-2、OpenVLA)都用 per-dimension、per-timestep binning:每维每步独立分到 256 个 bin,导致一个 1 秒 action chunk 在 50Hz 双臂 14 维上要产生 700 个 token。问题是高频信号相邻 token 高度相关——'复制上一个动作'就能拿到极低的 next-token loss,模型陷入 trivial local optimum,真正该学的细微变化学不到。根因在 tokenization 让学习信号接近零,与模型容量无关。diffusion VLA(π0)绕开了 tokenization,但要训一个 300M 的 action expert + flow matching,训练算力贵;且作者发现它在 DROID 上会忽略语言指令。

输入 / 输出

输入

名称类型说明
imagesimage2~3 张 224×224:1 张第三视角 + 每臂 1 张腕部相机;各自过视觉编码器后 token 拼接
language instructiontext自然语言任务指令,用 LLM 自带的文本 tokenizer 编码
proprioceptive statevector本体感受状态,用 256-bin 离散化成整数,当作文本 token 拼进输入(输入端用 binning 没问题,因为不参与 next-token 学习目标)

输出

名称类型说明
action token sequencediscrete tokensFAST 压缩后的动作 token 序列(~30 tokens/秒/臂),覆盖 1 秒 action chunk
action chunkcontinuousdetokenize 后的 1 秒连续动作 chunk(维度=|A|,步数=控制频率)

控制频率:测试覆盖 5/15/20/50 Hz;chunk 固定 1 秒;推理 π0-FAST 单 chunk ~750ms(diffusion π0 ~100ms)

输入拼接 protocol

FAST 是一个 action 编解码器,而非序列拼接方案。它的'protocol'是 token 在主干里的进出流程:
<bos_vision>[VisEnc(img_3rd) ⊕ VisEnc(img_wrist1) (⊕ VisEnc(img_wrist2))]<eos_vision><bos_text>TokLLM(instruction) ⊕ TokLLM(proprio_binned)<eos_text><bos_action>[FAST(action_chunk_1s) = T_1, ..., T_n]<eos_action>
逐段解释:

...:多张图各自过预训练视觉编码器,把得到的 token 在序列维拼接(不是通道维)。DROID 设置:1 张第三视角 + 1 张腕部相机;训练时第三视角从 DROID 提供的两个外视角里随机选一个,所以推理能换视角、不需要相机标定。

...:语言指令 + proprio 都走 LLM 自己的文本 tokenizer。proprio 被预先 256-bin 离散化成整数串,再当文本 token 编码。作者强调:proprio 是输入,不参与 next-token loss,所以用 binning 完全没问题——问题只在'要预测的动作输出'。

...:这是 FAST 真正改造的地方。原始 1 秒 action chunk(维度 |A|、步数=控制频率)经过 [量化归一化 → DCT → scale-and-round → 按低频优先 flatten → BPE] 压成 n 个动作 token,直接覆盖 LLM 词表里最少用的 n 个 token(RT-2/OpenVLA 的标准做法)。推理时模型自回归吐出这串 token,再 detokenize 回连续动作。

训练 vs 推理差异:训练时 action chunk 是教师强制的 ground truth,FAST 编码一次性给出整串 target token;推理时模型从 起逐 token 贪心解码(双臂任务加温度 β=0.7 帮助跳出 home position),detokenize 后开环执行整段 1 秒 chunk。chunk 内是开环、不接新观测——这是和 DreamZero 闭环完全不同的控制范式。

数据集

数据规模备注
Libero(sim)270k samplesLibero-Spatial/Object/Goal/Long 合并训练,40k iter/40 epoch
Table Bussing1 datasetUR5 单臂 20Hz,~70 物体收桌;评估 12 物体未见配置
T-Shirt Folding~150 shirtsARX 双臂 50Hz 折 T 恤;最难高频灵巧任务
Grocery BaggingUR5 单臂 20Hz,7 物品装袋
Toast out of ToasterTrossen ViperX 双臂 50Hz,从烤面包机取吐司放盘
Laundry FoldingARX 双臂 50Hz,从篮取衣→摊平→折→叠放;最难的 long-horizon 任务
DROID75k episodes / 21M samplesFranka 单臂 15Hz,首次 zero-shot 部署 DROID policy 到完全未见环境
FAST+ universal tokenizer 训练集1M 1-秒 action chunks跨本体:单臂/双臂/移动/dex 手/humanoid/nav;joint/EEF/cam-frame 动作空间;5~60Hz;详 Table III

架构(摘要)

主干与结构

backbone:π0 (PaliGemma-3B VLM) 主干 + OpenVLA (Prismatic-7B) 消融

参数:π0 主干 3B;diffusion π0 的 action expert 300M;FAST 本身参数量≈0(只学一个 BPE 词表)

类型:autoregressive next-token VLA + 外挂 DCT-BPE 动作编解码器

关键组件

为什么这样设计

根因诊断:next-token 的学习信号正比于 T_i 给定 T_{1:i-1} 的边际信息量;高频信号相邻 token 高度相关,边际信息趋零,模型学到'复制上一步'就够低 loss。解法是先把动作压成低相关的短 token 序列,而非堆模型容量。DCT 是分析式、确定、几乎免训练的连续信号压缩(JPEG 同款),BPE 再把稀疏 DCT 系数无损压成定长词表——整个 tokenizer 只有两个超参(rounding scale γ、BPE 词表大小),远比 VQ-VAE/FSQ 这类学习式压缩简单可控。低频优先 flatten 让模型先预测决定整体形状的低频系数,autoregressive rollout 更稳。

数值 sense

vocab_sizeBPE 词表 1024(单数据集);FAST+ 也是 1024;动作 token 直接覆盖 LLM 词表里最少用的那些槽位
codebook_dimN/A(用 DCT 系数空间,非 VQ);动作 token 本身是 LLM 词表里的整数 ID
compression_ratiovs naive binning:BridgeV2 35→20 (1.75×)、DROID 105→29 (3.6×)、Bussing 140→28 (5.0×)、Shirt Fold 700→53 (13.2×);高频任务压缩比越大
tokens_per_chunkFAST 稳定在 ~30 tokens/秒/臂(双臂 ~60),几乎与频率无关——意味着它逼近了信号的内在复杂度
backboneπ0 = PaliGemma-3B;OpenVLA = Prismatic-7B;图像 224×224;vision encoder 独立编码后 token 拼接
action_chunk固定 1 秒;步数=控制频率(Bridge 5 步、DROID 15 步、Bussing 20 步、Shirt Fold 50 步);维度 |A| 从 7(单臂)到 40(humanoid H1)
rounding_scaleγ=10(DCT 系数乘 10 后四舍五入);单一超参控制 压缩↔重建 权衡
训练π0-FAST 在 10k 小时跨本体数据(903M timesteps + 9.1% Bridge/DROID/OXE)训练,5× fewer GPU hours 比 diffusion π0;DROID:240k iter × batch 256,3 epoch,8×H100 约 4 天;学习率 5e-5,EMA 0.999,AdamW
inference_latencyπ0-FAST ~750ms/chunk(需自回归解码 30~60 token,且用全 2B backbone);diffusion π0 ~100ms/chunk(10 步去噪 + 300M action expert)——这是 FAST 的主要短板

→ 详见 Architecture tab。

关键结果

指标最强 baselinesetup
token 压缩比 (Shirt Fold 50Hz 双臂)13.2× (700→53 tokens)naive binning 700 tokens1-秒 chunk,14 维 @50Hz
token 压缩比 (Bussing 20Hz 单臂)5.0× (140→28 tokens)naive 140 tokens1-秒 chunk,7 维 @20Hz
T-Shirt Folding 成功率 (50Hz 灵巧)FAST 可训出有效策略naive binning 0% (无法训)ARX 双臂,π0 backbone
Table Bussing 收敛速度FAST 3× fewer steps 达同等分diffusion π0UR5 20Hz,大数据集
π0-FAST vs diffusion π0 generalist 平均匹敌 (5 任务平均持平或略胜)diffusion π010k 小时跨本体数据,5 任务
训练算力5× fewer GPU hoursdiffusion π0π0-FAST vs π0 同性能点
compute-matched generalist 平均π0-FAST 明显胜出compute-matched diffusion π0同 GPU 小时,5 任务
OpenVLA + FAST (T-Shirt Fold)显著提升,可训OpenVLA 原生 binning (训不动)证明 FAST 与 backbone 解耦
推理延迟π0-FAST ~750ms/chunkdiffusion π0 ~100ms/chunkNVIDIA 4090;FAST 主要短板
DROID zero-shot 跨校园首次完全未见环境零样本原 DROID paper / OpenVLA 均只做 co-training/fine-tuneBerkeley/Stanford/U.Washington 三地

Insights

vs 同类工作

局限

可复现性

VLA action tokenization DCT BPE autoregressive high-frequency control π0 Physical Intelligence compression

FAST 架构详解

> 配套 card.json。FAST 是一个动作编解码器,而非新的神经网络——它外挂在自回归 VLA 主干上,决定"连续动作 chunk 怎么进出 token 序列"。下面先用 Mermaid 把编解码流程和与主干的接口画清,再用文字把每一步讲透。所有数字来自论文(页码标注)。

1. FAST 在系统里的位置(训练 vs 推理)

flowchart LR
  subgraph Inputs["VLA 输入侧(主干)"]
    IMG["图像 224×224<br/>(3rd + wrist)"]
    LANG["语言指令"]
    PROP["proprio state"]
  end

  subgraph VLM["VLM 主干<br/>PaliGemma-3B (π0) / Prismatic-7B (OpenVLA)"]
    ENC["视觉编码器<br/>每图独立编码后 token 拼接"]
    LLM["LLM token 序列<br/>视觉 token ⊕ 语言 token ⊕ proprio bin token"]
  end

  subgraph FAST["FAST 动作侧(本文核心)"]
    NORM["① quantile 归一化<br/>→ [-1,1]"]
    DCT["② 离散余弦变换<br/>(每维独立)"]
    QUANT["③ scale-and-round<br/>γ=10, 得稀疏系数"]
    FLAT["④ 低频优先 flatten"]
    BPE["⑤ BPE 压缩<br/>词表 1024"]
  end

  subgraph Out["输出"]
    ATOK["动作 token 序列<br/>~30 tokens/秒/臂"]
    ACT["detokenize<br/>→ 1s 连续动作 chunk"]
  end

  IMG --> ENC
  LANG --> LLM
  PROP -->|256-bin 离散化| LLM
  ENC --> LLM
  LLM -->|next-token prediction| ATOK
  ATOK -->|detokenize (BPE 逆→unflatten→inverse DCT→denormalize)| ACT

  NORM --> DCT --> QUANT --> FLAT --> BPE
  BPE -.->|训练时:覆盖 LLM 词表最少用 token| ATOK

训练时:对每个 1 秒 action chunk,FAST encoder 一次性把它编码成 n 个动作 token,作为 next-token loss 的 target;主干全参数 fine-tune,把"图像+语言+proprio → 动作 token"学下来。动作 token 直接覆盖 LLM 词表里使用频率最低的那些槽位(RT-2/OpenVLA 标准做法)。

推理时:主干从 <bos_action> 起逐 token 贪心解码(双臂任务加温度 β=0.7 帮助跳出 home position),吐出 n 个动作 token 后,FAST decoder 精确逆过程还原成 1 秒连续动作 chunk,开环执行整段 chunk——chunk 内不接新观测。

2. 输入/输出契约

方向名称类型说明
输入图像image 224×2241 张第三视角 + 每臂 1 张腕部;各自过视觉编码器后 token 拼接
输入语言指令textLLM 自带 tokenizer 编码
输入propriovector256-bin 离散化成整数串,当文本 token(输入侧,不进 loss)
输出动作 token 序列discreteFAST 压缩后 ~30 tokens/秒/臂,覆盖 1 秒 chunk
输出动作 chunkcontinuousdetokenize 后的 1 秒动作,维度=A,步数=控制频率

chunk 跨度:固定 1 秒;步数随频率变(Bridge 5 步、DROID 15 步、Bussing 20 步、Shirt Fold 50 步)。

控制频率:5~50 Hz 覆盖。

推理延迟:π0-FAST ~750ms/chunk(diffusion π0 ~100ms)。

3. 核心诊断:为什么 binning 在高频失败

这是 FAST 存在的理由(p3, Figure 3)。

binning 的机制:每个 action 的每个维度、每个时间步,独立分到 256 个 bin 之一。1 秒 50Hz 双臂 14 维 = 700 个 token。

为什么崩:autoregressive 的学习信号 = T_i 给定 T_{1:i-1} 的边际信息量。高频信号相邻 token 高度相关(50Hz 下相邻动作差值极小),边际信息趋零。模型只需"复制上一个 token"就能拿到极低 loss,陷入 trivial local optimum,真正的细微变化学不到。toy 实验(过 4 点的三次样条,采样率 25→800)干净证明:数据分布不变、模型容量不变,只换 tokenization,binning 误差随采样率陡升,FAST 全程平稳。

关键洞察:问题在 tokenization 让学习信号消失,与模型容量无关。所以解法是先压缩,而非堆参数。

4. FAST 五步流水线(p4-5, Algorithm 1)

① Quantile 归一化

把每个 action 维度的训练数据 1st/99th 分位映射到 [-1, 1]。用分位数而非 min/max 是为了抗离群点(大机器人数据集偶有异常动作)。这步还顺带让跨本体数据集(不同动作 scale)能统一 tokenization。

② 离散余弦变换 (DCT)

对每个 action 维度独立做 DCT,把时域信号转到频域。DCT 把信号表示成一组余弦基的加权和:低频系数承载整体形状,高频系数承载细节。因为机器人动作通常平滑,DCT 后大部分能量集中在少数低频系数,高频系数权重极小——这正是 JPEG 压缩同款性质。

③ Scale-and-round 量化

把 DCT 系数乘以 γ(默认 10)后四舍五入。高频小系数被量化成 0,得到稀疏整数矩阵。γ 是唯一控制"压缩↔重建"权衡的超参:γ 大压缩狠失真多,γ 小反之。论文在 6 数据集上扫过(Figure 12),证明 FAST 在宽 γ 范围内都稳。

④ 低频优先 flatten

把 |A|×H 的稀疏矩阵按"所有维的最低频系数先排,再所有维的次低频..."的顺序展平成 1D 整数序列。这步选择很重要:autoregressive 模型先预测决定整体形状的低频系数,后续高频系数条件充足时再预测,rollout 更稳。行优先(先把单维所有频率排完)会让模型在还没建立全局形状时就预测细节,不稳。

⑤ BPE 无损压缩

对 flatten 后的整数序列训一个 byte-pair encoding 词表(默认 1024),把频繁共现的系数组合 merge 成单 token。BPE 是 lossless、可逆,且产出的词表能直接并入 LLM 既有词表。这步把稀疏的 0 全压掉,把高频共现模式(如某维低频系数常组合出现)压成单 token。

整个流水线可逆:detokenize 时按 BPE 逆→unflatten→inverse DCT→denormalize,精确还原连续动作。

5. 数值 sense:这个 tokenizer 到底多大

出处
BPE 词表大小1024(单数据集与 FAST+ 通用版都用)论文 V-B
动作 token 表示LLM 词表里的整数 ID(覆盖最少用的槽位)论文 VI-A
压缩比 vs naiveBridge 1.75× / DROID 3.6× / Bussing 5.0× / Shirt Fold 13.2×论文 Table I (p7)
tokens/chunkFAST 稳定 ~30/秒/臂(双臂 ~60),与频率无关论文 Table I 注释
主干π0 = PaliGemma-3B;OpenVLA = Prismatic-7B论文 VI-A
图像224×224,每张独立编码后 token 拼接论文 Appendix C
action chunk1 秒;步数=频率;维度A从 7(单臂)到 40(humanoid H1)论文 Table III
rounding scale γ10(所有单数据集实验同值)论文 V-B
训练算力π0-FAST 用 5× fewer GPU hours 比 diffusion π0;DROID: 240k iter × batch 256, 3 epoch, 8×H100 约 4 天论文 VI-F, Appendix D
学习率/优化器lr 5e-5, AdamW (b1=0.9,b2=0.95), 无 weight decay, grad clip 1, EMA 0.999论文 Appendix C
推理延迟π0-FAST ~750ms/chunk;diffusion π0 ~100ms/chunk论文 VI-E

给听众的标尺:1024 词表、γ=10、~30 tokens/秒/臂、1 秒 chunk、3B 主干、8×H100 训 4 天(DROID)。压缩比是 FAST 最该记住的数字——它随频率涨,binning 是线性涨、FAST 是常数。

6. FAST+ 通用 tokenizer:把"每数据集一训"变"即插即用"

唯一需要训练的组件是 BPE 词表。作者在 1M 条 1 秒跨本体 action chunks 上预训练一个通用词表(单臂/双臂/移动/dex 手/humanoid/nav,joint/EEF/cam-frame,5~60Hz),发布成 HuggingFace AutoProcessor。

from transformers import AutoProcessor
tokenizer = AutoProcessor.from_pretrained(
    "physical-intelligence/fast", trust_remote_code=True)
tokens = tokenizer(action_chunk)

为什么通用化成立:FAST 压缩比与频率无关、稳定 ~30 tokens/秒/臂,说明它逼近了动作信号的内在复杂度,不依赖具体本体。实测 FAST+ 在所有未参与训练的数据集上都 ≥2× 压缩(Figure 8),policy 训练性能追平数据集专属 FAST(Figure 6)。

7. 与 diffusion VLA 的根本 trade-off

flowchart TB
  subgraph AR["自回归 VLA (π0-FAST)"]
    AR1["FAST 压缩<br/>~30 tokens/秒/臂"]
    AR2["主干全 3B 参数<br/>自回归解码 30~60 步"]
    AR3["训练快 5×<br/>语言跟随更好"]
    AR4["推理 750ms/chunk<br/>(慢)"]
  end
  subgraph DF["Diffusion VLA (π0)"]
    DF1["绕开 tokenization<br/>连续动作 + flow matching"]
    DF2["300M action expert<br/>10 步去噪"]
    DF3["训练算力贵 5×<br/>DROID 上忽略语言"]
    DF4["推理 100ms/chunk<br/>(快)"]
  end
  AR1 --> AR2 --> AR3
  AR2 --> AR4
  DF1 --> DF2 --> DF3
  DF2 --> DF4

关键结论(p10-11):在性能和算力效率上,π0-FAST 匹敌甚至超过 diffusion π0;在推理速度上,diffusion π0 仍快 7.5×。两条路线的 trade-off 被清晰量化——论文不声称某条绝对更优,只说"自回归路线重新有竞争力了"。

8. 与其它 tokenization 路线的对比

路线机制高频表现训练成本
naive binning (RT-2/OpenVLA)per-dim per-step 256 bin崩(700 tokens, 0 学习信号)0
FSQ / VQ-VAE学习式 vector quantization比 binning 好,输 FAST高(要训 encoder-decoder)
FASTDCT + scale-round + BPE最稳,高保真下优势大极低(只训 BPE 词表)
semantic reps (keypoints/lang)语义级动作表示样本高效但需 hand-designed 控制器

FAST 的位置:它不是"压得最狠"的(VQ 在低 fidelity 区更狠),是"高保真下仍能压且几乎免训练"的——这决定了它适合精细控制场景(Figure 12)。

Figure 1 p.1 key

门面图:FAST 让 π0-FAST 训得快又好

门面图:FAST 让 π0-FAST 训得快又好

原文 caption:We propose FAST, a simple yet effective approach for tokenization of robot action trajectories via time-series compression. FAST enables training of autoregressive VLAs that solve complex dexterous manipulation tasks. We use it to train π0-FAST, a generalist robot policy that matches the performance of the state-of-the-art π0 diffusion VLA while training 5x faster.

上方的训练曲线对比:π0-FAST(蓝)在 table bussing + T-shirt folding 平均分上比 diffusion π0 早很多达到同等水平,5× 训练加速。下方的灵巧任务可视化(折衣/收桌)说明 FAST 真让自回归 VLA 能做高频灵巧操作(作用远超'只压 token')。核心信息:一个看似工程的小改(tokenizer),把自回归 VLA 从'低频专属'推进到'匹敌 diffusion VLA 且更省算力'。

Figure 2 p.2 key

为什么需要 FAST

为什么需要 FAST

原文 caption:Left: FAST tokenization enables training of autoregressive Transformers for dexterous robot control via simple next token prediction. Right: FAST outperforms popular binning tokenization schemes, e.g., used in OpenVLA, particularly for high-frequency robot data.

右图是核心诊断:横轴控制频率(2/5/10/20Hz),纵轴策略分数。OpenVLA 风格 binning 在 2Hz 还行,频率一高分数崩到接近 0;FAST 全频段都稳。左图示意 FAST 让自回归 VLA 用 next-token 就能学灵巧任务。这张图直接对应论文的根因论断:binning 在高频失败源于 tokenization 让学习信号消失,与模型无关。

Figure 3 p.3 key

toy 实验:采样率 vs 预测误差

toy 实验:采样率 vs 预测误差

原文 caption:Effect of sampling rate on prediction performance. Models trained with binning produce increasingly poor predictions as we increase sampling frequency, due to strong correlation between consecutive tokens. Our FAST tokenization addresses the problem.

一个受控 toy 任务:预测过 4 个点的三次样条。横轴采样率(25→800 步)。上:MSE 曲线,binning(蓝)随采样率升高误差陡升,最后模型直接抄第一个动作(右下可视化);FAST 全程低误差。这是论文最干净的因果论证:数据分布不变、模型容量不变,只换 tokenization,结论完全不同。说明根因是 tokenization 而非数据或模型。

Figure 4 p.4 key

FAST tokenizer 流程(最重要)

FAST tokenizer 流程(最重要)

原文 caption:Overview of the FAST action tokenization pipeline. Given a normalized chunk of actions, we apply DCT to convert the signal to the frequency domain. We then quantize the DCT coefficients and use BPE to compress the flattened sequence into the final action token sequence.

全文最该看的图。5 步流水线:①归一化 action chunk(1st/99th 分位映射到 [-1,1]);②对每维单独做 DCT,转到频域;③scale-and-round 量化(γ=10),得到稀疏系数矩阵(大量 0);④按低频优先 flatten(所有维的最低频系数先排,再次低频...),让 autoregressive 先预测整体形状;⑤BPE 无损压缩成定长词表的 token。这张图同时回答'怎么编码、为什么可逆、超参在哪'。对应 Algorithm 1。

Figure 5 p.6 supportive

7 个评测环境

7 个评测环境

原文 caption:We test FAST across 7 evaluation environments: 6 real-robot tasks and 1 simulation environment. Tasks test VLA performance on highly dexterous tasks (Laundry Folding) and generalization (zero-shot DROID).

评测套件总览:Libero(sim)、Table Bussing(20Hz UR5)、T-Shirt Folding(50Hz ARX 双臂)、Grocery Bagging(20Hz UR5)、Toast(50Hz Trossen 双臂)、Laundry Folding(50Hz ARX 双臂,最难 long-horizon)、Zero-shot DROID(15Hz Franka,首次完全未见环境评测)。覆盖频率 5~50Hz、单臂/双臂、sim/real,说明结论不是单一 setup 的偶然。

Figure 6 p.8 key

四种 tokenizer 主结果

四种 tokenizer 主结果

原文 caption:Comparison of policy performance using different tokenization approaches. Compression-based tokenizers (FAST, FSQ) lead to substantially more efficient training than naïve binning. FAST leads to more effective training than FSQ, particularly on dexterous real-robot tasks. FAST+ matches dataset-specific tokenizers.

4 任务 × 4 tokenizer(Naive/FSQ/FAST/FAST+)主结果柱状图。Naive 在 50Hz Shirt Fold 和 20Hz Bussing 上完全打不出分;FSQ 比 Naive 好但仍输 FAST;FAST 在所有任务最强或并列;FAST+ universal tokenizer 几乎追平数据集专属 FAST。两个关键结论:①压缩是关键(不止 FAST 特殊);②FAST 比 FSQ 这种学习式压缩更稳更简单。

Figure 7 p.8 key

DROID zero-shot 三校园

DROID zero-shot 三校园

原文 caption:Evaluation environments of FAST policy trained on DROID. The same policy checkpoint generalizes robustly, performs simple table-top tasks zero-shot across three university campuses.

Berkeley/Stanford/U.Washington 三地部署同一 DROID policy 的照片。关键定性结论:这是 DROID 数据集第一次被训出'完全未见环境零样本'policy(原 DROID paper 和 OpenVLA 都只做 co-training/fine-tuning 评测)。policy 能做 pick-and-place、开关抽屉、开水龙头;失败 trial 也表现合理(如接近微波炉门把手)。

Figure 8 p.8 supportive

FAST+ 跨本体压缩比

FAST+ 跨本体压缩比

原文 caption:Universal tokenizer. We test the compression rate achieved by FAST+ vs naïve tokenization across diverse robot datasets, unseen during tokenizer training. FAST is effective across a wide range of robot morphologies, action spaces and control frequencies.

横轴数据集(单臂/dex/humanoid/nav 共 ~15 个,均未参与 FAST+ 训练),纵轴 naive/FAST 压缩比(对数)。FAST+ 在所有形态上都至少 2× 压缩,部分到 10×。证明 FAST+ 不是只在训练分布内有效,可作为通用黑盒 tokenizer。对应 Table III 的完整数据集列表。

Figure 9 p.9 key

FAST vs diffusion π0(单任务)

FAST vs diffusion π0(单任务)

原文 caption:Comparison of diffusion π0 to our π0 model with FAST decoding on single-task training. On small datasets both perform comparably. On large datasets (Table Bussing), FAST converges faster. In DROID, FAST follows language instructions better.

4 任务柱状图。小数据集(Libero/T-Shirt)<50h 两者持平;大数据集(Table Bussing)FAST 用 3× 更少步数达同等水平;DROID 上 FAST 分数更高——作者归因 diffusion π0 经常忽略语言指令(会直接抓物体),FAST 自回归 VLA 更听语言。这是 FAST 主卖点之一:不仅快,还在某些维度更好。

Figure 10 p.10 supportive

Laundry Folding rollout

Laundry Folding rollout

原文 caption:Rollout of π0-FAST on the laundry folding task. FAST tokenization enables autoregressive VLAs to perform complex, long-horizon, dexterous tasks that were impossible with previous tokenization schemes.

π0-FAST 在 laundry folding(从篮取衣→摊平→折→叠放)的 10 步 rollout。这是论文最难任务,以前 binning tokenizer 完全训不出。FAST 让纯自回归 VLA(无 diffusion)也能做多阶段灵巧操作。是'FAST 解锁新能力'的视觉证据。

Figure 11 p.10 key

通用 VLA:π0-FAST vs diffusion π0

通用 VLA:π0-FAST vs diffusion π0

原文 caption:Comparison of π0-FAST and diffusion π0 generalist policies. π0-FAST matches the performance of diffusion π0 while requiring significantly less compute for training.

5 个 generalist 任务平均柱状图。π0-FAST(自回归+FAST)在 T-Shirt/Bussing/Grocery/Toast/Laundry 平均上匹敌 diffusion π0,但训练用 5× 更少 GPU 小时。这是论文最终论点:FAST 让自回归 VLA 在'性能'和'算力效率'两个维度同时追平甚至超过 diffusion VLA。

Figure 12 p.16 supportive

压缩↔重建权衡曲线

压缩↔重建权衡曲线

原文 caption:Comparison of compression-reconstruction tradeoff on six training datasets. FAST performs well across a wide range of scales. Although less efficient than VQ-based tokenizers at low fidelities, it exhibits much better scaling to higher reconstruction fidelity, making FAST much more applicable to fine-grained control.

6 数据集上横轴 token 数、纵轴重建误差的权衡曲线。FAST 在低 fidelity 区不如 FSQ 极致压缩,但向高 fidelity 区 scaling 好得多——这对精细控制(高频灵巧任务)是决定性的。说明 FAST 的优势不在'压得最狠',而在'高保真下仍能压'。

Figure 13 p.17 supportive

5 个评测任务的初始配置

5 个评测任务的初始配置

原文 caption:Sampled initial configurations of evaluation tasks: Table Bussing / T-Shirt Folding / Grocery Bagging / Toast out of Toaster / Laundry Folding.

5 个真实评测任务的初始场景照片。给读者一个'评测难度'的直观感受:Bussing 12 物体混 trash/plates、T-Shirt 5 件不同色码、Grocery 7 物品入袋、Toast 双臂取吐司、Laundry 从篮取衣折放。是结果可信度的环境证据。

Figure 14 p.18 supportive

DROID 定量评测场景

DROID 定量评测场景

原文 caption:Setups used for quantitative DROID evaluation. 16 tasks, 44 trials total per policy.

DROID 定量评测的 16 个任务/44 trial 的初始场景照片。配合 Table II 的任务清单(放勺入碗、关抽屉、擦白板等)。定义了 DROID zero-shot 评测的口径——完全未见环境、视角、物体,只靠自然语言 prompt。

Figure 15 p.18 key

compute-matched 对比

compute-matched 对比

原文 caption:Comparison of π0-FAST and compute-matched diffusion π0 generalist policies. π0-FAST clearly outperforms the diffusion VLA when trained with the same amount of training compute, due to its faster convergence.

5 任务 compute-matched 柱状图(两边用同样 GPU 小时)。π0-FAST 在 T-Shirt/Bussing/Grocery/Toast 平均上明显超过 compute-matched diffusion π0。这是 Figure 11 的补充论证:其含义是'同算力下 FAST 更强'(而非'FAST 用更少算力达到同等')——根因是收敛更快。

🎧 音频版

时长 18:03 · Edge TTS

FAST: Efficient Action Tokenization for Vision-Language-Action Models

2025-01-16,Physical Intelligence 的 Karl Pertsch 等人发布的论文,标题是 FAST: Efficient Action Tokenization for Vision-Language-Action Models。

开场:这篇论文真正要解决什么

FAST 是一个动作 tokenizer——决定"连续的机器人动作信号,怎么变成离散 token 喂给自回归 VLA"的那个组件。它不是一个新模型,也不是一个新的训练方法。但就是这么个看起来很工程的小东西,作者发现它才是自回归 VLA 在高频灵巧任务上完全训不动的根因。

问题长这样:自回归 VLA,也就是 RT-2、OpenVLA 那一脉,把动作离散成 token、走 next-token prediction,在低频任务上工作得不错——5Hz 的 BridgeV2、RT-1 都没问题。但一上高频灵巧任务,50Hz 的 T 恤折叠、20Hz 的收桌、15Hz 的 DROID,就完全训不动。同一套模型架构、同样的数据规模,低频能学,高频学不会。

diffusion VLA 的 π0 绕开了 tokenization,用 300M 的 action expert + flow matching 直接出连续动作,能跑高频,但训练算力贵,而且在 DROID 上还经常忽略语言指令。

作者要回答的问题是:自回归 VLA 在高频失败的根因到底是什么?能不能不换架构、不堆参数,就把这个根因修掉,让自回归路线重新有竞争力?

根因诊断:不是模型不够大,是学习信号被 tokenization 吃掉了

这是这篇论文最干净的一段论证,值得讲透。

自回归模型训练时,学的是"给定前面所有 token,预测下一个 token"。所以它的学习信号,正比于第 i 个 token 给定前面 i-1 个 token 的边际信息量——也就是这个 token 有多"出乎意料"。

现在看传统 binning 怎么做:每个 action 的每个维度、每个时间步,独立分到 256 个 bin 之一。一个 1 秒的 action chunk,50Hz、双臂 14 维,就是 50 × 14 = 700 个 token。问题是高频信号相邻时间步高度相关——50Hz 下相邻两个动作差值极小。这意味着什么?意味着第 i 个 token 给定第 i-1 个 token 的边际信息量趋近于零。"复制上一个动作"就能拿到极低的 next-token loss。

模型于是学到一个 trivial local optimum:直接抄上一步。它拿到了低 loss,但真正该学的细微变化一点没学。这就解释了为什么 binning 在高频崩——根因是 tokenization 把学习信号消灭了,与模型容量无关。

论文用一个非常漂亮的 toy 实验证明这点(Figure 3)。任务很简单:预测过 4 个随机点的三次样条。作者只改一个变量——采样率,从 25 到 800。数据分布不变、模型容量不变、训练步数不变,只换采样率。结果:binning 的预测误差随采样率升高陡升,最后模型直接抄第一个动作;FAST 全程平稳。这是论文最干净的因果论证:根因就是 tokenization,不是别的。

FAST 的解法:先把动作压成短序列,再 next-token

既然根因是相邻 token 太相关,解法就很直接:先把动作信号压缩成低相关的短 token 序列,再喂给自回归模型。

FAST 的全名是 Frequency-space Action Sequence Tokenization,五步流水线,对应 Figure 4,我按顺序讲。

第一步,quantile 归一化。把每个 action 维度的训练数据,1st 到 99th 分位映射到 -1 到 1 区间。用分位数不用 min/max,是为了抗离群点——大机器人数据集偶有异常动作。这步还顺带让不同本体的数据(动作 scale 不一样)能统一处理。

第二步,离散余弦变换,DCT。对每个 action 维度独立做 DCT,把时域信号转到频域。DCT 把信号表示成一组余弦基的加权和:低频系数承载整体形状,高频系数承载细节。因为机器人动作通常平滑,DCT 后大部分能量集中在少数低频系数,高频系数权重极小——这是 JPEG 压缩同款性质,不是作者发明的,是借来的。

第三步,scale-and-round 量化。把 DCT 系数乘以 γ(默认 10)后四舍五入。高频小系数被量化成 0,得到一个稀疏整数矩阵。γ 是唯一控制"压缩 vs 重建"权衡的超参。

第四步,低频优先 flatten。把 |A|×H 的稀疏矩阵展平成 1D 序列,但顺序很讲究:所有维度的最低频系数先排,再所有维度的次低频,以此类推。为什么这样?因为自回归模型要先预测决定整体形状的低频系数,等全局形状建立了再预测高频细节,rollout 才稳。如果按行优先(先把单维所有频率排完),模型在还没建立全局形状时就被迫预测细节,会乱。

第五步,BPE 无损压缩。对 flatten 后的整数序列训一个 byte-pair encoding 词表,默认 1024 大小。BPE 把频繁共现的系数组合 merge 成单 token,把稀疏的 0 全压掉。这步是 lossless、可逆的,产出的词表能直接并入 LLM 既有词表。

整个流水线可逆:detokenize 时 BPE 逆→unflatten→inverse DCT→denormalize,精确还原连续动作。

注意,整个 FAST 只有两个超参:rounding scale γ 和 BPE 词表大小。论文说都不敏感,所有单数据集实验都用同一组值。这跟 VQ-VAE、FSQ 这种学习式压缩比,简单太多了——那些要训一个 encoder-decoder 网络,超参敏感,重建质量还依赖数据集。

输入到底怎么拼成一条序列

FAST 不是一个序列拼接方案,它是一个 action 编解码器,外挂在 VLA 主干上。我把 token 在主干里的进出流程写成一条显式序列,你在脑子里能建出来。

序列大致长这样:开头是 <bos_vision>,里面是多张图——一张第三视角、每臂一张腕部相机,每张图各自过预训练视觉编码器,得到的 token 在序列维拼接(注意是序列维,不是通道维)。然后 <eos_vision>。接着 <bos_text>,里面是语言指令,加上 proprio 状态——proprio 被预先 256-bin 离散化成整数串,再当文本 token 编码进去。<eos_text>。最后 <bos_action>,这是 FAST 真正改造的地方,原始 1 秒 action chunk 经过五步流水线压成 n 个动作 token,<eos_action>

这里有几个坑要特别说清,不然容易误解。

第一,proprio 用 binning 完全没问题。作者专门强调这点。binning 在动作输出上崩,是因为动作输出要参与 next-token loss,高频让学习信号消失。但 proprio 是输入,不参与 next-token loss,用简单 binning 就够了。不要把"binning 在动作上崩"推广成"binning 哪里都不行"。

第二,动作 token 是直接覆盖 LLM 词表里最少用的那些槽位。这是 RT-2、OpenVLA 的标准做法,FAST 沿用。好处是不需要改 backbone 结构,任何预训练 autoregressive transformer 都能直接接 FAST。论文专门做了 OpenVLA 消融证明这点:把 OpenVLA 原生 binning 换成 FAST,T 恤折叠从训不动变成能训。这说明 FAST 和 backbone 是解耦的。

第三,训练和推理时 action 这段的形态不一样。训练时,action chunk 是教师强制的 ground truth,FAST 编码一次性给出整串 target token,模型学"看到图像+语言+proprio,吐出这串 token"。推理时,模型从 <bos_action> 起逐 token 贪心解码(双臂任务加个 0.7 的温度帮助跳出 home position),吐完 n 个 token 后 detokenize 成 1 秒连续动作,开环执行整段 chunk

这就是一个关键区别:FAST 的 chunk 内是开环的,1 秒动作执行期间不接新观测。这跟 DreamZero 那种闭环 KV-cache 替换完全不同。在需要中途纠错的动态任务上,开环 1 秒可能是个限制——论文没测高频动态任务,比如接球。

给你一个数值 sense:这套 tokenizer 到底多大

光说"1024 词表"可能没感觉,我把维度念细一点。

BPE 词表是 1024,单数据集实验和 FAST+ 通用版都用这个大小。动作 token 本身就是 LLM 词表里的整数 ID,覆盖那些最少用的槽位。

压缩比是 FAST 最该记住的数字。论文 Table I 给了四个数据集的对比,全部用 1 秒 chunk、对比相同重建精度下的 token 数。BridgeV2 是 5Hz 单臂 7 维,naive 35 个 token,FAST 20 个,压缩 1.75 倍。DROID 是 15Hz 单臂 7 维,naive 105 个,FAST 29 个,压缩 3.6 倍。Bussing 是 20Hz 单臂 7 维,naive 140 个,FAST 28 个,压缩 5 倍。Shirt Fold 是 50Hz 双臂 14 维,naive 700 个,FAST 53 个,压缩 13.2 倍。

看出规律了吗?频率越高、维度越多,FAST 的压缩比越大。但更关键的数字是这个:FAST 在所有数据集上稳定在每秒每臂约 30 个 token,几乎与频率无关。这说明什么?说明 FAST 逼近了动作信号的内在复杂度——它编码的是信息,不是冗余。而 binning 的 token 数随频率线性涨,它编码的是冗余。

主干方面,π0 用的是 PaliGemma-3B,3B 参数;消融实验用 OpenVLA,Prismatic-7B。图像输入 224×224,每张图独立过视觉编码器后 token 拼接。FAST 本身参数量约等于零,只学一个 BPE 词表。

action chunk 固定 1 秒,步数等于控制频率,维度 |A| 从单臂的 7 到 humanoid H1 的 40 都有。rounding scale γ 默认 10,所有单数据集实验同值。

训练规模:π0-FAST 在 10k 小时跨本体数据上训练,比 diffusion π0 少用 5 倍 GPU 小时。DROID 那个设置具体点:240k 迭代 × batch 256,跑 3 个 epoch,8 张 H100 大约 4 天。学习率 5e-5,AdamW 优化器,EMA 权重 0.999。

推理延迟是 FAST 的主要短板:π0-FAST 大约 750 毫秒一个 chunk,因为要自回归解码 30 到 60 个 token,还得用完整的 2B backbone。对比之下 diffusion π0 只要 100 毫秒——它只要 10 步去噪,外加只跑 300M 的 action expert。这个 7.5 倍的推理速度差距,是 FAST 用自回归换来的代价。

记住这套数字,后面听别的 VLA 论文时,可以拿它当标尺:1024 词表、γ=10、30 token/秒/臂、1 秒 chunk、3B 主干、8×H100 训 4 天。压缩比随频率涨,binning 线性涨、FAST 是常数——这是 FAST 最有信息量的一个数字。

FAST+:把"每数据集重训 BPE"变成"即插即用"

整个 FAST 只有一个需要训练的组件——BPE 词表。每个新数据集都要重训这个词表,虽然只要几分钟,但增加使用摩擦。

作者于是训了一个 FAST+,通用 tokenizer。在 100 万条 1 秒跨本体 action chunks 上预训练一个 BPE 词表,覆盖单臂、双臂、移动、dex 手、humanoid、nav,joint、EEF、cam-frame 各种动作空间,5 到 60Hz 各种频率。发布成 HuggingFace 的 AutoProcessor,三行代码就能用。

为什么通用化能成立?因为 FAST 的压缩比与频率无关、稳定 30 token/秒/臂,说明它逼近了动作信号的内在复杂度,不依赖具体本体。实测 FAST+ 在所有没参与训练的数据集上都至少 2 倍压缩,部分到 10 倍。而且 policy 训练性能追平数据集专属 FAST。

这点我特别想强调。FAST+ 的存在意义,可能比单个性能数字更有长期影响。它把"换个机器人就要重训 tokenizer"这个使用门槛拆掉了,让自回归 VLA 真正变成即插即用。这对整个 VLA 社区的 Adoption 是实打实的贡献。

关键结果:不仅赢,还在算力效率和语言跟随上赢

我挑几个有对照的数字。

压缩比:T 恤折叠 50Hz 双臂,13.2 倍,从 700 个 token 压到 53 个。这是最高的,因为频率高、维度多。收桌 20Hz 单臂,5 倍。压缩比随频率涨,但 FAST 的绝对 token 数稳定。

T 恤折叠成功率:FAST 能训出有效策略,naive binning 是 0——完全训不动。这是定性结论:FAST 解锁了 binning 完全做不了的任务。

收桌收敛速度:FAST 用 3 倍更少的训练步数达到 diffusion π0 同等水平。在大数据集上 FAST 收敛明显快。

π0-FAST vs diffusion π0 generalist:5 个 generalist 任务平均,π0-FAST 匹敌甚至略胜 diffusion π0,但训练用 5 倍更少 GPU 小时。这是论文最终卖点:性能追平、算力效率胜出。

compute-matched 对比:两边用同样 GPU 小时,π0-FAST 在 5 任务平均上明显胜出。这补充论证的含义是"同算力下 FAST 更强"(而非"FAST 用更少算力达到同等")——根因是收敛更快。

OpenVLA + FAST:把 OpenVLA 原生 binning 换成 FAST,T 恤折叠从训不动变成能训。证明 FAST 与 backbone 解耦,能移植到任何预训练 autoregressive transformer。

DROID zero-shot 跨校园:这是 DROID 数据集第一次被训出"完全未见环境零样本"policy。原 DROID paper 和 OpenVLA 都只做 co-training 或 fine-tuning 评测。FAST 训出的 policy 在 Berkeley、Stanford、U.Washington 三地部署,能做 pick-and-place、开关抽屉、开水龙头,失败 trial 也表现合理(比如接近微波炉门把手)。

推理延迟:750 毫秒 vs diffusion π0 的 100 毫秒。这是 FAST 必须承认的短板。

还有个有意思的观察:在 DROID 评测里,diffusion π0 经常忽略语言指令,直接伸手抓物体;π0-FAST 听语言。作者没深究原因,留作 future work,但这暗示自回归 VLA 的语言 grounding 可能比 diffusion VLA 更紧——这对很多应用是关键。

一个最值得记住的 insight

论文里有个判断,我建议你重点记:FAST 的压缩比与频率无关,稳定在每秒每臂约 30 个 token

这句话分量很重。它意味着两件事。第一,FAST 逼近了机器人动作信号的内在复杂度——不管你 5Hz 还是 50Hz、单臂还是双臂、关节空间还是末端执行器,1 秒动作的信息量是相对恒定的。第二,binning 的 token 数随频率线性涨,说明 binning 在高频下编码的全是冗余,不是信息。

这个 insight 给了 tokenization 设计一个非常清晰的方向标:好的动作 tokenizer 应该让 token 数与信号的内在复杂度挂钩,而不是与采样率挂钩。FAST 用 DCT 实现了这点,但它不一定是唯一解——任何把高频冗余搬走的压缩方法(包括未来的学习式方法)只要满足这条,理论上都能让自回归 VLA 在高频工作。这是论文最有普适意义的一个判断。

局限:别替它过度外推

论文自己承认的:推理慢,750 毫秒一个 chunk,diffusion π0 只要 100 毫秒。静态任务可接受,动态任务会是问题,论文专门点出这点留作 future work。还有只在静态操作器上做了真实 policy 评测,FAST+ 在 mobile、dex 手、humanoid 上只做了离线压缩测试,真实 policy 性能没验证。autoregressive vs diffusion 哪个 VLA 架构更优仍未定。

我们读出的:chunk 内开环执行 1 秒动作,不接新观测。这和 DreamZero 闭环 KV-cache 替换是完全不同的控制范式。在需要中途纠错的动态任务上可能受限——论文没测像接球这种高频动态任务,所以"FAST 让自回归 VLA 重新能打"这个结论,目前只在静态操作范围内成立。

γ=10 是个手调超参。论文说"不敏感",但只给了一组数据集上的扫描图,跨本体、跨任务的最优 γ 是否一致,没充分论证。

还有一点比较微妙:compression 是 lossy 的——量化丢高频。论文报告的压缩比是"comparable reconstruction accuracy"下的,但 reconstruction error 到 policy 性能的映射没给。高保真不等于高 policy 性能,这条链路论文留白了。这是 FAST 后续工作可以补的地方。

一句话收束

FAST 用一个几乎零参数的 DCT 加 BPE 编解码器,把高频机器人动作压成与频率无关的短 token 序列,让自回归 VLA 第一次能在灵巧高频任务上训起来,并在性能和算力效率上同时追平 diffusion VLA。它最有力的论证在跑分之外,是那个"压缩比与频率无关、稳定 30 token/秒/臂"——这把"好的动作 tokenizer 该长什么样"这个问题,给了一个非常清晰的方向标。