Corki:具身 AI 机器人的软硬件协同设计

394 篇文章 1 订阅
322 篇文章 1 订阅

24年11月来自中科院大学、美团、深圳AI机器人研究院、天津大学和中科院计算所的论文“Software-Hardware Co-Design For Embodied AI Robots”。

具身 AI 机器人有可能从根本上改善人类的生活和生产方式。使用大语言模型控制机器人这一新兴领域的持续进步关键取决于高效的计算基础。特别是,当今具身 AI 机器人的计算系统纯粹基于算法开发人员的兴趣而设计,其中机器人动作被划分为一个离散的帧基。这样的执行流水线会产生高延迟和能耗。本文提出 Corki,一种用于实时具身 AI 机器人控制的算法架构协同设计框架。其想法是将具身 AI 机器人计算流水线中的 LLM 推理、机器人控制和数据通信解耦。Corki 不是预测单个帧的动作,而是预测近期的轨迹,以减少 LLM 推理的频率。该算法与硬件相结合,加速将轨迹转换为用于控制机器人的实际扭矩信号,以及并行数据通信和计算的执行管道。Corki 大大降低 LLM 推理频率,最高可达 8.0 倍,从而将速度提高 3.6 倍。成功率可提高高达 17.3%。

如图所示:(a)当前具身 AI 系统的离散执行流水线,每次预测下一步动作,并且每一帧都会发生所有三个阶段,即LLM 推理、机器人控制和通信。(b)所提议的具身 AI 系统连续执行流水线,其中模型预测近期轨迹并将通信延迟与机器人执行延迟联系起来。

请添加图片描述

具身智能的计算系统。具身人工智能 (EAI) 与语义 AI 不同,它强调与环境交互并执行长期任务的智体(通常是机器人)。最近,随着大语言模型 (LLM) 作为规划器的成功,该领域的研究不断加强,旨在开发高度智能的机器人 [10, 34–38]。

机器人应用加速器。随着人们对将机器人视为新计算平台的兴趣日益浓厚,社区越来越关注机器人计算的专用加速器。这些加速器被设计用于定位 [39–42, 44–47]、运动规划 [43, 48–54]、控制 [55–61, 68] 等 [62–64, 69– 71]。然而,大多数加速器专注于传统基于规则的机器人计算系统中的一个或多个模块。

传统机器人通常依靠基于规则的算法进行决策和任务规划,其效用仅限于简单和预定的场景。相比之下,大语言模型 (LLM) 的成功促使人们努力为机器人配备先进的推理和长期规划能力。这种成功推动使用 LLM 进行机器人控制的应用程序出现,这已显示出显着的进步,特别是在提高机器人在动态场景中执行复杂任务的成功率方面 [12, 13, 22, 23]。

具身人工智能系统代表一类系统,它们利用大语言模型 (LLM) 的推理能力来指导机器人完成复杂的现实世界任务,包括但不限于家务和工业制造,目的是减少人类的努力。通常,这些系统由两个不可或缺的组件组成:配备 GPU 的高端服务器,用于 LLM 推理;以及机器人主体,负责执行并与物理环境交互。

具身 AI 系统通常采用多模态大语言模型 [14–17] 作为规划模块。该 LLM 将语言指令输入(例如“把蓝色杯子放在桌子上,把红色的拿给我”)与机器人流水线中的传统传感器输入(包括连续视频、IMU 信号和点云 [18– 20])无缝集成。LLM 推理将根据当前和最近的观察结果以及指令生成机器人主体要执行的下一步动作。

最近,具身人工智能系统已显示出在各种任务中取代人类的巨大潜力。谷歌的机器人Transformer [5,6]在家庭环境中的“拾起物体”、“打开抽屉”和“将物体放入指定位置”等任务中取得了75.0%以上的成功率。最近提出的具身人工智能框架RoboFlamingo [12]将单个任务的成功率进一步提高到89.5%以上。

