AWS 开源的 Strands Robots 与 Hugging Face Storage Buckets 打通机器人数据闭环:录制演示数据直接同步到存储桶,训练时从 Hub 流式读取,再将策略部署回实体机器人。整个过程使用同一套 LeRobot 格式,无需本地拷贝。
AWS 开源的 Strands Robots 把机器人抽象、仿真和 LeRobot 栈封装成 AgentTools,组合为一个 Strands 智能体。上一篇文章介绍了从 Hub 数据集到实体硬件的方向;本篇沿数据反向流动:从录制帧回到部署策略,中间使用 Hugging Face Storage Buckets——一种基于 Xet、可变、非版本化的对象存储仓库(2026 年 3 月发布),与数据集仓库同处 hf:// 命名空间,用现成的 hf CLI 操作。

一个 Robot("so100") 既负责录制,也负责回放与部署。录制完的 LeRobotDataset 通过 sync_dataset_to_bucket(...) 同步到 bucket;训练时用 stream_dataset(...) 按帧流式读回同一份数据;训练出的 checkpoint 再部署到同一个 Robot。整个流程围绕同一个对象、同一个后端:
from strands import Agent
from strands_robots import Robot
sim = Robot("so100")
agent = Agent(tools=[sim])
agent("Record a pick-the-cube demo and sync it to my-org/robot-fave.")
for batch in sim.stream_dataset("my-org/robot-fave/cube_pick", repo_type="bucket").dataloader(batch_size=64):
...
LeRobot 录制的数据是一组随采集持续增大的文件。每次推入带版本的 dataset 仓库,追加就会产生一次 commit,所有历史版本都被保留;采集场景则更需要原地覆写的工作层。Storage Bucket 恰好如此:无需配置 IAM 角色、CORS 规则或上传服务。sync_dataset_to_bucket("/tmp/cube_pick", "my-org/robot-fave") 会把校验过的数据集同步到 hf://buckets/...,stop_recording(bucket=...) 则在停止录制时立即同步。实体 SO-101 上用 LeRobot 的 record CLI 完成主从遥操,产出的磁盘格式与仿真完全一致,同一段同步代码直接复用。
Bucket 后端是 Xet,用内容定义切片做字节级去重:插入几个字节只改变所在切片,不会移动后续所有边界。Hugging Face 的基准测试显示,500 MB 文件改动 1% 后重传只需 5.5 MB,改动 5% 上传 27.5 MB,改动 10% 上传 55 MB。Strands Robots 沿用 LeRobot 分片布局:数据写入 100 MB 的 Parquet 分片,视频写入 200 MB 的 MP4 分片,所以一天采集后的再次同步只需上传新增的尾部片和当前增长的半满片。

先在本地下载整个数据集,GPU 只能等几百 GB 拷贝完成;从 Hub 直接流式读取则让 GPU 从第一批数据就开始训练。Strands Robots 通过 stream_dataset() 暴露 LeRobot 的 StreamingLeRobotDataset:摄像头帧按需从远端 MP4 分片解码,状态和动作来自 Parquet 分片,本地磁盘只有 meta/ 目录。也可以让 LeRobot 训练器直接读取 bucket:
lerobot-train --policy.type=act \
--dataset.repo_id=my-org/robot-fave/cube_pick \
--dataset.repo_type=bucket \
--dataset.streaming=true \
--num_workers=4
实测在单张 NVIDIA L4 上,对 120 帧片段用 ACT 策略训练 500 步,约 133 秒完成。Hugging Face 的预热缓存会把数据放到任务运行区域附近,集群读取接近本地,10 GB 负载下暖 CDN 读取约 1,086 MB/s,冷读约 780 MB/s。

训练好的 checkpoint 通过同一个 Robot() 部署,只需把模式改为 mode="real":
robot = Robot("so100", mode="real", port="/dev/ttyACM0",
cameras={"front": {"type": "opencv", "index_or_path": "/dev/video0", "fps": 30}})
agent = Agent(tools=[robot])
agent("Pick up the red cube.")
实体手臂运行动作的同时,录制的演示仍以 LeRobot 格式落盘,再同步回 bucket 进入下一轮。如果数据已经在 Amazon S3,同一套分片格式原样可用;选择 Storage Bucket 则获得 Hub 原生的 hf:// 同步和流式读取,省掉独立存储路径。
完整可运行示例见 05_streaming_data_loop.ipynb,在仿真和 mock policy 下即可逐格跑通。生产环境注意:给写入采集桶的 token 单独限权、使用私有 bucket、每次采集指定独立 run_id,并只从可信组织加载模型 checkpoint。
原文链接:Hugging Face
本文由前途科技编辑整理
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断