前言

“Asynchronous Fast-Slow Vision-Language-Action Policies for Whole-Body Robotic Manipulation”
这是一篇星尘智能的技术报告,根据其自身的引言,主要的创新点在于:

  1. 快慢双系统进行了解耦。
  2. 将机器人的全身动作都进行了RVQ编码从而使vlm部分可以高效预测全身离散动作进行训练。(这是相较于pi0 fast中使用的离散化方法而言的)

实验所用到的本体是星尘智能自身的s1本体。
模型的action格式用的是末端位姿+夹爪,值得一提的是旋转用的不是常见的欧拉角,而是使用了六维表示旋转(旋转矩阵的前两列)。

这里将s1本体的躯干看作了第三个末端位姿。(本体示意图如下)

论文(Towards Human-level Intelligence via Human-like Whole-Body Manipulation) 图二左部分

实验任务是简单的服务场景:舀爆米花

论文图三(四张图片分别代表四个划分后的子任务)

数据集总共有1780个episode,总时长为10.22小时。
(其中有一部分是关上饮料柜门的数据,这部分数据占比小于1%,是为了消融实验表明模型没有只是记住了舀爆米花这一个任务(也就是证明模型不是在过拟合))

实验的baseline是 openpi的pi0模型,分布域内的结果对比如下(in-distribution)

论文表一(从对比结果来看该方法并没有相对于普通模型的优越性)


论文图四(分布内示意图)

同时测试了分布域外的表现,但是这里的测试条件仍然很弱
“To evaluate generalization, we place the cup at unseen locations such as near the table edge and test whether the model can still complete the task.”
分布域外的结果对比如下(out-of-distribution)


论文表二(相对于pi0有较大进步)

此外,还测试了模型在意外情况下的表现。
但是这里的测试是很合适的,遇到意外模型被期望回到原位
“In these cases, the robot is expected to return to its home pose and remain idle until the cup is properly repositioned.”

论文表三(结果也不是很好)

从任务选择(响应速度不敏感)以及任务成功率(分布于内并未有提升)可以看出实验设计以及实验结果很糟糕的。

读者期待的结果应该是该模型在响应速度敏感的任务上(例如说倒水)表现超过baseline(pi0),结果反而是任务也不是响应速度敏感,表现也没超过baseline。

更让人难绷的是作者还宣称
“be provided to commercial users by astribot as part of the astribot robotic platform”。

但是,我觉得模型中的这种快慢系统解耦的设计是很有必要的。

本篇博客会有三个部分:

  1. 原报告是怎么设计快慢双系统的呢?
  2. 为什么快慢双系统的解耦十分重要?
  3. 快慢双系统的隐忧是什么?

论文中的快慢双系统设计

首先展示一下模型架构图

论文图一

慢系统

慢系统的架构实质上就是普通的vlm,并且和vla中的vlm相同。

而相较于普通的vla中的vlm不同的是,这里引入了一个可学习的”Query Token”来传递高密度的任务相关的语义信息。

Bridge Buffer

慢系统的输出有很多,在这里我们只会选取一部分进入 Bridge Buffer,之后由快系统取用。

首先就是原始的instruction的embedding。

但是实事求是地讲这个embedding中并没有任何的vlm所带来的 instruction 相对于 image 的语义理解。

再者就是”Query Token”。

可以这样说,这个”Query Token”便是整个慢系统的唯一产出。

快系统

快系统的输入输出几乎和一个完整的vla相同,只是其自身的模型大小远远小于普通的vla。

为了弥补模型语义理解能力的不足,每一次推理都会从”Bridge Buffer”中拿”Query Token”作为额外输入。

这里有点奇怪的是作者绘的快系统的示意图中使用了”Transformer Encoder”以及”Transformer Decoder” 这样的表达。

我可以把这种表述理解为encoder部分只进行一次推理而decoder进行多次推理的划分。
但是这不符合encoder以及decoder本身掩码方式不同的区别。

而且这也会让人误以为快系统使用的模型不是decoderonly范式的。