以 RoboFlamingo 为例介绍具身 AI 系统。RoboFlamingo 利用视觉语言模型 (VLM) 来控制带有平行夹持器的 Franka Emika Panda 机械臂 [21],该机械臂总共具有七个自由度。RoboFlamingo 接受两种输入形式:语言指令和包含 12 张图像的视频序列。该模型将预测机械臂末端执行器在下一步中的动作。第 𝑡 帧的 LLM 推理过程,输入是 𝐹/𝑡,表示视频序列中的单个帧,和 𝑖 ,表示语言指令。输出是 Δ𝑥,Δ𝑦,Δ𝑧,为三维位置变化,Δ𝛼,Δ𝛽,Δ𝛾 ,为三维旋转变化,另外 𝑔 为一维夹持器状态,表示打开或关闭。

模型预测动作后,机械臂将执行动作,将自身移动到新位置。机器人上的控制过程将末端执行器的运动信息转换为放置在机械臂关节上每个电机的实际扭矩。机器人上的摄像头(通常放置在夹持器上)将捕获新帧 𝐹/𝑡+1 并将其发送回模型以更新输入帧。然后下一个推理将发生在(𝐹/𝑡−10,𝐹/𝑡−9,…,𝐹/𝑡+1,𝑖)。

具体来说,通过分解执行延迟来分析和描述 RoboFlamingo 的执行流水线,并在图中显示结果。为了获得结果,在 Nvidia V100 GPU 上运行 LLM 推理,在英特尔第 13 代 i7-13700 CPU 上运行机器人控制,并使用 Wi-Fi 模块收集数据通信数据。

请添加图片描述

图 a 显示,即使使用相对较小的 LLM(30 亿个参数)和高端 GPU,具身 AI 系统的端到端帧延迟也可能高达 249.4 毫秒,这直接导致非常低的帧速率,无法满足实时约束。在这三个阶段中,LLM 推理占用 76.9% 的执行时间,机器人控制占用 4.1%,数据通信占用 19.0%。图 b 显示能量分解。LLM 推理仍然占主导地位,占总能量的 98.0%,而机器人控制和数据通信仅占 2.0%。注:由于控制频率设置为与 30 Hz 前端帧速率相匹配,因此基线系统中控制所花费的延迟较低。然而,在实际的机器人系统中,控制通常具有更高的速率。对于每一帧,为了获得平滑的轨迹,相应的控制延迟可能占总延迟的 13.9%。

详细的特性数据表明,导致具身人工智能机器人执行缓慢的原因主要有两个方面。首先,逐帧顺序执行流水线迫使机器人的每一个动作都要经历三个阶段:LLM 推理、机器人控制和通信,并且延迟会累积。其次,即使使用高端 GPU 加速,LLM 推理仍然非常缓慢。

从机器人系统设计师的角度来看,规划和决策模块不需要与控制模块的高频率相匹配。轨迹通常被用作消除频率不匹配的桥梁。

Corki 算法创新的关键见解是将每帧机器人动作预测转变为机器人轨迹预测。

RoboFlamingo 由两个主要组件组成:视觉语言模型 (VLM) [24] 和名为策略头的 LSTM 网络 [25]。在每个时间步骤 𝑡,VLM 将视觉观察 𝐹/𝑡 和语言指令 𝑖 作为输入,并输出视觉语言 tokens 𝑋/𝑡。机器人动作 𝑎/𝑡 由策略头使用给定的 𝑋/𝑡 [12] 生成。

如图详细说明动作生成过程。在每个时间步骤 𝑡,策略头将 LLM 生成的视觉语言tokens 𝑋/𝑡 作为输入并通过 LSTM 网络。然后,隐状态 h/𝑡 通过两个 MLP 头映射到 7-DoF 的动作。

请添加图片描述

训练损失包含两部分,使用均方误差 (MSE) 损失监督位姿估计,而使用二元交叉熵 (BCE) 损失监督夹持器状态。权重 𝜆 用于平衡这两部分。

在推理过程中,策略头维护一个长度为 12 的队列。如果队列未满,策略头将预测动作 𝑎pose/t、𝑎^gripper/t,并更新隐藏状态 h/𝑡 以进行下一步预测;一旦队列达到其最大容量,最早进入队列的token将被最新 token替换,然后,与训练过程一致,当前步骤 𝑎/𝑡 的动作将基于最后 12 个视觉语言tokens 𝑋/𝑡 −11 ∼ 𝑋/𝑡 给出。

