VLASH: Real-Time VLAs via Future-State-Aware Asynchronous Inference

Status: Preprint, arXiv v2 (2026-07-26)

Paper: https://arxiv.org/abs/2512.01031

GitHub: https://github.com/mit-han-lab/vlash

一句话总结: VLASH 不再让 VLA 根据“开始推理时已经过期的机器人状态”规划动作,而是利用上一段已经确定的动作,把机器人状态前推到新动作真正开始执行的时刻;再用时间偏移数据增强教会模型理解这一未来状态,从而在不增加推理步骤的前提下实现稳定的异步控制。


My Thoughts

这篇工作的关键并不是让 VLA 的一次 forward 更快,而是重新安排 推理与物理执行的时间关系

同步控制将模型延迟直接暴露为机器人停顿;朴素异步控制虽然把推理藏在动作执行之后,却让模型对着过去的状态预测未来要执行的动作。VLASH 的洞察是:未来环境画面确实未知,但在推理期间将要执行的动作已经由上一 action chunk 确定,因此未来的本体状态(proprioceptive state)是可以近似推演的

我认为这篇论文最值得把握的有三点:

  1. 异步不是简单地开两个线程。 如果不处理 prediction-execution misalignment,吞吐和响应变快并不等于闭环控制更好。
  2. VLASH 只预测可预测的未来。 它不构建完整 world model,只前推由已知动作决定的机器人自身状态,因此部署开销非常小。
  3. 反应速度与任务完成速度是两个指标。 异步执行主要把最大反应延迟从 \(D+2L\) 降到 \(2L\);动作量化才进一步缩短物理动作序列,使任务完成时间获得约 \(1.5\text{--}2.0\times\) 加速。

1. Motivation:VLA 为什么看起来总是“慢半拍”?

Vision-Language-Action Model(VLA)根据视觉观测、语言指令和机器人状态生成低层动作。为了避免每个控制周期都运行一次大模型,现代 VLA 通常采用 action chunking:一次推理生成一段未来动作,然后连续执行其中若干步。

设时刻 \(t\) 的环境观测为 \(o_t\),机器人状态为 \(s_t\),VLA policy 为

$$ \pi_\theta(A_t\mid o_t,s_t), $$

一次生成长度为 \(H\) 的动作块

$$ A_t=[a_t,a_{t+1},\ldots,a_{t+H-1}], $$

其中 \(H\) 是 prediction horizon。实际部署时通常只执行前 \(K\le H\) 步,再根据新观测重新推理;\(K\) 称为 execution horizon

1.1 同步推理:准确,但会停顿

同步流程严格串行:

获取观测 → VLA 推理 → 执行 K 步动作 → 再获取观测 → 下一次推理

如果一次推理耗时为 \(L\),机器人在推理期间没有新动作可执行,就会出现明显的 stop-and-go:动作块之间停顿,机械臂运动不连续;更严重的是,机器人执行旧动作块时也不会持续感知环境,因此很难及时响应突然移动的物体。

1.2 朴素异步推理:不停顿,但时间对不上

异步流程让两件事并行:机器人继续执行上一动作块,VLA 同时生成下一动作块。这样模型推理可以被物理执行时间隐藏,但引入了论文真正要解决的问题——预测区间与执行区间错位

模型在 \(t\) 时刻开始推理,希望前 \(K\) 个动作作用于

$$ I_t^{\mathrm{pred}}=[t,t+K). $$

若推理延迟相当于 \(\Delta\) 个控制步,新动作真正开始执行的区间却是

$$ I_t^{\mathrm{exec}}=[t+\Delta,t+\Delta+K). $$

也就是说,模型根据 \((o_t,s_t)\) 生成的动作本来未必错误,但这些动作到 \(t+\Delta\) 才被采用。此时机器人已经继续执行了上一动作块,状态从 \(s_t\) 变成 \(s_{t+\Delta}\);环境也可能发生变化。将面向旧状态的动作硬切换到新状态上,会产生轨迹跳变、振荡和控制精度下降。