推理

博客对于推理的描述较少,我只了解到在慢系统的推理过程中使用了 “Consistency Large Language Models (CLLMs)” 的技术,简单来说就是不再使用经典的one by one 的推理,而是一次推理预测多个token,并且使用多次推理进行修正。

作者在引言中强调本模型的不同点在于慢系统相对于快系统的推理频率的比率不是固定的,但是报告中似乎没有提到是如何做到这一点的。
我觉得可能的是在推理中通过对快慢系统的两个模型分别划分不同的计算资源还能来做到这一点。、

但是这和直接确定比率没有实质上的差别。

所以要不然就是作者刻意没有提到这点。

训练

训练的部分很简单。

整个训练划分为两阶段。

第一阶段用了训练vlm的数据训练了慢系统,之后又提到使用了离散的动作作为监督信号进行训练。

当然了,”Query Token”的训练是在第二阶段通过action的监督进行的。

第二阶段就是快慢系统同时进行梯度更新,此时的监督信号有两个,一个是快系统的连续的action,一个是慢系统的离散的action token。

其中的快系统的image,proprios,action信号为了符合推理场景中的快慢时间差,会在一定范围内落后于慢系统中的image,proprioception,action信号。如下图所示


论文图二

其中慢系统中的action是经过离散化的。
(action的离散化通过一个额外训练的residual vector quantization(RVQ)模块生成)

并且慢系统的action监督信号和快系统的action监督信号强度是不同的,Loss慢:Loss快=1:10,很显然这是为了减少对于慢系统的过多的修改,在给定慢系统在一阶段已经有良好的预训练权重的情况下。

但是,值得注意的是通过”Query Token”回传的梯度并没有提及有没有做一定的缩放。


快慢双系统的解耦

快慢双系统的意义是什么?

总结是:
给定有限计算资源,机器保留推理能力的同时获得较高响应频率。

“simultaneously enabling efficient real-time inference while preserving the multimodal reasoning capabilities of large models.”

这个总结隐含了两个前提:

  1. 现在单系统vla的推理能力很ok,我们可以让它变弱一点。
  2. 现在单系统vla的响应频率太低了,我们要让它变高一点。

但是这两个前提都是有缺陷的:

  1. 推理能力足够的前提是限制在当前仅有的简单任务,现在的vla如果要面对实际的复杂指令的话,推理能力反而应该加强。 “if the upstream features being provided aren’t effective to begin with, perhaps asynchronous inference between upper and lower layers is merely a pseudo-requirement.”
  2. 对于现在大多数的相对静态环境的任务来说,推理频率提高10倍也不会显著提高成功率。

静态环境:机器是几乎造成环境变化的唯一原因

所以,这里可以提出一个更加完善的快慢双系统的意义:
给定有限计算资源,机器保留推理能力的同时获得较高响应频率,以满足动态环境较简单任务的需求。

根据此定义设计的的现有的双系统vla只会在如上特定情况下起作用。

这符合了现有双系统vla的设计,但是显然不符合我们对于双系统的预期。

从脑科学的双系统理论 “dual-process theory” 重新给出一个快慢双系统的定义,应该是:
给定有限计算资源,机器自由分配计算资源以平衡推理能力和响应速度。

这预示着一种可能性,快慢双系统的计算资源占用比例是不可能通过预设确定的,
那么快慢双系统的解耦也就是必然了。

快慢双系统解耦后要如何才能让计算资源根据需要在这两者间自由分配?

除了设计一些司空见惯的特殊调用机制之外(设计总的路由或者特殊的token),
传统操作系统对于进程间资源竞争的处理方法也是可以借鉴的。

如何才能让计算资源根据需要在这两者间自由分配?
这是个很有意思的研究选题。


快慢双系统的隐忧是什么?

–待补充
本来计算了高响应频率传图片所需的带宽,觉得网络带宽是真正的瓶颈,后来发现视频流可以50倍压缩,所以暂时来看不存在网络方面的担忧。