物理AI实验室 2.2:用 LeRobot 训练 ACT,把数据集元数据对到模型输入,再逐项核对训练与评测命令

用 LeRobot 训练 ACT,把数据集元数据对到模型输入,再逐项核对训练与评测命令。本页整合中文视频、图文讲解、自测与出处,2026-10-15 更新。

本节视频

配音由 AI 合成。 视频章节、文字稿与出处

文字稿

文字稿

知行问

上一集搭好了场景,机器人还是不会抓,它到底跟谁学?这一集,我们用真人远程操控的示范数据。训练出一个会抓取的策略。全程用 LeRobot 完成,不碰真机也能开始。

从示范到策略

先把目标说清。给机械臂两样东西:看到的画面,和此刻的关节角度。具体点说:状态有六个位置值,五个臂关节,加一个夹子的开合。动作给出它们接下来要到的位置。它要输出的,是下一步怎么动。最省事的办法不是写规则。是给它看人怎么做。这就是模仿学习:把人的示范当老师。让策略照着学。为什么不写规则?抓一个杯子,位置、角度、光线千变万化。规则根本写不完。示范怎么来?人握着另一只手臂遥控。机器人同步动,画面和动作一起被录下来。录的时候,画面和动作严丝合缝对齐。差半拍,策略就学歪了。在 LeRobot 里,各种机器人的数据都是一种格式。所以别人的数据,你也能直接拿来训练。我们用 LeRobot 社区公开的一个数据集。它录的是 SO 系列机械臂的抓取和放置示范。里面有五十段真机示范,两路相机。一路从上方看全局,一路从侧面看细节。每段都是同步的画面加动作。数据质量很关键。示范越干净、越多样,策略学得越稳。乱糟糟的示范,只会教坏它。

ACT:一次出一小段

训练用的模型叫 ACT,也就是动作分块变换器。它是 LeRobot 推荐的入门策略。关键在名字里:动作分块。它不是一步一步预测。而是一次出未来一小段动作。一小段有多长,可以调。太短,就退回逐步预测。太长,又跟不上变化。为什么要分块?一步一步预测,小误差会越滚越大。动作就容易发抖。里面有一个视觉网络看图。一个变换器把画面和关节角揉在一起,再吐出动作。视觉网络认画面,变换器管时序。两个一配合,动作就顺下来了。别看它做的事复杂,个头并不大。文档说,它只有大约八千万个参数。小归小,本事不小。文档说,往往只要五十条示范,就能有较高的成功率。但它有个短板。它只学会了这一个抓取任务。你跟它说话,它也听不懂。原来不写规则也行!五十段左右示范,往往就有较高的成功率。

动手训练一次

打开本集 Notebook。第一步,装好 LeRobot,确认显卡能用。数据不用手动下载。加载器会从 Hub 获取数据,放进本地缓存。我们先检查样本,再开始训练。第二步,把数据集加载进来。看看画面多大、动作有几维。第三步,一行命令开始训练。告诉它:用 ACT 策略,数据在哪,算在显卡上。用什么来算?设备这一项选显卡。没显卡就退到 cpu,但会慢很多。开始训练之后,它反复做一件事。从数据里随机取一批,算算差多少,再微调参数。批量大小先设小,比如八。显存还够,再往上加。别一上来就撑爆显存。第一次先跑个小配置,验证流程能走通。确认没问题,再放大。小配置几分钟就跑完。看没报错、损失在动,就放心放大。正式训练要多久?文档说,单块 GPU 上,训练十万步,大概要几个小时。训练时要盯住损失。它稳稳往下走,就说明策略在学东西。日志会一直打印损失和速度。你也能开一个面板,实时看曲线走势。训练能中断,再接着来。存下的检查点,随时能加载回来继续。训练完,你会拿到一个检查点。那就是学好的策略,随时能载入。想分享给别人?再加一个参数,就能把策略推到 Hub 上。

评测与边界

这里要说清一件事。这份数据是真实机器人录的,没有配套仿真环境。在真实机器人上评测,又贵又慢。所以很多人先在仿真中练,练好了再上真的机器人。所以要真正评测,得把策略放回真机上跑。看它到底抓不抓得起来。在真机上,它连着相机和电机。一次一次地抓给你看,你才知道行不行。真实机器人上还有一堆麻烦:标定、延迟、磨损。仿真里可以先绕开,上了真机,还得一一面对。评测别只跑一次。多跑几十次,取平均。跑一次成功,可能只是运气好。没有真机也行:换一个带仿真的任务。用评测命令在标准题库上打分。还有:一个成功率,别急着信。要问它在什么物体、什么光线、试了多少次测出来的。说到底,泛化仍是难题。换个杯子、换个光,成功率还可能往下掉。所以别只报一个数。把测试条件写清楚。别人照着做,才复现得了。回顾一下三个要点。一,模仿学习,看示范,不写规则。二,ACT 一次出一小段动作,模型小、训练快。三,真机数据要在真机上评测,泛化还是难题。所以机器人不是被编程的,是被示范教会的!那要让它听懂一句话再动手,又该怎么训?下一集见!

