当前位置:首页 > 中国芯 > 具身智能
[导读]导读: 把视觉策略的推理频率压到 5 Hz,一次吐出上百步动作,看上去把算力问题解决了。代价藏在时间轴上:块长 2 秒,最坏情况是两秒看不到新画面。决定块长的不是芯片算力,是扰动发生的时间尺度。

 把视觉策略的推理频率压到 5 Hz,一次吐出上百步动作,看上去把算力问题解决了。代价藏在时间轴上:块长 2 秒,最坏情况是两秒看不到新画面。决定块长的不是芯片算力,是扰动发生的时间尺度。

策略 5 Hz,关节 50 Hz

模仿学习里的动作分块,做法是让策略一次预测未来 K 步动作,而不是每一步都重新推理。ALOHA 那套开源双臂系统用的就是这条路线,配套的 ACT 算法把策略更新压到 5 Hz 左右,底层关节控制器仍跑 50 Hz,块长取 100 步。演示数据只要 10 分钟,六个精细任务的成功率能到 80% 到 90%。

这个安排解决了模仿学习的一个老问题。单步策略每 20 ms 看一次画面、出一次动作,视觉上的微小误差会一步步放大,几十步之后就偏出工作空间。一次预测一段动作,等于把有效时域缩短 K 倍,误差累积的链条被切断。

还有一层原因在数据里。人做同一个动作,每次路径都不一样,同一个起点可以有十几种合理走法。单步回归会把这种多模态平均成一条谁都不像的中间路径,机械臂走到一半开始犹豫。ACT 用条件变分自编码器给演示数据加一个隐变量,让模型在不同的解法之间选一条,而不是把几条揉成一条。分块和隐变量是配套的,缺一个都不成立。

关节控制器并不关心策略多久出一次结果。它按 50 Hz 取目标点,块内没有新指令时就在旧轨迹上插值。策略和控制器之间因此出现一个时间差,这个差值就是块长。

块长决定盲区多长

第 i 步执行时,手里拿的是上一次推理的结果。如果推理恰好在块头发起,要等 K 步才更新;如果恰好在块尾,下一步就能更新。平均等待是 K/(2f),f 是控制频率 50 Hz。K 取 100,平均等 1 秒,最坏等 2 秒。

图 1 块长与平均响应延迟、推理占用率的反向关系,K=100 时延 1.0 秒、占用 4%(依据原文第 4 节绘制)

把等待换成距离更直观。机械臂末端以 0.5 m/s 走一条弧线,2 秒的盲区对应 1 m 的位置偏差。人的手臂在同样速度下,视觉反馈延迟约 100 ms,偏差只有 5 cm。这也是为什么分块策略在慢速、准静态的桌面任务上表现很好,一到动态场景就显得笨。

推理本身的耗时也得算进去。单次前向 80 ms,块长 2 秒,控制周期 20 ms,推理占用率是 80 ms 除以 2000 ms,等于 4%。这个数字很漂亮,一颗中端端侧芯片就能跑。代价是整个闭环的带宽被压到 0.5 Hz 量级,任何比 2 秒更快的变化,策略都只能事后补救。

相机也在丢帧。30 Hz 的相机 33 ms 出一帧,2 秒的块对应 60 帧,块内只用了第一帧,其余 59 帧没有进入决策。视觉上最有价值的信息往往就在这 59 帧里,比如物体刚开始滑动、夹爪刚接触的瞬间。把块长减半,用上的帧数翻倍,代价是推理次数翻倍。

算力占用按 1/K 摊薄

占用率的关系式是 t_infer·f/K。t_infer 固定为 80 ms,f 固定为 50 Hz,占用率就只跟 K 成反比。K 从 100 降到 10,块长 0.2 秒,占用率从 4% 涨到 40%;再降到 1,等于退回单步策略,占用率 400%,一颗芯片跑不动。

