

Fast-in-Slow 论文精读:把高速执行嵌入慢速推理的统一 VLA
精读 Fast-in-Slow(FiS-VLA):通过共享 VLM 末端 Transformer、异步双系统、3D 点云与双感知协同训练,同时获得高频控制和语义推理能力。
1. 论文概述#
论文名称:《Fast-in-Slow: A Dual-System Foundation Model Unifying Fast Manipulation within Slow Reasoning》
作者:Hao Chen、Jiaming Liu、Chenyang Gu、Zhuoyang Liu、Renrui Zhang、Xiaoqi Li、Xiao He、Yandong Guo、Chi-Wing Fu、Shanghang Zhang、Pheng-Ann Heng
机构:香港中文大学、北京大学、AI²Robotics、BAAI
会议 / 期刊:NeurIPS 2025(论文页面标注为 arXiv 预印本)
论文链接:arXiv ↗ · 代码:CHEN-H01/Fast-in-Slow ↗ · 项目主页:fast-in-slow.github.io ↗

一句话总结#
【Paper】 FiS-VLA 不再给慢速 VLM 旁边外挂一个独立的 System 1,而是把 VLM 最后的若干 Transformer block 重新解释为快速执行模块;System 2 以低频率进行图文推理,System 1 以高频率融合当前图像、点云和机器人状态,通过 diffusion policy 输出连续动作。
核心贡献#
【Paper】
- 提出统一的 Fast-in-Slow 双系统 VLA:完整 VLM 保留 System 2 推理,末端 block 复用为 System 1,两个系统共享预训练知识和中间表示。
- 设计异步频率与异构输入:System 2 使用低频 2D 图像与语言,System 1 使用高频 2D、3D point cloud 和 proprioception;实验证明 1:4 频率比最合适。
- 提出 dual-aware co-training,把 System 1 的 diffusion denoising loss 与 System 2 的 autoregressive next-token loss 相加,避免只训练动作头造成推理能力遗忘。
- 在 RLBench 十项仿真任务和两种双臂机器人八项真实任务上取得 SOTA,同时在 action chunk=8 时达到 117.7 Hz 控制频率。
2. 背景与相关工作#
【Paper】 传统 VLA 直接让十亿级 VLM 自回归生成动作 token,具有较好的常识和语言泛化,却受限于低执行频率;一个 7B 模型在闭环控制中每次生成动作都要重新跑完整序列,难以及时响应接触和遮挡变化。
双系统路线借鉴 Kahneman 的认知模型:System 2 负责慢速、逻辑、上下文推理,System 1 负责快速、直觉式执行。CogACT、、GR00T 等方法通常将二者实现成“VLM + 独立 policy head”,有些还采用异步调度。【Analysis】 这类解耦的代价是:System 1 只看到 System 2 输出的压缩特征,自己没有互联网规模 VLM 的参数和知识,且两者之间需要额外的接口对齐。
FiS-VLA 的关键问题是:能否让 System 1 直接继承 System 2 的预训练表示,同时只计算少量末端 block,从结构上解决知识断裂和频率瓶颈?
3. 问题定义#
【Paper】 给定异构示教数据集 ,策略学习未来 步动作序列:
- Observation:System 2 接收语言指令和低频 RGB;System 1 接收高频 RGB、可选的单视角深度生成的 3D 点云,以及机器人状态。
- Action:Franka Panda 仿真为 7 DoF(、Euler 旋转 3 维、夹爪 1 维);AgileX 双臂为 14 DoF 末端位姿;AlphaBot 双臂为 16 DoF 关节位置。
- Embodiment / Dataset:RLBench 十项任务,每项 100 条轨迹;大规模预训练混合 37 个数据集,共约 86 万轨迹、3600 万帧;真实实验每个平台每任务 100 条 teleoperation 示教。
- 控制目标:在保持语义理解的同时,以较高频率输出连续、几何一致的动作 chunk。
4. 方法#
4.1 Overall Architecture#

