参考:清华科协 2026 暑培《具身智能:从 VLA 到 World Action Model》讲义(../90_清华科协暑培2026_*.pdf)、LeRobot 官方文档、openpi 官方 README,以及 ../ 目录下的论文。

这本手册怎么读

该内容针对的情况:
1.完全不知道VLA是什么
2.知道概念,想快读跑起来
3.集成传感器雷达等
4.模型跑起来了但不够好
5.遇到不认识的词等

一共有如下几章内容进行:
1.用"五个问题"定位 VLA;它物理上是什么;输入输出是什么
2.看懂任何一张 VLA 架构图:视觉塔、语言底座、动作头;离散 vs 连续动作;动作块与三个 horizon
3.现在能拿到的模型、框架、数据集、仿真器、硬件要求;选型建议
4.示范数据长什么样;数据金字塔;LeRobotDataset 格式;怎么录;多少条够
5.SmolVLA 和 π0/π0.5 两条微调流水线;关键超参;归一化陷阱;怎么判断训好了
6.推理循环;策略服务器;动作块怎么执行;延迟预算;MCU 在哪一层;安全
7.新增一路观测的两条路;遥操作设备;跨本体动作适配
8.模仿学习之后:DAgger、人工接管、RL 的现实用法
9.分阶段清单、常见坑、自测题

第 1 章 VLA 是什么

VLA(Vision-Language-Action model)是一种神经网络模型。它接收摄像头画面(Vision)和一句自然语言指令(Language),直接输出机器人接下来一小段时间的动作(Action)。

它不是平台、框架、算法库或方法论。平台是 PyTorch、LeRobot、openpi 这些代码;方法论是"端到端""模仿学习"这些思想。VLA 是这些工具和思想最终产出的那个东西——硬盘上几百 MB 到几 GB 的权重文件,加载进显卡之后,喂进去图和文字,吐出来一串数字。

1.2 它取代了什么

以"把蓝色杯子放进篮子"为例:

传统流水线(每一块都是人写的程序,换任务要重写)
  相机 → 目标检测(找杯子)→ 位姿估计(杯子在哪、朝向)→ 抓取规划(手从哪抓)
       → 运动规划(臂怎么过去不碰东西)→ 逆运动学(关节角)→ 控制器 → 电机

VLA(一个模型,换任务换句话)
  相机画面 + "把蓝杯放进篮子" + 当前关节角  →  [ VLA ]  →  未来 1 秒的关节目标序列  →  控制器 → 电机

中间一整串人写的模块被一个模型吃掉了。代价是:模型是黑盒,它为什么这么动说不清;它只会做训练数据覆盖过的事,没见过的情况靠"举一反三"的程度决定成败。

1.3 用"五个问题"给 VLA 定位

清华暑培讲义里有个很好的框架:围绕同一个任务,机器人可以问五个不同的概率问题,每个问题对应一类模型。记号:当前画面 o,指令 l,未来 k 步动作 a,未来视频 v。

机器人在问什么数学上在建模这类模型叫什么在任务里的含义
现在该怎么动p(a | o, l)VLA / 策略(policy)从画面和指令直接生成一段动作
执行这组动作会看到什么p(v | o, a)世界模型(World Model)预测动作造成的视觉后果
已知画面这样变了,动作可能是什么p(a | o, v)逆动力学模型(IDM)从状态变化反推动作
任务成功时未来画面长什么样p(v | o, l)视频生成模型(VGM)生成语言条件的视觉计划
能不能让画面和动作一起生成p(v, a | o, l)世界-动作模型(WAM,如 Motus)同时约束"看起来合理"和"真的可执行"

本手册只讲第一行。 其他四行是 2025–2026 年的前沿方向,知道它们存在、知道它们和 VLA 的区别就够了。特别注意:世界模型不输出动作,它预测未来画面;VLA 输出动作。两者可以配合(用世界模型造训练数据、或让 VLA 先在脑子里预演),但是两种模型。

1.4 它物理上是什么

一个 VLA 交付给你的时候,就是一个目录:

smolvla_base/                 ← Hugging Face 上下载下来的样子
├── config.json               ← 网络结构超参(多少层、动作维度、输入哪些相机)
├── model.safetensors         ← 权重,450M 参数 ≈ 0.9 GB(bf16)
├── train_config.json         ← 训练时用的配置
└── ...

π0 是 3.3B 参数(约 6.6 GB),OpenVLA 是 7B(约 14 GB)。这就是为什么推理要显卡、微调要大显存。

1.5 输入输出到底是什么