异步推理的核心矛盾不是“动作算得慢”,而是“动作针对的时间段”和“动作实际生效的时间段”不同。


2. VLASH 的核心:Future-State Awareness

图 3 对比了三种执行方式:

  • Synchronous Inference: 新动作与状态对齐,但推理时机器人停顿,反应慢。
  • Naive Async: 机器人持续运动、反应更快,但新动作仍根据旧状态 \(s_1\) 预测,在未来状态 \(s_3\) 执行时发生不连续。
  • VLASH: 在推理开始时就把状态从 \(s_1\) 前推到 \(s_3\),让模型直接为执行时刻规划动作,因此兼顾连续运动与快速反应。

2.1 理想输入与现实中可获得的输入

严格来说,要在 \(t+\Delta\) 开始执行一段动作,理想 policy 应当使用

$$ \pi_\theta(A_{t+\Delta}\mid o_{t+\Delta},s_{t+\Delta}). $$

但是推理开始于 \(t\),未来观测 \(o_{t+\Delta}\) 尚未发生,无法直接获得。VLASH 不尝试预测完整未来环境,而是注意到:推理期间机器人仍在执行上一动作块,且这段即将执行的动作已经确定。因此,可以用当前状态和这些 committed actions 估计执行时状态。

对于 delta action,状态前推可写为

$$ \hat{s}_{t+\Delta} =s_t+\sum_{i=0}^{\Delta-1}a_{t+i}. $$

对于 absolute action,不需要累加,待执行序列的最后一个绝对目标可以直接作为未来状态估计。于是 VLASH 实际使用

$$ \pi_\theta(A_{t+\Delta}\mid o_t,\hat{s}_{t+\Delta}). $$

视觉仍然是稍旧的 \(o_t\),但机器人的自身状态已经与新动作的执行起点对齐。论文将其类比为人类存在反应延迟时的行为:视觉信息可能略有滞后,但我们会根据身体正在进行的动作预判动作真正生效时的姿态。

2.2 为什么这个估计几乎没有运行时开销?

VLASH 的状态前推只使用上一动作块中已经生成、即将执行的动作,不需要:

  • 再运行一个 world model;
  • 对新动作做额外 denoising / inpainting;
  • 增加 correction head;
  • 修改 VLA 的标准推理循环。

因此它的额外计算基本只是动作累加或读取最后一个绝对动作。与 RTC 在推理时冻结一部分动作并重新 inpaint 余下动作相比,VLASH 不会因为修正动作而扩大模型延迟 \(L\)。


3. 只在推理时换成未来状态为什么不够?

论文发现,现有 VLA 虽然同时接收图像与 robot state,但实践中往往更依赖视觉信息,没有充分利用本体状态。如果训练时模型只见过 \((o_t,s_t)\rightarrow A_t\),部署时突然将状态换成 \(s_{t+\Delta}\),模型未必理解这个输入代表“同一幅旧画面下,机器人已经运动到未来位置”。

因此,VLASH 不是纯 inference-time trick,而是在下游 fine-tuning 阶段加入 temporal-offset augmentation

3.1 状态与动作一起偏移

给定演示轨迹 \(\{(o_t,s_t,a_t)\}\),从范围

$$ \delta\in\{0,1,\ldots,\Delta_{\max}\} $$

中采样一个时间偏移,并构造

$$ (o_t,s_{t+\delta}) \longrightarrow A_{t+\delta} =[a_{t+\delta},\ldots,a_{t+\delta+H-1}]. $$

这里有两个缺一不可的操作:

  1. State 与 target action 同时向后偏移。 模型学习从未来状态开始应该继续执行什么动作。
  2. Observation 保持为 \(o_t\)。 同一幅图像会对应多个不同状态和不同正确动作,迫使模型不能只记视觉模式,而必须读取 robot state。

训练多个 \(\delta\) 而不是固定一个延迟,是因为相同 VLA 可能部署在不同 GPU、不同推理优化和不同控制频率下,对应的 \(\Delta\) 不同。部署时选择能够覆盖实测推理延迟的最小 offset,使模型在同步模式(\(\delta=0\))和多种异步延迟下都能工作。