当前具身 AI 算法的基本设计原则,是更好地监督每一帧的输出。然而,逐帧监督违背机器人系统的理念。因此,引入预测轨迹,描述相应的训练修改,并通过运行时自适应轨迹长度决策进一步改进设计。

轨迹预测。预测最近未来的连续轨迹,而不是离散动作。用三阶函数来拟合机械臂的运动轨迹。对于需要预测的所有七个变量,为前六个变量(𝑟/𝑥(𝑡)、𝑟/𝑦(𝑡)、𝑟/𝑧(𝑡)、𝑟/𝛼(𝑡)、𝑟/𝛽(𝑡)、𝑟/𝛾(𝑡))中的每一个输出一条轨迹,夹子 𝑔 仍然是一个二进制值。

损失设计。改变模型输出后,有两种设计损失的方法。第一种是直接监督三阶函数的参数 𝑎,𝑏,𝑐,𝑑。第二种是用真值来监督轨迹。这里选择第二种方法有两个原因。第一个原因是通常没有数据集提供 𝑎,𝑏,𝑐,𝑑 的真值,这意味着需要先从轨迹真值中提取它,这会积累错误。其次,这些参数变化很大,不利于神经网络的学习。

以变量𝑟/𝑥(𝑡)为例。使用 MSE 监督训练集中的轨迹动作 𝑇/𝑥 和预测轨迹 𝑟/𝑥。 然后,通过反向传播(BP)更新轨迹参数。这样,​​不再需要先获得 30 Hz 的离散动作,而可以直接监控轨迹以获得更强大的模型。

如图所示,从 𝑡 = 2 到 𝑡 = 4 的视觉语言 tokens 通过掩码嵌入脱落,类似于 BERT [27] 等研究。

请添加图片描述

在基本的 Corki 算法中,轨迹的长度始终是固定的。假设预测间隔设置为 16.5 毫秒。不能采用更短或更长的轨迹。然而,机器人应用的最重要特征之一是它们通常会遇到突然的环境变化。

提前终止。因此,在所采用的轨迹长度方面提供灵活性。预测长度将用作实际所采用轨迹长度的上限,并允许提前终止。同样,假设预测间隔为 16.5 毫秒,实际轨迹可以是 3.3 毫秒到 16.5 毫秒,步幅为 Δ𝑡(假设摄像头传感器以 30 Hz 频率工作,则为 3.3 毫秒)。机器人提前终止后,模型将预测 16.5 毫秒的另一条轨迹。

提前终止,提供一定的灵活性,但这可能还不够。原因是当实际轨迹长度在训练和推理之间保持一致时,准确率会更高。如果训练中的实际轨迹长度为 6.6 毫秒,则推理期间应采用相同的长度。假设用户想要更改实际轨迹长度。在这种情况下,唯一的方法是训练两个模型,一个为 6.6 毫秒,一个为 9.9 毫秒,并在推理期间切换,这对于几乎所有机器人应用来说都是不方便的。

自适应轨迹长度。该方法是通过经验方法允许自适应轨迹长度,从而提高灵活性。其见解来自轨迹的曲率。当曲率较低时,动作不会发生显着变化,这表明较长的轨迹是可以接受的。但是,当曲率较高时,通常的情况是机器人遇到突然变化,此时较短的轨迹更好。

航点提取。使用称为航点的概念来识别自适应轨迹长度。例如,对于跨度为 16.5 毫秒的给定轨迹,航点定义为每 3.3 毫秒或每个时间步的轨迹上的一个​​点。如图所示,点 𝐴 是起点,点 𝐵 到 𝐹 是航点,点 𝐹 是终点。航点识别旨在找到机器人运动显著的航点。在本文中,显著的运动被识别为高曲率或夹持器状态的变化。

请添加图片描述