以 SmolVLA(LeRobot 官方小模型)为例,一次推理:

输入(一个 Python 字典):

键内容形状
observation.images.front正面相机当前帧3×H×W,uint8 或归一化 float
observation.images.wrist腕部相机当前帧(可选,可多路)3×H×W
observation.state机器人当前本体状态:关节角 / 末端位姿 / 夹爪开度一维向量,如 6 或 7 维
task语言指令字符串 "Grasp a lego block and put it in the bin."

输出:

键内容形状
action未来 n 步的动作目标n × 动作维度,如 50 × 6(50 步 × 6 关节)

动作的物理含义由你的数据集决定:数据里录的是关节角,模型输出的就是关节角;录的是末端位姿增量,输出的就是增量。模型本身不知道"关节"是什么,它只是学会了"这样的画面 + 这句话 → 这样一串数字"的映射。

1.6 "语言"在里面真正的作用

初学者常以为 L 只是"多了一路文字输入"。实际上有两层:

  1. 下任务。没有语言通道,一个模型只能做训练时固定的那一件事;有了语言,同一个模型靠换指令做很多件事。

  2. 接入互联网知识。VLA 的底座是一个已经读过海量互联网图文的大模型(VLM,如 PaliGemma、Qwen-VL、Llama+SigLIP)。机器人数据只是在这个底座上续训。所以 VLA 认识没在机器人数据里出现过的物体、听得懂没训练过的说法——这些是从互联网来的。

这是 2023 年 RT-2 之后机器人突然"开窍"的根本原因:不是加了语言输入,而是整个底座换成了懂世界的大模型。

1.7 它怎么被训练出来

主流 VLA 的训练方式是模仿学习(行为克隆):人示范几十到几百遍,录下"画面 + 指令 + 当时人让机器人做的动作",模型学"看到这种画面听到这句话就该做这个动作"。

不是强化学习那种让机器人自己瞎试、撞坏东西慢慢学。RL 在 VLA 里是可选的后续精调,第 8 章讲。

训练分两级:

级别谁做数据量产出
预训练Google / PI / HF / NVIDIA 这类机构几千到上万小时、几十种机器人基座模型(base checkpoint),你下载的就是它
微调你自己机器人上 50~几百条示范适配你的机器人和任务的模型

你几乎永远不会从零预训练一个 VLA。你的工作是:下载基座 → 录自己的数据 → 微调 → 部署。

第 2 章 VLA 的内部结构 —— 看懂任何一张架构图

2.1 三个部件

所有 VLA 都是下面这三块的变体:

相机画面 ──► [① 视觉编码器] ──► 视觉 token

语言指令 ──► 文本 tokenizer ──► 文本 token

本体状态 ──► 线性层 ──► 状态 token

通过,得到

[② 多模态骨干 (VLM)] ──► 语义特征 ──► [③ 动作头] ──► 动作块

部件干什么常见选择类比
① 视觉编码器把图像切成 16×16 的小块(patch),每块变成一个向量(token)SigLIP、DINOv2、ViT;OpenVLA 把 SigLIP+DINOv2 两个拼起来眼睛 + 视神经
② 多模态骨干一个 Transformer,让视觉 token、文本 token、状态 token 互相"看",提炼出"场景里有什么、要干什么"PaliGemma(π0/SmolVLA)、Llama 2(OpenVLA)、Qwen-VL、Eagle(GR00T)大脑皮层
③ 动作头把骨干的输出变成具体的动作数字离散 token 头 / 扩散头 / flow-matching 动作专家运动皮层

token 这个词贯穿始终:Transformer 只处理"一串向量",所以图像、文字、关节角都要先变成向量序列。一张 224×224 图 → 196 个视觉 token;一句话 → 十几个文本 token;7 个关节角 → 1 个状态 token。它们拼成一串送进骨干。

2.2 动作头的两大流派

这是不同 VLA 之间最本质的区别,也是读论文时最容易晕的地方。

流派 A:离散动作 token(自回归)

把每个动作维度的取值范围切成 256 格,动作变成"第 137 格"这样的整数,当作一个"字"让语言模型像写文章一样一个字一个字吐出来。

  • 代表:RT-2、OpenVLA

  • 优点:不改语言模型结构,完全复用 VLM 的训练基础设施

  • 缺点:一个 7 维动作要吐 7 个 token,50 步动作块要吐 350 个 token,慢;每维独立离散化切断了维度之间的关联;256 格精度有限

流派 B:连续动作生成(扩散 / flow matching)