【Paper】 输入先经过 SigLIP 与 DINOv2 视觉编码器;轻量 3D tokenizer 将点云变成 token 后复用视觉编码器。完整 32 层 LLaMA2-7B 形成 System 2,最后若干层从其中“切出” System 1;System 2 的中间 latent 周期性地条件化 System 1,System 1 则在每个控制周期用新观测生成动作。
4.2 核心模块#
双视觉编码器与 3D tokenizer#
- 输入 / 输出:224×224 RGB 分别经过 SigLIP(1024 维 token)和 DINOv2(1152 维 token),沿通道拼接;点云 先经三段 farthest-point sampling + kNN 局部聚合 + learnable linear layer,得到可送入共享视觉编码器的 token。
- 作用:SigLIP 提供语义对齐,DINOv2 保留局部空间细节;3D token 提供深度几何,帮助判断物体间距离和接触方向。
- 【Code】
models/vlms/pointcloud_processor/lift3d_dino.py实现 Lift3D 风格处理;prismatic.py中pointcloud_pos控制点云 token 放在 slow 或 fast 分支。代码默认实验将点云放到 fast 分支,避免低频 System 2 重复编码。
共享 LLaMA2 backbone#
- 输入 / 输出:语言与视觉 embedding 进入 32 层 decoder-only LLaMA2;System 2 输出中间层 hidden states,System 1 只运行末端 个 block 并预测噪声。
- 为什么需要共享:System 1 不再是随机初始化的小头,而是直接继承 VLM 的语义和视觉—语言对齐。消融显示只共享 2 个 block 已接近最佳,继续增加到 8 个收益趋于饱和。
- 【Code】
llm_middle_layer指定切分位置;prismatic.py::_handle_cache_forward先运行 层得到 slow cache,再运行 层完成 fast 推理。
条件扩散动作头#
- 输入:System 2 latent、高频图像/点云/状态、扩散时间步 、加噪动作 。
- 输出:与动作序列同形状的噪声预测,经过反向扩散得到连续 action chunk。
- 辅助投影器:vision-language projector、proprioception MLP、timestep embedder、noised-action embedder 与 final layer 都是轻量 MLP;因此高频路径只需运行末端 Transformer 和动作头。
4.3 关键公式#
逆扩散训练目标#
【Paper】 给真实动作序列 加入 ,随机采样 :
这里 是 System 2 的低频 latent 与 System 1 的高频多模态条件, 是噪声日程, 是 fast 路径参数。
双感知协同损失#
【Analysis】 第一项塑造连续控制能力,第二项把完整 LLM 拉回离散动作或语言计划的 next-token 任务;两者共同更新共享参数,形成“动作执行不牺牲推理”的正则化。
4.4 Training#
【Paper】 先从 Prismatic VLM 初始化,再用 37 个开放机器人数据集进行约 86 万轨迹、五 epoch 的预训练(预训练阶段仅使用单视角 RGB);下游再在 RLBench 或自采集真实数据上微调。仿真微调使用 AdamW、8 张 A800、300 epoch;扩散步数 。
【Code】 train.sh 展示了 async 模式、llm_middle_layer=30、slow_fast_ratio=1:4、pointcloud_pos=fast、action_chunk=1、repeated_diffusion_steps=4 和 lang_subgoals_exist=true 的配置。models/vlas/fisvla.py::forward 对 batch 重复采样噪声和时间步,调用 VLM 得到 noise_pred,以均方误差计算 fast loss;AR loss 通过同一 VLM 的生成路径保留。
- Given 从 Prismatic VLM 初始化完整 LLaMA2、视觉编码器与投影器
- 为 System 2 构造语言 + 低频 RGB(可选点云)输入,获得中间 latent
- 为 System 1 注入高频 RGB、点云、proprioception,并随机采样 与高斯噪声
- 计算 的噪声回归损失,同时计算 的 next-token 交叉熵
- 最小化 ,更新共享 block 与动作头
- return 保存验证集最佳 checkpoint,用于异步闭环推理
4.5 Inference#
【Paper】 System 2 每 个控制周期运行一次,缓存中间 latent;System 1 在每个周期读取最新 RGB、点云和状态,以缓存 latent 为条件做扩散采样并输出 action chunk。论文在 action chunk=8、1:4 频率比下报告 117.7 Hz;仿真表格中的 chunk=1 频率为 21.9 Hz。
【Code】 scripts/sim.py 用 slow_cnt % slow_fast_ratio == 0 触发 slow_system_forward,其余周期调用 fast_system_forward。predict_action 支持 DDPM 或 4/6/8 步 DDIM,随后按数据集统计量反归一化,并把夹爪维度离散化为开 / 闭。
- for 每个控制时刻
- 若 ,运行完整 System 2,更新 latent 与 KV cache
- 将最新高频观测送入 System 1 的末端 Transformer block
- 从高斯噪声开始执行反向扩散,得到
- 反归一化并执行当前动作;下一周期继续复用剩余 chunk
- end for
4.6 代码实现对照#
【Code】 官方仓库的实现入口和论文模块基本对应:
| 论文概念 | 代码位置 | 实际行为 |
|---|---|---|
| FiS-VLA 封装 | models/vlas/fisvla.py | 负责 checkpoint、扩散训练、动作反归一化与推理模式切换 |
| 双系统 VLM | models/vlms/prismatic.py | _prepare_multimodal_inputs 组织 slow/fast token,llm_middle_layer 切分层数 |
| 扩散头 | models/diffusion/* | x_embedder、t_embedder、final_layer 预测噪声 |
| 异步调度 | scripts/sim.py | slow-fast-ratio 控制 System 2 重算周期 |
| 训练配置 | train.sh, conf/vla.py | async、点云位置、AR loss、action chunk 等超参数 |
【Analysis】 论文把 System 1 描述为“最后几层”,而代码通过 llm_middle_layer 精确指定切分点;因此共享 block 数并非固定架构常数,而是可在实验中调节的工程旋钮。
5. 实验#
5.1 Experimental Setup#

【Paper】 仿真在 CoppeliaSim 的 RLBench 上测试 10 项任务,每项 100 条轨迹,输入单视角 RGB 与 1024 点点云;真实实验使用 AgileX 和 AlphaBot 两种双臂平台,每项任务采集 100 条三视角 teleoperation 示教。评估均为 20 次 rollout,仿真重复三次并报告均值和方差。
5.2 Main Results#
仿真结果(10 任务平均成功率 / chunk=1 频率):
| 方法 | 平均成功率 | 推理频率 |
|---|---|---|
| ManipLLM | 38% | 2.2 Hz |
| OpenVLA | 40% | 6.3 Hz |
| 55% | 13.8 Hz | |
| CogACT | 61% | 9.8 Hz |
| FiS-VLA | 69% ± 3% | 21.9 Hz |
【Paper】 FiS-VLA 比 CogACT 高 8 个百分点,比 高 14 个百分点,并在 10 项任务中的 8 项取得最高或并列最高成功率。真实世界中,AgileX 平均 68%( 为 59%),AlphaBot 平均 74%( 为 61%)。
5.3 Ablation Study#

【Paper】
- 共享 block 数:从 1 增至 8 时性能提升,但约 2 个 block 后趋于饱和,说明少量末端层即可承载有效执行能力。
- System 1 输入:仅 latent 最弱;加入 proprioception、2D 图像、3D 点云后逐步提升,点云对空间关系尤其关键。
- 频率比:在 1:1 到 1:8 中,1:4 达到最佳折中;过快更新 System 1 会缺乏语义指导,过慢则浪费高频观测。
- 训练目标:去掉 后成功率从 69% 降到 62%,验证 AR 保留项对协同至关重要。
5.4 Generalization#

【Paper】 在“换物体、复杂背景、光照扰动”三种测试中,FiS-VLA 的下降幅度均小于 。例如 AlphaBot 的未见物体任务成功率从 80% 降至 65%(下降 19%), 从 65% 降至 40%(下降 38%);复杂背景下 FiS-VLA 下降 25%,光照变化下仍保持 55%。
【Analysis】 这组结果把收益拆成两部分:System 2 用 VLM 的语义先验抑制背景干扰,System 1 用点云和即时 RGB 对局部几何做闭环修正;单独依赖任一系统都难以同时获得这两种鲁棒性。
6. 方法分析#
6.1 为什么有效?#
【Analysis】 FiS-VLA 的效率不是简单“减少层数”,而是利用时间尺度分工:昂贵的语义计算被缓存,廉价的末端层在每个周期读取新观测。由于末端层与 System 2 共享权重,latent 的语义坐标系不需要重新学习;点云和状态则补上 VLM 在精确控制上的几何与本体感缺口。
6.2 核心创新#
- 参数级嵌套:System 1 是完整 VLM 的子路径,而不是外接 policy head。
- 时间异步 + 模态异构:慢系统负责“任务是什么”,快系统负责“此刻怎么动”。
- 双感知协同训练:扩散回归与自回归语言 / 动作预测共同约束同一套 backbone。
- 轻量 3D 注入:点云先 token 化再复用视觉编码器,控制参数与延迟增长。
6.3 与已有方法的本质区别#
同步双系统(如 CogACT、)仍需在每个动作周期运行 VLM;异步外挂 policy(如 HIRt、Helix)虽能提速,却让 System 1 与 VLM 知识隔离。FiS-VLA 把“共享知识”和“异步执行”放在同一参数图中,因而同时改变了接口、调度和训练目标。
6.4 关键假设#
- System 2 的中间 latent 在 个时间步内足以描述任务意图。
- LLM 末端 block 具有可迁移到动作生成的局部表示,而不必重写全部网络。
- 高频 RGB、点云和状态的采样延迟低于 System 2 重算周期。
- 扩散动作和 AR 监督在共享参数上不会产生不可调和的梯度冲突。
7. 局限性#
7.1 作者明确提出的局限#
【Paper】 共享 block 的数量和 System 1:System 2 协作频率目前是静态设定的;作者认为未来应根据任务难度和环境复杂度动态调整这两个因素。
7.2 自己分析得到的局限#
【Analysis】
- 论文主要报告单 GPU 上的串行异步推理;若部署在不同 GPU 或边缘硬件,KV cache、同步和通信开销可能改变最佳 1:4 比例。
- 3D 点云由单视角深度图构造,遮挡严重或深度噪声较大时,fast 分支的几何优势可能下降。
- 真实实验以每任务 100 条示教、20 次 rollout 为主,尚不足以覆盖长时程任务、动态障碍和安全约束;论文未报告系统性 sim-to-real 误差分析。
- 训练中扩散与 AR loss 使用等权相加;不同数据集或 embodiment 下是否需要自适应损失权重,论文未明确说明。
8. 启发与研究思考#
【Analysis】 FiS-VLA 给 VLA 设计提供了一个有价值的结构视角:高频控制不一定要另起炉灶,可能只需在已有 foundation model 的表示层中寻找“可复用的局部路径”。下一步值得研究:
- 用不确定性或接触事件触发动态频率,而不是固定 1:4;
- 根据点云质量、动作阶段动态选择 fast 输入模态;
- 用梯度投影或 loss weighting 缓解 diffusion 与 AR 目标的冲突;
- 在多 GPU、低功耗端侧和更长时程任务上重新测量共享层数与缓存策略。