Robo-DM:大型机器人数据集的数据管理

25年5月来自伯克利分校和谷歌的论文“Robo-DM: Data Management For Large Robot Datasets”。

大量的遥控机器人演示数据集可用于训练基于 Transformer 的模型,这些模型有可能泛化到新的场景、机器人和任务。然而,整理、分发和加载大型机器人轨迹数据集(通常包含视频、文本和数值等模态,包括来自多个摄像头的数据流)仍然具有挑战性。Robo-DM,是一款开源云端数据管理工具包,用于收集、共享和学习机器人数据。使用 Robo-DM,机器人数据集以可扩展二进制元语言 (EBML) 的独立格式存储。Robo-DM 可以显著减少机器人轨迹数据的大小、传输成本以及训练期间的数据加载时间。与 OXE 数据集中使用的 RLDS 格式相比,Robo-DM 的压缩可节省高达 70 倍(有损)和 3.5 倍(无损)的空间。 Robo-DM 还通过使用内存映射解码缓存来平衡视频解码负载,从而加速数据检索。与同样采用有损视频压缩的框架 LeRobot 相比,Robo-DM 在顺序解码时的速度提高了 50 倍。对 Robo-DM 训练的模型进行物理评估,该模型包含有损压缩、拾取放置任务以及 In-Context Robot Transformer 任务。其中 Robo-DM 使用原始数据集 75 倍的压缩率,并且不会降低下游任务的准确率。


近期研究 [1–7] 表明,视觉-语言-动作(VLA)模型 [1, 4, 5] 可以增强机器人在不同环境中处理多种设置的能力和泛化能力。大型模型训练的关键要素是拥有大量且精心准备的遥控机器人演示轨迹数据集,例如 Open-X 实例 (OXE) 数据集 [2]。然而,目前的机器人数据管理效率低下 [2]。每个机器人演示都包含一系列动作和观察结果,与 VLM [8–12] 和 LLM [13, 14] 中的图像或文本 tokens 相比,学习样本规模更大,结构也更加多样化。在 TB 甚至 PN 规模下(有时被称为大数据 [15]),现有的机器人数据存储方法效率低下。

典型的机器人数据集包含多个 episodes,即智体从起始状态到终止状态执行的一系列动作。每个 episode 除了语言指令和其他元数据(例如机器人、任务、环境和控制方案规范)之外,还包含多个传感器数据流。典型 episode 的大小从 1 MB 到 400 MB 不等,具体取决于 episode 长度、压缩级别、摄像机数量和摄像机分辨率。数据流可以以不同的采样率记录。episode 通常存储为矩阵序列;例如,使用 DROID [6] 进行数据收集可使用分层数据格式 5 (HDF5) [16] 自动存储数据,该格式支持矩阵的分层存储。OXE 使用强化学习数据集 (RLDS) [17],一种Tensorflow 数据集 (TFDS) 的扩展,来存储强化学习演示。将图像和传感器数据直接存储在矩阵中虽然无损,但不节省空间。一个新兴框架 LeRobot [18] 提供了一个平台,用于共享基于有损视频压缩和 HuggingFace 数据集的机器人模型和数据集。但其文件结构复杂,且由于解码,加载速度一般较慢。

机器人数据收集和使用面临以下挑战:

(A) 传输效率:分发机器人数据集成本高昂。云服务提供商(例如 Google Cloud Platform (GCP) 和 Amazon Web Services (AWS))会向数据主机收取数据存储和出站数据传输的费用。数据传输成本通常超过存储成本。例如,在 Google Cloud 上存储 8.9 TB 的 Open-X 数据每月费用为 172 美元,但每次完整下载的费用在 172 美元到 1,540 美元之间。如果本地存储无法存储完整数据集,则直接使用云存储进行训练需要重复下载,这会进一步增加网络流量和数据主机的成本。因此,提高数据压缩和传输效率可以降低主机成本并鼓励数据集的公开共享。

(B) 可用性和简单性:现有的机器人数据框架对文件结构、数据布局、语义和对齐方式有所限制。特别是,混合方法依赖于特定于框架的假设来同时处理多种格式。扩展当前框架或在框架之间迁移可能颇具挑战性,会导致结构和文件组织变得复杂。如图展示了不同存储格式的比较。

请添加图片描述

(C)数据加载性能:大型机器人数据集通常加载到计算训练应用程序中。在训练中,解码后的帧经常被重用和随机访问,并且解码后的数据会按需加载。使用高压缩率的现有框架有时会导致计算资源利用率过高,并影响训练性能。因此,高效且性能卓越的数据加载框架应该能够充分利用可用资源,避免资源争用。