航点识别。检查从 𝐵 到 𝐹 的每个航点,并比较两个指标以识别具有高曲率的潜航点。鉴于上图的示例,当前正在检查的航点是 𝐷。对于 [𝐵, 𝐷) 区间中的每个点,将两个指标与相应的阈值进行比较。第一个是 ∠𝐵𝐴𝐷 和 ∠𝐵𝐷𝐴,阈值为 90 度。第二个参数是点 𝐵 到线 𝐴𝐷 或 𝑑(𝐵, 𝐴𝐷) 之间的距离,阈值为 𝑑。如果违反任何阈值,认为 𝐶 和 𝐷 之间某点的曲率很高,因此轨迹应该在 𝐷 而不是预测点 𝐹 处结束。轨迹的长度取决于得到的端点。

为了找到夹持器状态发生变化的潜航点,比较当前航点和下一个航点的夹持器状态。如果这两个航点的夹持器状态不同,则当前航点将被识别为具有移动的航点。

如下在算法 1 中解释这个过程。由于自适应轨迹长度是在运行时确定的,因此延迟很敏感。提出的算法是有效的,并且延迟低。在大多数情况下,算法 1 的总计算成本小于 500 FLOPs。给用户提供算法框架。用户可以决定轨迹预测的长度、是否需要提前终止、提前终止的级别以及是否需要自适应轨迹长度。

请添加图片描述

到目前为止,Corki 执行开环控制。该算法将产生具有不同长度的轨迹,并且在发生以下推理之前,机器人没有反馈信息。但是,开环控制可能会导致性能下降,因为它很容易累积错误。

修改这个开环特征。在执行每个轨迹期间,会在轨迹终点之前随机发回图像。这些图像使用 ViT [33] 进行编码。通过 LLM 生成的后编码特征和 tokens 被连接起来并用于预测后续轨迹。

在硬件设计中,加速控制过程以实现实时性能。控制模块的输入是 Corki 算法预测的轨迹,输出是将用于机器人每个关节电机的扭矩信号。将控制框架称为任务空间计算扭矩控制 (TS-CTC)。

任务空间计算扭矩控制 (TS-CTC) 方法因其能够处理任务空间中的参考输入而广泛应用于机器人的精确操作任务 [32]。如图展示该控制框架:

请添加图片描述

TS-CTC 的输入分为两部分。第一部分是参考轨迹 、参考轨迹的一阶导数 (速度) 和二阶导数 (加速度)。第二部分是来自传感器的机械臂关节角度和关节角速度 。输出是关节扭矩。为了实现平稳的机器人控制,产生扭矩的频率应至少为 100 Hz [56, 66]。

TS-CTC 包含五个关键计算模块,是整个过程中计算最密集的部分。在上图中将它们显示为红色块。正向运动学模块根据关节角度计算任务空间中末端执行器的位姿。雅可比块根据关节角度和速度计算任务空间中末端执行器的雅可比矩阵和速度。任务空间质量矩阵模块,根据关节角度计算任务空间中机械臂的惯性矩阵。任务空间偏置力模块根据关节角度和速度计算在任务空间中施加到机械臂的偏置力。

分析上述控制算法的计算模式,并确定两个关键特征。首先,如图所示,大量中间数据是可重复使用的。例如,雅可比矩阵的计算重​​用正向运动学的结果。同样,质量矩阵和偏置力的计算重用雅可比矩阵及其转置的结果。其次,所有模块主要由四个基本操作组成:计算每个连杆的姿势、每个连杆的速度、每个连杆的加速度和每个连杆的力。由于物理定律(例如,加速度是速度的导数),这些操作遵循固定的数据依赖性。例如,速度算子使用来自姿势算子的六维矢量来计算表示速度的六维矢量。加速度和力算子之间也存在类似的趋势。

请添加图片描述

利用上述分析,硬件设计有两个主要目标。首先,旨在定制电路和数据流水线,以最大限度地提高中间数据的重用率,实现高并行化和性能。其次,专注于定制片上 SRAM 设计,以便在计算过程中实现单次读写操作,从而消除额外的内存访问。