3.2 Shared Observation:一次编码,多组 offset

朴素实现会把每个 \((o_t,s_{t+\delta},A_{t+\delta})\) 当成独立样本,反复编码完全相同的图像。视觉 token 恰恰是 VLA 输入中最昂贵的部分,因此论文提出 shared-observation fine-tuning

作者将一个共享 observation 和全部 offset branch 打包为一个序列:

$$ [o_t,(s_t,A_t),(s_{t+1},A_{t+1}),\ldots, (s_{t+\Delta_{\max}},A_{t+\Delta_{\max}})]. $$

再使用 block-sparse attention mask:

  • observation token 之间可以相互 attention;
  • 每个 offset branch 可以 attention 到共享 observation 和本 branch 内的 token;
  • 不同 offset branch 之间禁止相互 attention,防止未来分支泄漏信息;
  • 所有 branch 的 state-action positional encoding 从同一位置开始,使每个分支在模型看来都等价于一条独立训练样本。

以 \(\pi_{0.5}\) 为例,一组双视角图像和语言约有 600 个 observation token,一个 state-action branch 约有 50 个 token。打包 \(N_\delta=5\) 个 offset 时,总长度仅从约 650 增至 850(约增加 31%),却相当于同时训练 5 条 offset trajectory,并且视觉只编码一次。

需要注意:这不是“训练完全免费”。offset augmentation 仍可能需要更多 step 才收敛;shared observation 解决的是每一步中的重复视觉计算。


4. 完整异步执行流程

VLASH 的一次在线控制循环可以概括为:

1. 在时刻 t 采集当前观测 o_t 和当前机器人状态 s_t
2. 机器人继续执行上一 action chunk 中已提交的动作
3. 根据实测推理延迟 Δ,取出推理期间预计会执行的动作前缀
4. 用该动作前缀把 s_t 前推为执行时状态 ŝ_{t+Δ}
5. VLA 根据 (o_t, ŝ_{t+Δ}) 在后台生成下一 action chunk
6. 推理完成后切换到新 chunk;与此同时立即开始下一轮感知与推理

这个流程有两个关键前提:

  • 旧 chunk 在推理期间不会消失。 它既维持机器人连续运动,也提供状态前推所需的已知动作。
  • 推理持续 back-to-back 运行。 新环境变化可以在下一次推理开始时被看到,而不用等整段旧 chunk 执行结束。

与相关方案的差异

方法 推理期间是否停顿 是否处理时间错位 额外推理开销 架构改动 需要训练适配
Sync 天然对齐
Naive Async
RTC 冻结确定动作并 inpaint 其余动作 通常无
A2C2 用额外 correction head 修正
VLASH 用已提交动作前推执行时状态 近似无 方法本身不要求

论文还讨论了一个实现细节:\(\pi_{0.5}\) 原始设计把数值状态转为文本 token,这会破坏数值的连续结构。VLASH 本身可以不改架构直接工作,但真实机器人实验额外使用了轻量 state projection,将连续状态映射为 embedding;附录认为这是可选增强,用于进一步改善平滑性,而不是 future-state awareness 的必要组成。


5. Action Quantization:加速的是物理执行,不是模型计算

异步控制把 VLA 推理隐藏在动作执行背后之后,新的瓶颈变成了:机器人执行完整细粒度动作序列仍然需要较长时间。为此论文采用 action quantization

这里的 quantization 不是权重 INT8/INT4 量化,而是把连续 \(q\) 个细粒度动作合并为一个 macro-action。对 delta action,若 \(q=3\),则

$$ \hat{a}_0=a_0+a_1+a_2. $$

机器人用一步从 \(a_0\) 的起点移动到 \(a_2\) 的终点,从而缩短动作序列。非整数 \(q\) 则通过线性插值将原轨迹重采样为更短序列。

这提供了一个直接的 speed-accuracy trade-off:

  • \(q\) 越大,物理运动越快,任务完成时间越短;
  • 动作越粗,精细操作、碰撞规避和闭环修正能力越容易下降;
  • 因此 \(q\) 必须按任务精度要求选择,堆叠通常比简单 pick-and-place 更保守。