把动作块当成一个整体的连续向量(比如 50 步 × 7 维 = 350 个数),用生成模型"从噪声中逐步去噪"出来。

  • 代表:Diffusion Policy(纯扩散)、π0 / π0.5 / SmolVLA(flow matching)、GR00T N1(扩散)、RDT-1B(扩散 Transformer)

  • 优点:一次生成整段平滑轨迹,快;能表达多峰分布("从左绕"和"从右绕"都是对的,不会输出两者的平均撞上障碍物)

  • 缺点:需要一个额外的"动作专家"网络;推理要跑多步去噪(通常 10 步左右)

为什么要生成模型而不是直接回归? 讲义 3.1 节讲得很清楚:如果用 MSE 回归,数据里一半从左绕一半从右绕,模型学到的是均值——正好撞上障碍物。生成模型保留了"多个可行答案",每次采样落到其中一个。

中间路线

  • FAST(π0-FAST 用的):把连续动作块做 DCT 变换再压缩成少量 token,让自回归模型也能高效输出高频动作。

  • OpenVLA-OFT:保留 OpenVLA 结构但改成并行解码 + L1 连续回归 + 动作块,速度快 26 倍。

  • VLA-0:动作直接写成文本数字字符串让 VLM 输出,不加任何特殊头,居然也能 SOTA——提醒我们"动作头的形式可能没那么关键,数据和底座更关键"。

实用结论:2025 年之后新项目基本都选流派 B。你微调 SmolVLA 或 π0 时,动作头已经定好了,不用自己选;但要知道推理时它会跑约 10 步去噪,这决定了延迟。

2.3 动作块(action chunk)与三个 horizon

VLA 不是每一帧算一个动作,而是一次吐未来一段动作。这里有三个必须分清的时间长度:

时间轴 ──────────────────────────────────────────────►
           │◄── To ──►│◄──────── Tp ────────►│
           │ 观测历史        │ 预测的动作块(如 50 步)│
                                     │◄─ Ta ─►│
                                     │ 实际执行│ 然后重新观测、重新预测

符号名字含义典型值调大会怎样调小会怎样
Toobservation horizon喂给模型几帧历史1~2 帧更多上下文,更慢没有记忆
Tpprediction horizon一次预测多少步50 步(π0 在 50 Hz 下 = 1 秒)轨迹更连贯更频繁重规划
Taexecution horizon预测的里面实际执行几步10~25 步反馈变慢、对突发不敏感推理压力大、动作可能不连续

这是滚动时域控制(receding horizon):预测 Tp 步,只执行前 Ta 步,然后读新观测再预测。Ta 是部署时最重要的可调参数之一,第 6 章再讲。

2.4 把主流模型放进这个框架

模型① 视觉② 骨干③ 动作头参数量一句话特点
RT-2 (2023)ViTPaLI-X / PaLM-E离散 token55BVLA 概念起点,闭源
OpenVLA (2024)SigLIP + DINOv2Llama 2 7B离散 token,256 格7B第一个完整开源 VLA
Octo (2024)小 CNN自己的小 Transformer扩散头93M模块化,加传感器方便
π0 (2024)SigLIP(在 PaliGemma 里)PaliGemma 3Bflow matching 动作专家 300M3.3B当前开源最强范式
π0.5 (2025)同上同上同上 + 高层子任务推理3.3B开放世界泛化
SmolVLA (2025)SigLIP(在 SmolVLM 里)SmolVLM2,只用前半层flow matching 动作专家450M消费级显卡可微调
GR00T N1 (2025)Eagle VLM同上扩散头2B双系统,人形全身
RDT-1B (2024)SigLIP扩散 Transformer扩散1.2B双臂,物理可解释统一动作空间

读架构图时的检查清单:

  1. 找到视觉编码器是哪个(决定输入分辨率和画面理解能力)

  2. 找到骨干是哪个 VLM(决定语言理解和互联网知识来源)

  3. 动作头是离散还是连续(决定速度和精度)

  4. 动作块多长、什么频率(决定控制特性)

  5. 本体状态怎么进去的(通常是一个线性层变成 token,拼在后面)

  6. 有没有"双系统"(GR00T、Helix 那种慢 VLM + 快动作头分开跑)

2.5 一个容易忽略的部件:归一化

动作和状态进模型之前都要归一化(减均值除标准差,或缩放到 [-1, 1])。这些统计量随数据集走:

  • LeRobot 存在 meta/stats.json

  • openpi 存在 norm_stats.json,训练前要跑 compute_norm_stats.py