证据与出处

50 段 · svla_so101_pickplace 数据集:50 段 SO 系列机械臂真机抓放示范,30 fps、两路相机(meta/info.json;robot_type 为 so100_follower,so101 只见于数据集名) [O] · Hugging Face 数据集 · lerobot/svla_so101_pickplace · meta/info.json

6 个 · 位置值构成状态和动作:5 个臂关节 + 1 个夹爪(数据集 meta/info.json 的 observation.state / action 特征名) [O] · Hugging Face 数据集 · lerobot/svla_so101_pickplace · meta/info.json

约 8000 万 · ACT 策略的参数量,轻量、易上手(LeRobot 官方文档) [O] · Hugging Face · LeRobot 文档:ACT

50 条 · 示范往往就能让 ACT 达到较高成功率(LeRobot 官方文档的概括说法,非本片实测) [O] · Hugging Face · LeRobot 文档:ACT

10 万步 · 训练在单块 GPU 上约需几个小时(LeRobot 官方文档) [O] · Hugging Face · LeRobot 文档:ACT

动手与自测

小测公开,答案与解析在作答后显示;图文课里的练习答案需登录查看。

流程图:标题“ACT:从图像到一段动作”下,五个带编号 1 到 5 的实心圆从左到右用箭头相连,下方文字依次为:输入,多路 RGB 图像;视觉骨干,ResNet-18 处理图像;Transformer 编码器,综合图像特征、关节与潜变量 z;Transformer 解码器,用交叉注意力生成动作序列;输出,一段 k 个未来动作。底部是来源说明。
LeRobot 文档 ACT 页面描述的结构:多路 RGB 图像经视觉骨干 ResNet-18 处理,Transformer 编码器综合相机特征、当前关节位置与一个学到的潜变量 z(推理时设为 0),解码器用交叉注意力生成一段 k 个未来动作。关节位置直接进入编码器,不经过视觉骨干;箭头表示数据流向,编号不是排名,图中没有任何测量值,这一页文档没有给出 k 的取值。来源:LeRobot 文档 · ACT。

第 2.2 集的视频用 LeRobot 走完一遍“把示范变成策略”:输入是看到的画面和此刻的关节角度,输出是接下来要到的位置;训练用的模型是 ACT(Action Chunking with Transformers,动作分块变换器),一次预测未来一小段动作;数据是 LeRobot 社区公开的数据集 svla_so101_pickplace,录的是 SO 系列机械臂的 50 段真机抓放示范;训练是一行命令,评测则要回到真机。片中的数字卡来自两份公开材料:数据集的 meta/info.json,以及 LeRobot 文档的 ACT 页面(约 8000 万参数、往往 50 条示范就有较高成功率、单块 GPU 上 10 万步约几个小时)。本篇是这一集的图文课与练习,不重复文字稿,而是把这两份材料并排读:元数据里的每个字段对应 ACT 的哪个输入或输出,文档里那条训练命令的每个参数管什么、没说什么,评测示例和训练数据在机型与相机上哪里对不上。贯穿全文的规则:一条命令、一个数字,只对写出它的那份数据和那个版本的文档成立,运行前要逐项对上。

本节视频、文字稿与出处在本页上方,全季安排见课程大纲。上一课物理AI实验室 2.1:用 MuJoCo 搭抓取场景,把 XML 里没写的质量、单位、步长和碰撞规则算出来结尾问:场景有了,机器人怎么从数据里学会自己动作?本课接着回答。这份数据集的段数、帧数和总时长,物理AI实验室 1.5:数据从哪来,从 SO-101 元数据算出示范时长,再分清三条来路的单位与动作空间已经从同一份元数据算过;ACT 论文里“约 10 分钟示范、80–90% 成功率”的实验条件,物理AI实验室 1.6:模仿学习,手算误差怎样滚出示范覆盖范围,再把 ACT、扩散策略与数据规模律的数字放回各自条件已经讲过;一个成功率要写清条件、配对和次数,物理AI实验室 1.8:评测,把“净增 2”拆成配对表,再给失败标签和随机种子算一笔账已经练过。本课不再重复,只讲视频新用到的 LeRobot 文档页,以及它和元数据之间要核对的地方。

公开小测的 5 道题附完整解析;登录后可完成三项练习:把元数据字段对到 ACT 的输入与输出,算出几种动作块长度覆盖多长时间,再为一份虚构数据集写训练命令;用一组虚构计时给训练预算记账,分清步数、批量与样本数;在运行前审一份虚构的真机评测方案,再改写它的报告。每项都附分步解法、常见错误与 20 分评分标准。

一、两份材料,各自说了什么