实验中,能够保持精度的 \(q\in[1.5,2]\) 带来约 \(1.5\text{--}2.0\times\) 的任务完成加速。这个数字与后文最高 \(11.8\times\) 的 reaction latency speedup 不是同一个概念。


6. Experiments

论文从五个角度回答问题:

  1. VLASH 能否在模拟动态任务中抵抗更大的 inference delay?
  2. 它能否跨 \(\pi_{0.5}\)、SmolVLA、GR00T N1.6 泛化?
  3. 在真实机械臂的一般操作任务中,异步与动作量化是否损害成功率?
  4. 它是否真的能降低反应延迟,并完成同步 VLA 无法完成的动态任务?
  5. shared-observation fine-tuning 能节省多少训练计算?

6.1 Kinetix:延迟越大,future state 越重要

Kinetix 是包含投掷、接取、平衡等快速动态控制的模拟 benchmark。实验训练 prediction horizon \(H=8\) 的 4-layer MLP-Mixer action-chunking policy,在 12 个任务上每个数据点运行 1,024 次 rollout,模拟 \(0\text{--}4\) 个控制步的推理延迟。

主要结果:

  • 固定 \(\Delta=1\)、逐渐增大 execution horizon \(K\) 时,VLASH 始终紧跟同步上界;Naive Async 和 RTC 随 \(K\) 增大下降更明显。
  • 令 \(K=\max(\Delta,1)\) 并增大延迟时,Naive Async 很快崩溃,RTC 也明显退化,而 VLASH 保持更稳定。
  • 在 \(\Delta=4\) 时,VLASH 成功率为 81.7%,Naive Async 仅为 51.2%,绝对提升 30.5 个百分点

Kinetix 中的状态前推通过 simulator 执行生成动作实现,而且前推噪声与真实执行噪声独立,因此 \(\hat{s}_{t+\Delta}\) 仍是近似值。结果说明 VLASH 并不要求未来状态完全精确。

6.2 LIBERO:在通用操作任务上保持原始能力

LIBERO 包含 Spatial、Object、Goal、Long 四个子 benchmark,每个包含 10 个任务。论文在 \(\pi_{0.5}\) 和 SmolVLA 上分别 fine-tune 30K steps,batch size 为 32,并设置 \(K=5\)。

Model Mode / Delay Spatial Object Goal Long Avg. SR
\(\pi_{0.5}\) Sync / 0 97.3 99.6 96.7 93.5 96.8
\(\pi_{0.5}\) VLASH / 1 98.8 99.2 96.7 94.4 97.2
\(\pi_{0.5}\) VLASH / 2 97.5 99.2 97.3 94.6 97.1
\(\pi_{0.5}\) VLASH / 3 94.4 98.8 93.3 91.9 94.6
SmolVLA Sync / 0 81.3 92.9 85.8 55.8 79.0
SmolVLA VLASH / 1 80.0 92.9 82.3 53.1 77.1
SmolVLA VLASH / 2 78.5 92.1 86.9 55.0 78.1
SmolVLA VLASH / 3 79.8 94.2 87.5 54.8 79.1

LIBERO 的环境变化较慢,simulation 中同步执行也不会产生真实机械臂那样的停顿抖动,因此 Sync 是一个很强的上界。即便如此,VLASH 在多个延迟配置下仍接近或略高于同步结果,说明 offset fine-tuning 没有破坏模型原本的一般操作能力。但 \(\pi_{0.5}\) 在 delay 3 时从 96.8 降到 94.6,也表明更旧的视觉输入仍会带来代价。

6.3 真实机器人:准确性与动作量化鲁棒性

论文将 \(\pi_{0.5}\) 和 GR00T N1.6 部署到两种平台:双 7-DoF 的 Galaxea R1 Lite,以及 6-DoF 的 LeRobot SO-101。真实世界任务包括:

  • Pick & Place: 抓取随机起点的方块并放入固定盒子;
  • Stacking: 将橙色方块堆到蓝色方块上;
  • Sorting: 按颜色把两个方块放入左右盒子。