模型规模决定 t_infer 的下限。一个 5000 万参数的策略网络,INT8 量化后权重约 50 MB。80 ms 内把这 50 MB 读完,等效带宽 625 MB/s。对比 LPDDR5 的 50 GB/s 量级,只用到 1% 多一点。这说明 80 ms 里大部分时间不在搬权重,而在算子调度、张量布局转换和固定开销上。换更快的存储没用,得换推理框架。

端侧设备通常没有 50 GB/s 的带宽可用。手机侧的 LPDDR5X 实际可用带宽在 10 GB/s 到 20 GB/s,眼镜和玩具上的 LPDDR4X 只有几 GB/s。即便按 5 GB/s 算,读 50 MB 只要 10 ms,仍然远小于 80 ms。这个差距解释了为什么很多端侧策略在纸面上算力够,实测延迟却是理论值的好几倍。

内存也要按块长开。一个块 100 步、每步 14 个关节角,动作缓冲区只有 5.6 KB,可以忽略;中间激活值不一样,单次前向的峰值激活在几十 MB 量级,双缓冲就要再乘二。端侧 SoC 的片上 SRAM 通常只有几 MB,激活值必须落在 DRAM 里,每层算子都要来回搬。这部分搬运时间已经含在 80 ms 里,再压模型规模才能把它降下去。

时序集成要四倍算力

ACT 论文里还有个细节,叫时序集成。做法是每个控制周期都查一次策略,得到一串重叠的动作块,对同一个未来时刻的多个预测做加权平均,再执行。抖动被平均掉了,动作平滑很多。

代价很直接。控制 20 ms 一次,推理 80 ms 一次,要每个周期都有新结果,就得四路推理并行,算力需求翻四倍。端侧一颗 NPU 通常只有一路推理队列,跑不动这个节奏。工程上的折中是每两三个控制周期集成一次,平滑效果打折,延迟改善也打折。

图 2 5 Hz 策略驱动 50 Hz 控制器的时序链,块内等待 0 到 2 秒(依据原文第 4 节绘制)

这里有一个反直觉的取舍。块长越长,单位算力换来的动作越平滑,因为模型看到的是更长的一段未来;可块长越长,对突发扰动的响应越慢。平滑和灵敏在同一根轴上,往一头调,另一头必然退。厂商在演示视频里展示的往往是平滑,落地时用户抱怨的往往是迟钝。

仿真训练里还有一处容易漏掉的地方。策略在仿真中以 50 Hz 闭环,物理步长 2 ms,延迟几乎为零。真机上 80 ms 的推理延迟没有对应的物理过程,模型没见过“指令晚到”这种状态,一上真机就会出现小幅超调。补的办法是在训练时人为插入随机延迟,把延迟当成观测的一部分,让策略学会在旧画面上做预测。这一步做不做,效果差别比换更大的模型明显。

扰动的时间尺度才是分界

把扰动的时间尺度列出来,块长该取多少就清楚了。桌面插拔、拧螺丝,接触力变化在 0.2 秒量级,K 取 10 就够;传送带抓取,物体位置在 0.1 秒内变化几厘米,K 要压到 5 以下;人形机器人行走时的平衡恢复,扰动在 0.02 秒量级,K 只能取 1,等于每 20 ms 更新一次。

K 取 1,分块带来的误差抑制就没了,模型又回到单步策略的老问题。这正是分块方法在人形全身控制上不好用的原因。业界的应对是把任务分层:上层策略用长块管“做什么”,下层用模型预测控制或全身控制器管“站稳”,两层的时间尺度差一个数量级,各自在自己的带宽里工作。接触力这一层更特殊,力传感器采样可以到 1 kHz,比控制周期还快,块长在力环里根本不适用,只能交给底层的阻抗控制器去接。

一句话:动作块的长度不是超参数,它是扰动时间尺度除以控制周期得到的商,算力只决定这个商能不能取到。

内容来源:arXiv 预印本(开放获取)

原文标题:Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware

作者:Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn

DOI:arXiv:2304.13705(2023)

配图说明:图 1、图 2 均为自行绘制,为原理示意,非原文原图复制。

改动声明:本文为对开放获取文献的技术编译与解读,标题、行文与配图为原创。

来源:21ic电子网

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