Robo-DM,是一款高效的云端工具包,用于收集、共享和学习机器人数据。Robo-DM 通过采用可扩展二进制元语言 (EBML) 的统一容器格式,简化了视觉、语言和动作数据的存储。Robo-DM 高效地编排异构数据流,支持灵活的无损压缩和有损压缩,从而提高传输效率。在前期工作中,LeRobot [18] 通过实证评估了 FFmpeg 中有损视频压缩参数对机器人策略准确性的影响。Octo 也通过将 OXE 中的图像帧压缩为有损图像进行预训练 [1]。Robo-DM 通过使用内存映射缓存来加快数据检索和加载速度,从而提高了需要重复访问数据的训练工作负载的数据加载性能。缓存加载和解码是负载均衡的,以最大限度地提高计算、内存和存储资源的利用率。Robo-DM 几乎不需要与现有框架集成。它支持与主流框架进行即插即用的数据收集、训练、回放和可视化,还可以轻松导出为 HDF5 和 RLDS 等其他格式。

Robo-DM 如图所示:

请添加图片描述

与现有机器人数据框架相比,Robo-DM 有六大新特性:
(1) 自包含机器人数据存储:Robo-DM 采用自包含文件格式,集成并存储异构机器人数据流,确保所有必要数据均整合到单个文件中。
(2) 视觉、语言和动作数据编排:Robo-DM 的格式支持多种二进制机器人数据流,包括传感器数据、环境规范、语言指令和运动控制。
(3) 数据灵活性:Robo-DM 可扩展至新的不同数据流、压缩算法和视频编码格式。例如,Robo-DM 允许用户灵活地选择将视觉数据存储为序列化矩阵、图像,或使用有损或无损视频编解码器进行编码。使用 Robo-DM,用户可以记录所有带有原始时间戳的数据,而无需进行数据对齐的启发式方法。
(4) 高效的数据集大小:Robo-DM 能够高效地编码异构时间对齐的流。它使用视频压缩技术显著缩减文件传输大小。
(5)数据加载效率:Robo-DM 通过缓存解码帧并平衡可用硬件资源利用率来高效加载数据。
(6)简单的数据收集、训练和可视化:Robo-DM 采用简洁的数据收集接口,只需极少的修改即可与现有系统兼容。它与 TensorFlow 和 PyTorch 接口无缝集成,易于上手。它还允许将收集到的数据导出到现有的先进数据存储框架,例如 RLDS 和 HDF5。Robo-DM 支持通过机器人操作系统 (ROS) 2 重放消息,ROS 2 是开发机器人应用程序的事实标准。可以使用现成的 ROS2 工具(例如 rviz [34] 或 Foxglove [35])来可视化重放的流。


Robo-DM 设计

统一且自包含的机器人数据格式

Robo-DM 使用可扩展二进制元语言 (EBML) [36] 进行数据结构化。EBML 是一种多功能且可扩展的标记语言,它结合了可扩展元语言 (XML) 的灵活性和二进制编码的高效性。它以类似于 XML 的层次结构组织二进制数据元素,从而允许嵌套元素和一致的数据管理。这使得 EBML 能够在单个容器中处理来自不同来源的数据流,并使用自描述元素来确保兼容性和未来的可扩展性。EBML 的一个显著应用是 MKV [37] 视频容器格式,该格式使用它在单个容器中以时间对齐的方式存储多个视频和音频轨道以及字幕。

如图展示 Robo-DM 如何封装异构机器人数据流。Robo-DM 压缩视觉流并将机器人数据序列化为字节包。字节包封装了原始字节和描述信息,例如时间戳和流信息。为了高效地重放数据并保持不同频率数据流之间的相对时间信息,所有数据包都存储了相对于事件开始时间的相对时间戳。Robo-DM 扩展了 MKV 格式来存储机器人数据,以确保同一容器内视觉、语言和动作等多个流的同步。

请添加图片描述

数据收集和后处理。压缩可能需要大量计算。为了防止干扰数据收集过程,Robo-DM 利用其文件格式的灵活性,首先将所有数据存储为原始序列化形式。数据收集完成后,Robo-DM 会遍历收集到的数据,对需要压缩的数据进行转码,并重新排列(remux)收集的数据以排列数据包。由于训练应用程序有时会在给定的时间范围内访问事件,因此 Robo-DM 将时间对齐的数据流分组在一起。在查询特定帧时,元数据用于识别相关片段,并从切片开始前的最新关键帧开始解码视频。所有解码后的轨迹都会被缓存,以加快后续访问速度。