这是微调时最常见的翻车点(第 5 章详述):某个维度在数据里几乎不动(比如一个很少用的关节),标准差接近 0,归一化后数值爆炸,训练 loss 发散。

归一化的原图如下:

原因一:不同维度的数值尺度差太多,神经网络会"偏心"

神经网络的第一层是矩阵乘法:输出 = W × 输入 + b。如果一个维度是 ±180、另一个是 0~1,那么前者对输出的影响天然大 180 倍——不是因为它更重要,纯粹因为数字大。梯度也一样:大数值维度的梯度大,小数值维度的梯度几乎为零,训练时模型拼命学关节角、基本忽略夹爪。而夹爪开合恰恰是抓取成败的关键。归一化后所有维度都变成"均值 0、标准差1"左右的数,模型对每个维度一视同仁,该学哪个由数据决定,而不是由你用什么单位决定。

原因二:输出端——模型要生成的目标也得在"舒服的范围"

VLA 的动作头是 flow matching / 扩散,它的工作方式是"从标准高斯噪声(均值 0 方差1)逐步变成目标动作"。这个过程的数学设计默认目标分布和噪声分布在同一个尺度上。如果目标动作是 200~600 毫米,而噪声是 ±1,模型要学会把 ±1 的东西拉到400,非常别扭,训练慢且不稳。先把动作归一化到 ±1 附近,去噪过程就自然了,推理时再反归一化回毫米。离散 token 流派(OpenVLA)也一样:它要把每个维度切成 256 格,必须先知道这个维度的最小最大值,否则没法切。那个"最小最大值"就是归一化统计量。

原因三:预训练和微调要对得上

基座模型是在别人的数据上预训练的,它内部已经形成了"归一化后的数值 → 动作含义"的映射。你微调时如果不归一化、或者用了不同的统计量,等于把一套新的数值含义硬塞给它,预训练学到的东西大半作废。openpi 文档里专门有一节讲"复用预训练的 norm stats",就是为了让你的机器人和它预训练集里的同款机器人共享同一套数值语义,微调收敛更快。

正常维度归一化后都在 ±2 以内,这个维度突然蹦出9.9。更极端的情况,某个关节整条数据集几乎没动,标准差 0.001,一个微小抖动 0.05     归一化后就是 50,直接把 loss 炸飞。这就是 openpi troubleshooting 里说的"检查       q01、q99、std"——它用 1% 和 99% 分位数代替最大最小值,就是为了抗这种极端值,但标准差太小时依然救不了,只能手动改大或者让关节在录数据时动起来。

第 3 章 生态地图 —— 现在能拿到什么、该选什么

截至 2026-10。这个领域半年一变,具体版本号以官方仓库为准,但分类框架不会变。

3.1 四类东西

基座模型(权重)下载来微调 【SmolVLA, π0, π0.5,OpenVLA, GR00T N1.x,Octo, RDT-1B, Dexora】

训练/推理框架(代码)跑命令的地方【 LeRobot (HF)  ,openpi (PI) ,openvla / openvla-oft,Isaac GR00T】

数据集 预训练用/参考格式【Open X-Embodiment,DROID, BridgeV2,AgiBot World ,RoboTwin, LIBERO 数据】

仿真/评测 没硬件时验证流程【LIBERO ,SimplerEnv,RoboTwin 2.0 ,RoboCasa, ManiSkill】

3.2 基座模型对比(能开源下载的)

模型参数推理显存微调显存框架适合谁不适合
SmolVLA450M~4 GB单张消费级卡(RTX 3090/4090 可)LeRobot入门首选;单臂桌面任务;SO-100/101 这类低成本臂复杂长程任务、双臂
π0 / π0.53.3B>8 GB (4090)LoRA >22.5 GB (4090);全量 >70 GB (A100/H100)openpi(JAX 为主,PyTorch 版不支持 LoRA)要效果最好;有 A100 或多卡只有一张 12 GB 卡
OpenVLA / OFT7B~16 GBLoRA 约 24 GB+openvla 仓库学术对比基线;大量安全/评测研究用它实时性要求高(原版慢)
Octo93M<2 GB很小octo 仓库(JAX)想自己加传感器模态、改结构做研究语义理解弱(骨干小)
GR00T N1.5 / N1.62~3BRTX 3080+24 GB+Isaac GR00T人形、全身、NVIDIA 生态;官方有 SO-101 后训练教程纯桌面臂(过重)
RDT-1B1.2B~8 GB24 GB+rdt 仓库双臂(ALOHA 类)单臂简单任务
Dexora———自带双臂双灵巧手没灵巧手