实验在 RTX 5090 笔记本上运行,设置 \(K=24\)、控制频率 30 Hz、推理延迟 2 steps。每个方法、每个任务执行 20 个 rollout,每次最多允许 3 次尝试。

对 \(\pi_{0.5}\),VLASH 在所有任务和量化因子上都取得最高成功率。尤其是:

  • Pick & Place 和 Sorting 中,VLASH 在 \(q=2\) 时仍匹配或超过 Sync 在 \(q=1\) 的成功率,相当于在不损失准确率的情况下获得约 \(2\times\) 完成加速;
  • 精度要求更高的 Stacking 中,\(q=1.5\) 是更合理的平衡点;
  • RTC 的 inference-time inpainting 增大了推理延迟,使其面对更陈旧的状态,因此在多个设置中不如 VLASH。

GR00T N1.6 在 \(q=1\) 上呈现相同趋势:VLASH 在三项任务中都优于 Sync、Naive Async 和 RTC。更大的 \(q\) 对所有方法成功率都较低,所以论文没有用这些设置做强行比较。

6.4 Reaction latency:为什么是 \(D+2L\) 对 \(2L\)?

论文将最大反应延迟定义为:环境发生变化后,第一条受该变化影响的动作真正开始执行之前的最坏等待时间。

设一次 inference latency 为 \(L\),一个 action chunk 的执行时间为 \(D\):

  • Sync: 最坏情况下,变化刚好发生在一次观测之后。系统要完成当前推理 \(L\)、执行整段旧 chunk \(D\),再完成下一次推理 \(L\),所以

    $$ T_{\mathrm{react}}^{\mathrm{sync}}=D+2L. $$
  • Async: 推理 back-to-back 运行。系统在下一次推理开始时看到变化,并在该次推理完成后切换动作,最坏为

    $$ T_{\mathrm{react}}^{\mathrm{async}}=2L. $$

在 \(\pi_{0.5}\)、单图输入、\(K=25\)、50 Hz 控制下,\(D=500\) ms:

GPU VLASH / Sync 的 \(L\) Sync 最大反应延迟 VLASH 最大反应延迟 Speedup
H100 23.2 ms 546.4 ms 46.4 ms 11.8×
RTX 5090 29.4 ms 558.8 ms 58.8 ms 9.5×
RTX 4090 32.3 ms 564.6 ms 64.6 ms 8.7×

RTC 在三张 GPU 上的 inference latency 分别是 48.4、49.6、54.2 ms,约为 VLASH 的 \(1.7\text{--}2.1\times\),说明运行时修补动作会直接侵蚀异步带来的低延迟收益。

6.5 Ping-Pong 与 Whack-a-Mole:同步控制做不到的任务

两项动态任务都使用 \(\pi_{0.5}\)、RTX 5090 和 \(q=2\):

Method Ping-Pong Hit Rate Whack-a-Mole Avg. Score
Sync 0/20(0%) 3.2
Naive Async 0/20(0%) 8.6
RTC 0/20(0%) 11.0
VLASH 11/20(55%) 28.8

这里能看出三个层次:Sync 因反应慢而几乎无法参与动态交互;Naive Async 和 RTC 虽能更频繁感知,但动作错位或额外延迟使控制仍不够准;VLASH 同时具备连续推理、状态对齐和较快物理运动,才真正把 VLA 带入快速交互任务。

6.6 Fine-tuning Efficiency

shared-observation 实验在 4×H100 上用 DDP 训练 \(\pi_{0.5}\)。VLASH 取 \(\Delta_{\max}=3\),每 GPU physical batch 为 4;四个 offset 使 effective batch 为每 GPU 16、全局 64。标准训练则直接使用每 GPU 16 的 physical batch,保证 effective batch 一致。

Method Time / Step 10K 20K 30K
Original 420.99 ms 94.1 97.1 96.8
VLASH 129.29 ms 87.1 94.4 96.6