如图显示 Corki 架构,它由两部分组成。蓝色块形成一个数据流加速器,其中所有主要算子通过三个 FIFO 和一个线路缓冲 (LB) 连接。这种设计实现极端流水线;例如,第一个链接的速度计算可以在第二个链接的姿势计算开始时开始。黄色块是定制电路,其中任务空间质量矩阵单元重用来自姿势单元的数据,任务空间偏置力单元重用来自速度单元和扭矩单元的数据。由于数据流加速器和定制电路之间的延迟不同,加速器偶尔会出现停顿。一个简单的微控制器管理加速器的控制流。

请添加图片描述

片上缓冲器设计非常有效。在数据流加速器的前四个阶段,三个 FIFO 存储中间数据,因为生产者和消费者的速率相同。力单元和扭矩单元之间的线路缓冲捕获它们之间的速率不匹配。其余的中间数据存储在一个小的暂存器中。这种不同的片上缓冲器设计的组合,允许最小化片上 SRAM 消耗,同时确保在执行期间不与片外 DRAM 进行数据通信。

机器人控制具有一个独特的特点:计算频率高,但每个控制信号的变化却很小。对于 7 自由度机器人手臂,每个关节的运动每次都很小。然而,控制信号的计算是基于关节的,如上一节所示。基于关节的近似可以进一步节省计算量并减少延迟。

定量实验中,使用 7 自由度 Franka Emika Panda 机械臂 [21],并监控质量矩阵中逐项的变化,同时稍微调整每个关节的角度。例如,首先记录质量矩阵中的所有项,然后将第一个关节改变 0.1 弧度(约 6 度)、0.3 弧度(约 17 度)和 0.5 弧度(约 29 度),监控质量矩阵的变化。对机械臂的所有关节重复相同的实验。

设计一种简单而有效的近似计算方法来动态更新控制参数,从而降低控制过程中的计算成本。具体而言,给定输入关节角,首先根据从每个关节的角度运动得出的影响因子计算每个矩阵(例如,雅可比矩阵、质量矩阵等)需要更新的概率。在此过程中,对参数变化影响较小的关节具有较小的影响因子,而对参数变化影响较大的关节具有较大的影响因子。概率计算消耗的 FLOPs 不到 100,不会影响最终的延迟。
如果更新矩阵的概率超过某个阈值,则执行生成该矩阵的相应计算。否则,将重用上一个控制周期中的相应元素。可以避免超过 51% 的矩阵更新,而不会损失任何控制精度。

所提出的系统有三个关键组件。首先,服务器上发生的网络推理将预测轨迹。轨迹的参数将被发送到位于机器人上的控制器。控制器计算高频实际控制信号,使机器人按照轨迹规划移动,机器人将根据控制信号移动。在机器人移动过程中,在轨迹结束前的随机时间步骤,安装在机器人上的摄像头将捕获图像。这些图像将被发送回服务器,而机器人继续完成轨迹的剩余部分。因此,通信和机器人控制可以并行执行。当机器人到达轨迹终点时,它将捕获另一幅图像并将其发送回服务器。将使用此图像和之前的图像通过 LLM 推理预测新的轨迹。

在 RoboFlamingo 的基础上构建 Corki,但工作可以扩展到其他基于动作预测的具身 AI 机器人。在 PyTorch [30] 中实现算法创新,其中网络输出预测轨迹而不是离散动作。然后将该预测轨迹反馈到模拟环境中,以测试机器人的任务完成能力。

使用 Calvin [26] 数据集和软件模拟环境,这是最广泛使用的具身 AI 数据集之一。Calvin 包括 34 个不同的任务,其中 22994 个演示用于训练,1000 个序列用于测试。在两种不同的场景中评估算法:已见场景,其中测试集中的任务与训练期间遇到的任务相似但不完全相同;未见场景,这些场景更具挑战性,因为任务是全新的,在训练期间没有遇到过。

使用 Nvidia V100 GPU 评估推理延迟和能耗,并使用 NVML 测量功率 [29]。使用英特尔第 13 代 i7-13700 CPU 测量控制延迟和功率。在 Xilinx Zynq-7000 SoC ZC706 FPGA [28] 上实现 Corki 硬件以评估实际硬件性能。此外,在 7-DoF Franka Emika Panda 机器人手臂 [21] 和服务器之间建立 Wi-Fi 通信以测量通信延迟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值