机器人的数据闭环听起来并不复杂:录制示范、上传到 Hub、训练策略、部署回硬件。但 AWS Strands Agents 团队与 LeRobot、Hugging Face 在最新一篇系列文章中指出的问题更实际——这条流程跑一次没问题,难的是每天都跑。每一轮都要把整包数据搬来搬去,成本会随迭代次数线性累积。

文章宣布的做法,是把记录、训练、部署收进同一个智能体循环,核心组件是 2026 年 3 月上线的 Hugging Face Storage Buckets。Strands Robots 是 AWS 开源(Apache 2.0 许可)的 SDK,它把 LeRobot 的录制、数据集与硬件抽象封装成 AgentTools;Storage Buckets 则是一种可变、不做版本控制、由 Xet 支撑的对象存储仓库,与数据集仓库共享 hf:// 命名空间,可以直接用现有 hf CLI 操作。
这套闭环可以概括为四个环节:
- 录制:从仿真或硬件把示范写成标准 LeRobotDataset,直接落到 Storage Bucket;
- 同步:Bucket 只同步变动字节,避免整包重传;
- 训练:
stream_dataset()或lerobot-train从 Bucket 流式读取,无需完整下载; - 部署:检查点经
create_policy()加载,切换mode="real"回到实体机械臂。
关键机制是字节级去重。Bucket 采用内容定义分块,上传时只同步实际变化的字节,而不是整个文件。文中给出的例子是:对一个 500 MB 对象做约 1% 的修改,实际只传输了 5.5 MB。这意味着每天新增的示范数据不必再触发整包重传。
训练侧同样不再需要先把数据集完整下载到 GPU。stream_dataset() 通过字节范围读取直接从 Bucket 拉取批次,摄像头画面在读取时从远端 MP4 分片即时解码,状态与动作数据来自 Parquet 分片。LeRobot 自己的训练器也走同一引擎,可以用 lerobot-train 配合 --dataset.repo_type=bucket 与 --dataset.streaming=true 直接流式训练。文中记录的一次实测配置是:在单块 NVIDIA L4 上,对 120 帧片段做 500 步 ACT(约 5160 万参数、有效批大小 8)训练,耗时 133 秒,并产出一个可被 create_policy() 重新加载的检查点。
部署环节则把“一体化”收了口。训练出的检查点通过同一个入口加载,再切换一个关键字参数 mode="real",同一套智能体代码就从仿真切到实体 SO-101 机械臂;硬件上录回的新示范又写回同一个 Bucket,循环继续。
文章同时强调,这条闭环仍然需要有人(或智能体)做判断:哪些片段值得保留、场景偏移到什么程度需要重新录制、当天的数据量是否足够训练、哪个检查点应该替换机械臂上正在运行的版本。Bucket 不保留修订历史,因此需要长期审查的版本化数据集仓库仍然是归档出口;而一旦智能体开始写入共享存储,写权限、覆盖行为与提示注入的信任边界都得更谨慎地管理。
把流程落到可运行代码的入口是 examples/notebooks/05_streaming_data_loop.ipynb,配套示例可以在无硬件、无 GPU 的环境下先跑通。文章还引用 LeRobot Project Pulse 的统计称,LeRobot 数据集格式已被 Hugging Face Hub 上超过 8,000 个发布者、逾 90,000 个数据集与模型采用,这也是这套闭环能在现有生态上直接成立的前提。
作为系列文章的后续,上一篇已经介绍过 Robot() 工厂函数如何用一份代码在仿真与实体 SO-101 之间切换;这一次则把视角转到数据本身:让记录、训练、部署共享同一份字节流,而不是各自维护一份副本。