传输高效的存储、检索和加载

传输高效的压缩。Robo-DM 统一了需要不同压缩和序列化机制的异构数据流。由于 Robo-DM 原生支持字节流,因此它与主流的字节压缩算法和视频编码器无关。对于视觉数据,可以使用现成的视频压缩算法(例如 H.264 [38]、H.265 [39] 和 AV1 [40])压缩三个通道(红、绿、蓝)。对于需要全精度的大型矩阵,例如立体深度图像,用户可以选择使用无损压缩算法(例如 FFV1 [41, 42])进行压缩。

高效的解码缓存。对于顺序访问模式,基于压缩的算法可以通过按顺序解码所有帧来减少空间占用。训练时,解码后的帧会被频繁重用和随机访问,并且解码后的数据会按需加载。Robo-DM 使用内存映射文件 (mmap) [16, 43] 来分摊随机访问模式。mmap 会在进程的虚拟地址空间中创建到缓存文件的新映射。如果使用了部分数据,则只有实际使用的文件部分会被加载到内存中,从而节省 I/O 带宽和物理内存。

解码和解码缓存的负载平衡

Robo-DM 自动选择计算量大的解码、直接加载到内存缓存以及从磁盘加载解码后的矩阵。为了防止过度使用单个资源,Robo-DM 会估计访问数据的潜在延迟并动态平衡访问。具体来说,如果内存资源未得到充分利用,且已有先前解码的矩阵可用,则意味着解码数据很可能位于物理内存中,而无需通过 mmap 缓存到磁盘,Robo-DM 可以直接使用解码后的缓存。相反,如果内存已满,缓存未命中频繁发生且数据访问频率不高,Robo-DM 不会从缓存加载,而是直接解码视频数据。

与现有框架集成

数据采集接口。为了与自定义数据采集软件栈集成,Robo-DM 使用简洁的数据采集编程接口。Robo-DM 数据采集库根据输入的视觉、动作和语言数据推断时间和数据类型。由于 Robo-DM 数据存储格式简单,该数据采集库对整个自定义数据采集软件栈的代码复杂度影响极小。
即插即用的数据采集和可视化。Robo-DM 支持与支持 ROS2 的设置集成,以即插即用的方式收集数据。在ROS2中,计算模块,节点,可以部署在不同的机器上。ROS2 提供了一个现成的工具 rosbag,用于在机器人运行期间捕获来自传感器、日志和各种主题的数据流。Robo-DM 支持将机器人数据转码并导出到 rosbag,同时记录所有时序信息。Rosbag 也可以直接在 ROS2 中回放。ROS2 社区提供了许多框架,例如来自开源社区的 rviz [34] 和 Foxglove [35],后者是一个基于浏览器的工具,可以实现 ROS 2 主题的可视化。除了回放视频外,这些可视化工具还支持 3D 可视化,这对于机器人状态和运动等动作数据非常有用。

数据加载接口。为了以最少的修改支持现有的训练框架,Robo-DM 支持以与访问典型 HDF5 文件相同的方式访问机器人数据。Robo-DM 支持将机器人数据转换为其他最新格式,例如 HDF5 和 Tensorflow 数据集。


设置。用标准工作站配置评估 Robo-DM:英特尔 i9-13900K 处理器,96GB 内存和 NVidia 4070 Ti Super GPU。该工作站配备 6TB NVMe M.2 SSD,读取吞吐量高达 5000 MB/s,写入吞吐量高达 2500 MB/s。它通过 1 Gbps 以太网连接互联网,可以 10 Mbps 的速度从 Open-X-Embodiment Google Cloud Bucket 下载。确保批处理文件能够完全加载到内存中,无需交换空间。Robo-DM 中的视频流由 CPU 解码,无需专门的 GPU 或额外的硬件解码器。

基线。将 Robo-DM 与以下基线进行比较 1)RLDS [17]。Open-X-Embodiment 以 RLDS 格式存储和共享。在评估中,直接使用官方说明下载和加载数据集。 2)LeRobot [18]。用提供的官方脚本将 Open-X-Embodiment 数据集转换为 LeRobot 数据集。转换过程中省略 Open-X-Embodiment 中的某些功能。按顺序提取示例说明建议的episodes。 3)HDF5 [16]。使用 Robo-DM 将 Open-X-Embodiment 数据集转换为 HDF5 格式。由于每个轨迹一个 HDF5 文件,用与 Robo-DM 相同的设置实现预取缓冲区和 PyTorch 加载器。实验中用 50 个 episodes 的预取缓冲区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值