VLASH 每个 forward-backward step 快 3.26×。它在早期收敛更慢,但 30K 时达到 96.6,接近标准训练的 96.8;而且这里两者都在同步模式下评测,再次说明 offset augmentation 最终不会明显伤害原始同步性能。


7. Limitations 与值得注意的边界

7.1 只对齐了 robot state,没有预测未来环境

VLASH 使用的是 \((o_t,\hat{s}_{t+\Delta})\),而非真正的 \((o_{t+\Delta},s_{t+\Delta})\)。当人、球或障碍物在推理期间快速移动时,视觉依旧陈旧。连续 back-to-back inference 缩短了这种陈旧持续的时间,但没有从根本上预测未来世界。论文也将 world model 视为未来可以结合的方向。

7.2 状态前推依赖动作能够按计划执行

简单累加 delta action 隐含假设:机器人在 \(\Delta\) 内基本按照已提交动作运动。真实系统中的关节滞后、接触、碰撞、控制器饱和或紧急中断都会造成

$$ \hat{s}_{t+\Delta}\ne s_{t+\Delta}. $$

Kinetix 的独立噪声实验说明方法对一定误差具有鲁棒性,但更复杂动力学下仍可能需要轻量 dynamics model 或在线状态校正。

7.3 对训练延迟范围的泛化不是无限的

模型只在 \([0,\Delta_{\max}]\) 的 offset 上训练。部署延迟若明显超出范围,或者 \(L\) 抖动很大,视觉陈旧与状态估计误差都会扩大。LIBERO 中 \(\pi_{0.5}\) 在 delay 3 上的轻微下降已经体现了这个趋势。

7.4 Action quantization 不是无损加速

动作量化跳过了中间控制点。对自由空间中的大幅移动,它通常有效;对插入、堆叠、接触丰富或安全敏感的任务,过大的 \(q\) 会降低精度。论文使用 task-dependent \(q\),不能把 \(2\times\) 直接视为所有任务的固定收益。

7.5 “无架构改动、无额外开销”需要准确理解

  • future-state-aware inference 本身不要求新增网络模块,状态前推的运行时开销近似可忽略;
  • 但模型仍需要 offset fine-tuning,不能把一个未经适配的 VLA 直接换成未来状态就期待稳定工作;
  • shared-observation attention 是训练优化,实现时需要支持相应 attention mask;
  • \(\pi_{0.5}\) 的真实机器人设置使用了可选 state projection 来改善数值状态建模。

7.6 真实世界评测规模仍有限

一般操作任务每个设置为 20 个 rollout,乒乓球为 20 次发球,打地鼠为 5 轮。结果足以证明方法可以解锁动态任务,但对于长期可靠性、安全性、跨平台延迟抖动和复杂人机交互,仍需要更大规模评估。


8. Conclusion

VLASH 解决的是 VLA 实时部署中一个容易被忽视、却非常根本的问题:异步推理只有在动作与执行时状态对齐时,才会真正转化为稳定的闭环控制能力。

整套方法可以压缩为四步:

  1. 用 action chunking 让机器人在 VLA 推理时继续执行旧动作;
  2. 用旧 chunk 中已经提交的动作,将 robot state 前推到新 chunk 的执行起点;
  3. 用 temporal-offset augmentation 教会 VLA 根据“旧视觉 + 未来本体状态”生成对齐动作;
  4. 用 shared observation 降低训练重复计算,并按任务需要使用 action quantization 加快物理运动。

最终,VLASH 在不增加推理阶段修正网络或额外生成步骤的情况下,获得了最高 11.8× 的最大反应延迟改善;在 Kinetix 的 4-step delay 下相对 Naive Async 提升 30.5 个成功率百分点;结合动作量化,在真实操作任务上取得约 1.5–2.0× 完成加速,并让 \(\pi_{0.5}\) 实现了同步控制无法完成的乒乓球和打地鼠任务。

更高层的启发是:

对具身模型而言,实时性不只是每秒能跑多少次 forward;它还取决于模型看到的状态、模型规划的时间区间,以及动作真正生效的时刻是否一致。