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

paper

Note

The future-state-awareness assumes that the VLA is able to leverage the rolled-forward robot state.

前向推演:在训练的时候将提前录制好的视频数据作为一组时空数据(从头开始,就可以有现在和未来)输入。然后强迫模型学会使用当前图像和未来状态来预测未来动作。

Offset state and action together.

Fix the environment observation.

使用随机偏移$\delta$,从同一轨迹上的未来状态$s_{t+\delta}$和未来动作块$a_{(t+δ):(t+δ+H−1)}$来构建训练目标。但是给定的图像是相同的,也就是说,相同的图像可以根据机器人的不同的偏移状态预测不同的真实动作。

避免模型的死记硬背(从某一图像直接映射到某一动作,对视觉特征过拟合),如果说神经网络本质是概率预测,避免从某一特定输入到某一特定输出之间的映射概率太大。

1
2
3
4
5
6
Thinking...
所以感觉还是要解决“学习”这个问题,为什么人能临时学过很多东西然后忘掉?或者可以从说明书学习东西的使用方法?人和机器人的根本区别是什么呢?
之前感觉大模型回答问题的逻辑很有道理,就是从某一句话推测下一句,本质上就是计算概率分布。但是真的是所有行为都通用这个逻辑吗🤔?
但是机器人所受的限制就是,本质是代码,本质是01串。但是只从语言生成来说,模型似乎已经可以算是具备基本的“说话”的功能了。
再说情绪,我个人认为,现在之所以做出来的机器人不像人是因为,人们造它出来是用来干活的,而不是真的要造一个“人”。但是经常刷到的模仿一个人的说话语气做的聊天机器人是为什么呢?...
多看多学吧。

在异步推理部署时,我们可以将向前推进的执行时刻状态与当前观察一起输入,微调后的VLA自然利用这个未来状态产生在执行区间上对齐且稳定的动作。

怪不得vlash可以提升性能,之前的异步推理的问题是,在推理结束输出动作的时候,推理所用的图像是过去状态的图像,所以可能会导致输出动作的状态与观察图像的状态不符合。但是vlash直接反过来,直接使用图像和未来的状态进行训练和预测动作,正好是异步推理的模式:过去的图像+现在的状态=现在的图像+未来的状态。

Action Quantization

将小动作量化成一个大动作(宏动作),可以减少执行的步数,加速机器人动作的执行。

meth

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

将一个观察和多个偏移分支打包到一个序列中,其中每个$$(s_{t+δ}, A_{t+δ})$$对应一个时序偏移

We then apply a block-sparse self-attention mask with the following structure:

• All observation tokens (e.g., image tokens from two views and language prompt, about ∼700 tokens for π0.5) can attend to each other, as in standard VLA fine-tuning.

• For each offset branch, the state-action tokens (st+δ, At+δ) can attend to all observation tokens and to tokens within the same offset, but cannot attend to tokens from other offsets.

然后我们应用具有以下结构的块稀疏自注意力掩码:

• 所有观察标记(例如来自两个视角的图像标记和语言提示,对于π0.5约700个标记)可以相互关注,如同标准VLA微调中一样。

• 对于每个偏移分支,状态-动作标记(st+δ, At+δ)可以关注所有观察标记和同一偏移内的标记,但不能关注来自其他偏移的标记。

图所示的这种注意力图使不同偏移基于共享观察进行条件化,同时保持相互独立。

  • 防止误差累积
    如果允许 t+2依赖 t+1的预测结果,那么一旦模型在 t+1 时刻预测错了(比如预测手会向左,实际向右),这个错误会像滚雪球一样传给 t+2 ,导致后面的预测全崩。让它们相互独立,意味着每个时间点的预测都是直接基于当前图像算出来的,互不干扰。
  • 支持“异步推理”和“跳步”
    这是最关键的一点。在部署时,由于计算延迟,我们可能只需要预测 t+3 时刻的动作,而不需要 t+1或 t+2的。
    • 如果它们互相关联,你必须先算出 t+1才能算 t+3串行计算,很慢)。
    • 因为它们是相互独立的(都只看图),你可以直接跳过中间步骤,瞬间算出 t+3的动作。这大大加快了机器人的反应速度。