具身 VLA:RT-2、OpenVLA、π0、GR00T 本节摘要:模型第一次从网站读食谱、在厨房机器人上执行,是 RT-2(Google DeepMind,2023 年 7 月)。RT-2 把动作离散成文本 token,在网页数据加机器人动作数据上协同微调 VLM,证明网页级视觉-语言知识能迁移到机器人控制。OpenVLA(2024 年 6 月)发布了开源 7B 参考。Physical Intelligence 的 π0 系列(20242025)加了流匹配动作专家。NVIDIA 的 GR00T N1(2025 年 3 月)为人形机器人交付了双系统(System 1 / System 2)大规模控制。
本节摘要:模型第一次从网站读食谱、在厨房机器人上执行,是 RT-2(Google DeepMind,2023 年 7 月)。RT-2 把动作离散成文本 token,在网页数据加机器人动作数据上协同微调 VLM,证明网页级视觉-语言知识能迁移到机器人控制。OpenVLA(2024 年 6 月)发布了开源 7B 参考。Physical Intelligence 的 π0 系列(2024~2025)加了流匹配动作专家。NVIDIA 的 GR00T N1(2025 年 3 月)为人形机器人交付了双系统(System 1 / System 2)大规模控制。VLA 原语——视觉-语言-动作,一个能看、能读、能动的单一模型——是本章理解模型与第 15 章自主系统之间的桥梁。
阅读完本节,你应当能够:
自 1970 年代起,按自然语言指令干家务的机器人就是研究目标。2020 年代的答案是:视觉-语言-动作(VLA)模型。与 VQA 用的 VLM 架构相同,但输出是动作(关节力矩、末端执行器位姿、离散指令)而非文本。
VLA 特有的挑战:
RT-2 的技巧:把每个关节目标表示为量化文本 token。把归一化的 [-1, 1] 离散成 256 个 bin,每个 bin 映射到一个词表 ID。10 自由度的动作在每个控制步变成 10 个 token。
在混合数据上协同微调一个 PaLM-X VLM:
模型看到「拿起红色方块」(语言)→ 图像(视觉)→ 10 token 动作序列(离散关节目标)。网页预训练保留通识迁移:RT-2 能跟随「朝快速移动的物体移动」,尽管「快速移动」不在训练数据里。
论文里推理 3~5Hz,受限于 VLM 自回归解码。
OpenVLA(Kim 等人,2024 年 6 月)是开源权重的 RT-2 等价物。7B Llama 主干,DINOv2 + SigLIP 双视觉编码器,256 bin 动作分词。
在 Open X-Embodiment(22 种机器人共 97 万轨迹)上训练,带 LoRA 微调支持以适配新机器人。
推理:A100 上量化后 4~5Hz,够用于慢操作,不够用于高频控制。
Pertsch 等人(2024)指出离散 bin 分词低效——大多数动作聚集在 bin 空间的小区域。FAST(频域动作序列分词器)经 DCT 压缩动作序列并量化系数。
30 步动作轨迹变成约 10 个 FAST token,而非 300 个离散 bin token。推理快 3~5 倍且不损质量。
Physical Intelligence 的 π0(Black 等人,2024 年 10 月)用流匹配动作专家取代离散动作 token:
π0 的声称:在大套操作任务上胜过 OpenVLA 与 Octo。连续动作表述保留了离散化破坏的平滑性。
π0.5 与 π0-FAST 是增量升级,后者把 FAST 分词与流匹配结合。
NVIDIA 的 GR00T N1(2025 年 3 月)为人形机器人(>30 自由度,全身)而建:
这个切分对应卡尼曼的快慢思考:System 2 规划,System 1 行动。好处:慢的 VLM 级规划不阻塞快控制;System 1 保持小以保延迟。
GR00T N1.7(2025 年底)改进数据扩展,用 Omniverse 的 sim-to-real 数据微调。
训练数据。RT-X(2023 年 10 月)汇集 22 个数据集,覆盖 22 种机器人共 100 万轨迹。Open X-Embodiment 是大家都在用的语料:
OpenVLA 与 π0 在 Open X-Embodiment 上训练。到任何具体机器人的域差距,靠 100~1000 条任务专属示范上的 LoRA 微调来闭合。
协同微调把网页 VQA 数据与机器人轨迹混合。比例重要:VQA 太多模型忘动作,机器人数据太多模型丢通识。
RT-2 比例约 1:1;OpenVLA 约 0.5:1 网页对机器人;π0 类似。精确比例是按数据集大小调的超参。
只用机器人训练产出的任务专属模型,在分布外指令上失败。协同微调是「拿起红色方块(示范里)」与「从左数拿起第三大的物体(新措辞)」之间的差别。
每个生产 VLA 都带:
这些在 VLA 之外作为控制层检查。VLA 的输出是建议,不是命令。
code/main.py:
def tokenize_action(joint_values, n_bins=256): # joint_values: 归一化到 [-1, 1] 的 10 维向量 tokens = [] for v in joint_values: b = int((v + 1) / 2 * (n_bins - 1)) # 映射到 [0, 255] tokens.append(VOCAB["action_base"] + b) return tokens # 10 个动作 token/控制步 def detokenize(tokens, n_bins=256): return [2 * (t - VOCAB["action_base"]) / (n_bins - 1) - 1 for t in tokens]
def fast_tokenize(trajectory_30steps): # trajectory: (30, 10) 连续动作 coeffs = dct(trajectory_30steps, axis=0) # 频域 DCT coeffs_q = quantize(coeffs, levels=256) # 量化系数 return encode(coeffs_q) # 约 10 个 token (非 300)
| 格式 | 30 步轨迹 token 数 | 推理 | 平滑性 |
|---|---|---|---|
| 离散 bin(RT-2) | 300(10 维×30 步) | 自回归慢 | 量化有损 |
| FAST(OpenVLA+) | 约 10 | 快 3~5 倍 | DCT 保高频 |
| 流匹配(π0) | 0(直接连续) | 5 步去噪,等效 50Hz | 最平滑 |
💡 协同微调的精髓:网页 VQA 与机器人轨迹按比例混合训练,让模型既保留「朝快速移动物体移动」的通识(来自网页),又能输出动作(来自机器人)。这是 VLA 泛化到新措辞的根源。
def groot_control(scene, instruction): while not done: subgoal = system2_vlm(scene, instruction) # 约 1Hz 高层规划 for _ in range(50): # 50~100Hz 低层动作 action = system1_action_head(subgoal, state) safe_action = clamp(action, joint_limits, workspace) robot.execute(safe_action) # 控制层硬限制 if scene_changed(): break
工程取舍:慢操作用 OpenVLA(开源 7B);要高频用 π0(流匹配);人形全身用 GR00T(双系统);要快解码加 FAST;新机器人用 LoRA 微调 100~1000 条示范。
本节产出 outputs/skill-vla-action-format-picker.md。给定机器人任务(操作、导航、人形全身),它在离散 bin+RT-2、FAST+OpenVLA、流匹配+π0、双系统+GR00T 间选择。
token 速率:10 自由度臂、30Hz 控制。256 bin 离散分词每秒发多少 token?7B VLM 跟得上吗?
FAST 损失:FAST 把 30 步轨迹压到约 10 token。若轨迹含高频运动(如击鼓),用户丢什么?
π0 吞吐:π0 流匹配头约 5 步去噪。对比 OpenVLA 4~5Hz 自回归解码的吞吐。
第三系统:GR00T 的 System 1/2 切分对应卡尼曼。提出一个可能有助双足行走的另一种切分(System 3?)。
读 RT-X:读 Open X-Embodiment 第 4 节关于数据策展,说出防止域泄漏的三条策展规则。
下一节,我们将进入文档与图表理解——把 VLM 用到最实用的生产力场景:PDF、扫描件、流程图、表格,这是企业落地多模态的主战场。