选型三句话:

  1. 第一次跑,选 SmolVLA + LeRobot。文档最全、硬件门槛最低、从录数据到部署一条命令链打通。

  2. 要效果,选 π0.5 + openpi。但要有 A100 级显卡或接受远程推理。

  3. 做人形 / 全身,选 GR00T;做双灵巧手,看 Dexora / GR-Dexter。

3.3 框架对比

LeRobotopenpiIsaac GR00T
维护方Hugging FacePhysical IntelligenceNVIDIA
语言PyTorchJAX(主)+ PyTorch(部分)PyTorch
数据格式LeRobotDataset v3(事实标准)也用 LeRobotDataset自己的格式 + LeRobot 转换
内置模型ACT、Diffusion Policy、π0、π0.5、SmolVLA、VQ-BeT 等π0、π0-FAST、π0.5GR00T 系列
录数据lerobot-record(支持 SO-100/101、Koch、ALOHA、LeKiwi 等)不管录,只管训和推有自己的工具
训练lerobot-trainscripts/train.py自己的脚本
推理lerobot-rollout(直接驱动机器人)serve_policy.py 策略服务器 + websocket 客户端自己的
系统Linux / macOS(录数据)只测过 Ubuntu 22.04Linux
包管理pip / condauvpip

LeRobotDataset 是整个生态的"通用货币":openpi 也吃它,GR00T 能转它,HF Hub 上几千个数据集都是它。第 4 章专门讲。

3.4 数据集(预训练用,或当格式参考)

数据集规模机器人用途
Open X-Embodiment (OXE)100 万+ 轨迹,22 种机器人多种几乎所有基座的预训练来源
DROID76k 轨迹,564 个场景Franka泛化性好,π0-DROID 检查点来源
BridgeData V260k 轨迹WidowX小臂桌面任务经典
AgiBot World100 万+ 轨迹智元人形国内最大开源
RoboTwin 2.0仿真生成双臂国内,仿真数据
lerobot/svla_so100_pickplace50 条SO-100SmolVLA 官方微调示例,格式参考

3.5 仿真与评测(没硬件时的验证场)

仿真器特点什么时候用
LIBERO130 个任务,4 个套件,VLA 论文标配 benchmark验证微调流程通不通;和论文对数
SimplerEnv真实-仿真对齐,可评 OXE 预训练模型零样本评基座模型本身
RoboTwin 2.0双臂,国内,带数据生成双臂任务
ManiSkill 3GPU 并行,快大规模仿真数据
DexJoCoMuJoCo 灵巧手灵巧手任务

注意:仿真里跑通 ≠ 真机能用。仿真的价值是验证"数据格式 → 训练 → 推理"这条链路没有 bug,以及快速对比不同配置。真机效果只能真机测。

3.6 硬件(低成本入门平台)

平台价格量级自由度LeRobot 支持说明
SO-100 / SO-101¥1000~2000 一对(主从)6原生HF 官方推荐,3D 打印 + 飞特舵机
Koch v1.1类似6原生SO-100 的前身
LeKiwi加底盘6 + 移动原生移动操作
ALOHA / ALOHA 2¥数万双臂 14支持双臂标杆

"主从臂"(leader/follower):LeRobot 默认的遥操作方式。人手动掰主臂,从臂跟着动,录的是从臂的关节角。这就是最便宜的"遥操作设备"。你的 EMF 手套是另一种遥操作设备(第 7 章)。

3.7 显卡怎么办

你有什么能做什么
没有 N 卡SmolVLA 用 Google Colab 免费 T4 微调(官方有 notebook);推理用 CPU 勉强可以但很慢
RTX 3060 12 GBSmolVLA 微调(batch 调小);π0 推理勉强
RTX 4090 24 GBSmolVLA 随便训;π0 推理 + LoRA 微调
A100 80 GBπ0 / π0.5 全量微调
云 GPU(AutoDL、阿里云等)按小时租 A100,微调一次几十块钱

远程推理是现实选择:模型跑在机房 / 云上的显卡,机器人旁边只放一台小电脑(甚至树莓派)通过 websocket 收动作。openpi 原生支持,延迟增加几十毫秒。

3.8 信息源

  • Hugging Face LeRobot 文档:huggingface.co/docs/lerobot

  • openpi 仓库:github.com/Physical-Intelligence/openpi

  • LeRobot Discord:遇到报错最快的地方

  • 论文追踪:arXiv cs.RO,关键词 VLA / vision-language-action

  • 模型对比表:roboticscenter.ai/tools/vla-models-comparison

  • 国内:具身智能之心、RoboTwin 社区

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