数据集元数据。meta/info.json 是一个 JSON 文件。下表列出它记录的字段与值,这是元数据事实的整理,不是原文句子:

字段值读法
robot_typeso100_follower机型字段;数据集名里的 so101 只出现在名字中,所以视频只说“SO 系列机械臂”
total_episodes5050 段示范
total_frames11939全部帧数
total_tasks1只有 1 个任务
fps30每秒 30 帧;动作和状态也按 30 fps 记录
splitstrain: 0:5050 段全部划在 train,元数据里没有留出的测试段
observation.images.up、observation.images.sidevideo,形状 [480, 640, 3](高、宽、通道),av1 编码两路相机
observation.statefloat32,6 维shoulder_pan.pos、shoulder_lift.pos、elbow_flex.pos、wrist_flex.pos、wrist_roll.pos、gripper.pos
actionfloat32,6 维名称与 observation.state 相同
timestamp、frame_index、episode_index、index、task_index各 1 维时间与编号
chunks_size1000见第二节

片中两张数字卡对应元数据里的两处原文,各自独立摘录:

"total_episodes": 50

"gripper.pos"

第二处是 action 与 observation.state 名称列表的最后一项:前五项是臂关节,最后一项是夹爪,合起来就是视频说的“六个位置值”。

LeRobot 文档的 ACT 页面。片中三张数字卡对应的三句,各自独立摘录:

Lightweight : Only ~80M parameters, making it efficient and easy to work with

Data Efficient : Often achieves high success rates with just 50 demonstrations

Expect a few hours for 100k training steps on a single GPU

页面还写道:ACT 是一个轻量、高效的模仿学习策略,特别适合精细操作;因为训练快、算力要求低、表现强,它是从 LeRobot 起步时首推的模型;它出自 Zhao 等的论文 Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware。训练技巧里另有两条:ACT 的默认超参数对大多数任务都好用;批量从 8 开始,再按 GPU 显存调整。

读这些材料要注意三点:

  • 都是 O 级,但性质不同。元数据是数据集文件自己的记录;文档是 LeRobot 团队对自家模型的介绍。本站没有运行训练或评测,没有核对其中任何一项。
  • 两个“50”不是一回事。数据集有 50 段示范;文档说 ACT 往往 50 条示范就能有较高成功率。后者是文档的概括说法,没有指明任务、机型或评测条件,不是对这份数据集的预测;片中数字卡也注明它不是片中实测。ACT 论文里另有一组“10 分钟或 50 条示范”的实验条件,见 1.6。
  • “几个小时”没有给出 GPU 型号、批量或任务。它是 10 万步的时长参考,不是训练必须跑满的步数,也不是评测有效的条件。

局限 / 注意

  • meta/info.json 读的是数据集 main 分支的版本,抓取于 2026-10-14;main 分支可能更新。1.5 课在固定提交上读过同一份元数据,段数、帧数、帧率与相机路数和本课一致。元数据属 O 级;本课没有下载或核对数据文件和视频,元数据也不说明录制方式、示范质量,或 robot_type 字段之外的硬件信息。
  • LeRobot 文档的 ACT 页面属 O 级厂商文档,读的是不带版本号的地址,抓取于 2026-10-14;页面提供 main、v0.6.1、v0.5.1、v0.4.4 等版本切换。本课没有绑定 LeRobot 版本,命令名和参数可能随版本变化。约 8000 万参数、50 条示范、10 万步约几个小时都是文档的概括说法,不是本站的测量,也不是这份数据集上的基准;“几个小时”没有给出 GPU 型号。
  • 页面文本在提取时,${HF_USER} 两侧和 –wandb.enable= 之后带空格,评测命令里 –task 一行的注释与 –duration=60 在同一行;本课去掉了训练命令里的这些空格,其余照页面列出。文档正文写 lerobot-record,示例写 lerobot-rollout,本课没有判断哪个对应当前版本。
  • –output_dir、–job_name、–policy.repo_id 的含义,chunks_size 指数据文件分组,action 是训练目标,以及“一个样本对应一帧”“动作按数据集帧率执行”,都是本课的推断或假设,文档和元数据没有这样写。
  • k = 30 及练习里的 k、cup_pick_v1、全部计时、检查点间隔、团队 W 的方案与报告、试验次数和成功次数都是练习用的虚构;1.0 s、180、67.0 遍、4.17 h、33.8 min、85%、45% 等只在这些假设下成立,不是任何系统的性能。
  • 本站没有运行片中 Notebook、训练或评测命令。评测命令会驱动真实机械臂;硬件安全措施不在本课范围内,纸面计算和仿真结果都不是硬件安全验证。数据集名里有 so101,但 robot_type 是 so100_follower,本站没有一手来源确认录制硬件,所以本文和视频都只说“SO 系列机械臂”。

链接

观看本节视频(中文) · 2.2