VLA 训练与部署实战

从"看懂架构"到"能训能跑":损失/微调策略/协同训练/动作表示/推理加速/实时控制/部署

训练范式
损失函数
微调策略
协同训练 & KI
动作表示
推理加速
实时控制 & RTC
部署
资源配置
自测

训练范式全景:预训练 → 后训练,VLM 层面 vs VLA 层面 🟢论文核对

读完你能回答:什么是预训练/后训练?为什么"预训练"这个词在 VLA 里有两层含义(VLM 的 vs VLA 的)?各阶段用什么数据?以及最关键的——"在仿真 benchmark 上测试"是不是在 benchmark 数据上做后训练?(答案:,下面详解)

先破一个混淆:"预训练"在 VLA 语境里指两件不同的事:① VLM 预训练(在互联网图文上,产出 Qwen-VL/PaliGemma 这种通用视觉语言模型);② VLA 预训练(在大规模跨本体机器人数据上,产出 π0/GR00T 这种机器人基础模型)。两者是不同层面、不同数据、不同目的,别混为一谈。

三个阶段(从"通才"到"专才")

阶段① VLM 预训练(通常不是你做的,直接继承)
在 web 级图文/VQA 数据上训练通用视觉语言模型 → Qwen-VL、PaliGemma、Gemma、MiniCPM-V。VLA 直接把它当骨干拿来用。数据:互联网图文,没有任何机器人动作。目的:获得视觉理解 + 语言常识。
阶段② VLA 预训练(可选,只有"基础模型"类工作才做)
在 VLM 骨干上接动作头,用大规模跨本体机器人数据训练,学通用操作先验 → π0、π0.5、GR00T、Qwen-RobotManip。数据:OXE、DROID、RH20T、AgiBot、自采遥操作等(几千~几万小时)。目的:机器人通用动作能力,能少样本迁移到新任务。
阶段③ VLA 后训练 / 微调(SFT)(几乎所有工作都做,也是 benchmark 评测的关键)
目标任务/目标 benchmark 自带的演示数据上微调,让模型专精该场景 → 这一步就是"post-training / SFT / fine-tuning"。数据:该 benchmark 提供的遥操作演示 split(如 LIBERO 每 suite 500 条)。目的:在目标任务上刷到高成功率。
预训练 vs 后训练一句话:预训练 = 在大而杂的数据上学"通用能力"(通才);后训练/微调 = 在小而专的目标数据上学"具体任务"(专才)。"SFT(监督微调)"是后训练最常见的形式。

预训练 vs 后训练的具体实现:到底开放哪些参数? 🟢论文+代码核对

你问的核心问题:预训练是开放更多参数吗? 答案比"开放更多"更微妙——不同阶段的参数策略差异很大,且不同论文做法不同。

先给结论表

阶段训练哪些参数冻结哪些学习率策略
① VLM 预训练
(Qwen团队/Google做)
全部(数十亿参数全开)统一 LR,大 batch
② VLA 预训练
(π0/Qwen-RobotManip)
VLM backbone + action expert 全部无(全参训练)VLM 低 LR + action expert 高 LR分组学习率
③ VLA 后训练/SFT
(StarVLA/ImageWAM)
看具体配置(3种做法↓)看具体配置分组 LR / LoRA

VLA 后训练的三种参数策略(从严到松)

策略VLM backboneAction head优缺点代表
A. 冻结 VLM + 只训 action head❄ 完全冻结(0 梯度)🔥 全参训练最省显存/最快;但 VLM 不适配动作域,性能天花板低ImageWAM(冻结VLM理解模块)
B. 分组 LR(VLM 低 + head 高)🔥 训练但 LR 很低(1e-5)🔥 高 LR(1e-4)平衡:VLM 慢慢适应动作域而不"学坏",head 快速收敛StarVLA(yaml 配置可切换冻结/分组)
C. 全参微调🔥 全开🔥 全开性能上限最高;但显存大、小数据易过拟合、可能损坏 VLM 知识StarVLA(full-parameter fine-tuning)

用 StarVLA 代码举例:参数策略如何在配置里体现 🟢仓库代码核对

# StarVLA: examples/LIBERO/train_files/starvla_cotrain_libero.yaml
trainer:
  learning_rate:
    base: 2.5e-05              # 默认 LR
    qwen_vl_interface: 1.0e-05 # VLM backbone: 低 LR(保护预训练知识)
    action_model: 1.0e-04      # Action head: 高 LR(新模块,需快速学)
  freeze_modules: 'qwen_vl_interface'  # ← 这行控制是否冻结 VLM
  loss_scale:
    vla: 1.0    # 动作损失权重
    vlm: 0.1    # VLM 协同训练损失权重(防遗忘)
读配置
freeze_modules: 'qwen_vl_interface' → VLM backbone 冻结,梯度不回传给它。这是策略 A。
• 如果去掉这行(或设为空) → VLM 用 1e-5 的低 LR 参与训练。这是策略 B。
• Action head 用 1e-4(是 VLM 的 10 倍)——因为 action head 是随机初始化的新模块,需要高 LR 快速学会输出动作。
loss_scale.vlm: 0.1 → 同时喂 VLM 数据(VQA)防止语言理解退化,但权重只有动作损失的 1/10。

π0 的预训练为什么"开放全部参数"?

π0 预训练阶段(论文原话归纳):
• 架构:PaliGemma 3B VLM backbone + 独立的 action expert(约几百 M 参数)
全部参数都训:VLM backbone 和 action expert 一起在 10,000h 跨本体数据上训练
• 用 Transfusion 范式:VLM 部分用 cross-entropy 监督语言 token、action expert 部分用 flow matching 监督连续动作——两路损失同时反传到全部参数
• 目的:让 VLM 从"只懂图文"变成"也懂机器人动作/状态"——这需要 backbone 也参与学习

π0 后训练阶段
• 用"高质量精选数据"微调到具体下游任务(如叠衣服)
• 论文提到两种后训练:① 少量数据高效后训练(少步数、可能冻结部分参数);② 大量高质量数据精细后训练(更多步数)
• 关键区别:预训练要"广"(68 任务、7 种机器人),后训练要"深"(一个任务做到极致流畅)

Qwen-RobotManip 的预训练 vs SFT 参数策略 🟢论文核对

预训练(§4.1)SFT 后训练(§4.2)
训练的参数VLM backbone + action expert 全部同样全部(但步数更少、GPU 更少)
损失函数Flow matching L_FM + VLM next-token prediction 双损失只用 L_FM(去掉 VLM 损失)
数据38,100h 异构机器人 + 28M VL 样本(9:1 比例)目标 benchmark 演示数据单独
数据增强多阶段过滤清洗(去坏数据)不过滤 + 加 color jitter
协同训练有(VLM stream 防遗忘)标准 SFT 不协同;但可选"混合后训练"(加预训练子集防退化)
注意:Qwen-RobotManip 的预训练和后训练都是全参训练——"开放更多参数"不是预训练的定义。真正区别在于:
数据规模/多样性:预训练 38,100h 跨本体 vs 后训练只有目标 benchmark 几千条
损失函数:预训练加 VLM 保护损失(防退化) vs 后训练只要动作准
目标:预训练要"通才"(什么都能做一点) vs 后训练要"专才"(这一个任务做到极致)

ImageWAM 的"冻结理解、只训生成"策略 🟢论文核对

ImageWAM 明确说(论文原话):"We keep the VLM and multimodal understanding components frozen...Only the image editing branch and the action expert are updated during training."

模块参数量级训不训为什么
VLM 理解模块(LLM + 视觉编码器)~数 B完全冻结理解需要语义抽象,已经在大规模预训练中学会;微调反而会破坏
图像编辑分支(diffusion backbone)1-9B🔥 训练(可+LoRA)需要学会"按任务指令编辑出目标帧的 KV cache"
Action Expert(flow matching DiT)~1B🔥 训练从零学习"读 KV cache → 输出动作"
为什么冻结 VLM 反而更好?(消融 Q2) 理解需要高层语义抽象,生成需要细粒度空间/结构细节。在深层它们的梯度方向冲突——联合训练会互相拉扯。解耦(冻结理解、只训生成+动作)让各模块各司其职,性能反而超过统一大模型(UniVLA/BagelVLA)。

一句话总结

预训练"开放更多参数"不完全正确。准确说法是
• 预训练和后训练都可以是全参训练(π0/Qwen-RobotManip 两个阶段都全参)
• 真正区别不在"开放多少参数",而在数据(广 vs 专)损失(多目标 vs 单目标)步数(多 vs 少)
• 后训练时是否冻结 VLM 是一个独立于"预训练/后训练"的设计选择——有人冻结(ImageWAM)、有人低 LR 训(StarVLA)、有人全开(Qwen SFT),取决于数据量和防遗忘策略
• 唯一"预训练才有"的东西是VLM 保护损失(VLM co-training loss)——因为预训练时数据多、怕 VLM 在动作梯度下退化;后训练数据少步数少,退化风险较小所以常省略

VLM 在 VLA 里到底输出什么?文字?还是隐藏向量? 🟢论文核对

常见误解:"推理 VLA = VLM 先输出文字规划,再用文字条件化动作头"。这只对一部分模型成立。实际有三种完全不同的架构:

三种架构对照(附数据流图)

类型VLM 输出的是什么怎么给动作头代表
① 隐式特征型
(主流)
隐藏状态向量
(不解码成文字)
VLM 内部 hidden states 直接送入动作头π0, StarVLA-π/OFT/GR00T, ImageWAM, OpenVLA
② 文本推理型(CoT)文字 token
(subtask/plan)
文字作为 context 条件化动作解码DWYS/SEAL(textual plan)
③ 混合型
(先文字再动作)
先文字 token,后连续动作模型序列的前 M 个位置输出文字,后 H 个位置输出动作π0.5, π0.7, KI-VLA

① 隐式特征型(大多数 VLA 是这种)

图像 + 指令 ──→ [VLM backbone] ──→ hidden states h (向量,不是文字!)
                                          │
                                          ↓ (直接送入,不经过"变成文字"这一步)
                                   [Action Head (DiT/OFT/FM)]
                                          │
                                          ↓
                                   连续动作 a_t:t+H

VLM 不输出任何文字——它的最后几层的隐藏状态(高维向量,如 2048 维)直接被 action head 读取。整个过程中没有"文字"这个中间产物。这是 π0、StarVLA 全系列、ImageWAM、OpenVLA 等大多数 VLA 的做法。

② 文本推理型(CoT)

图像 + 指令 ──→ [VLM backbone] ──→ 文字 token: "First pick up soup, then place in basket"
                                          │
                                          ↓ (文字 token 作为额外 context)
                                   [Action Head]
                                          │
                                          ↓
                                   连续动作 a_t:t+H

VLM 先生成一段文字规划(CoT),然后 action head 以这段文字为条件预测动作。DWYS/SEAL 就是这种——先生成 textual plan,再验证动作是否和 plan 对齐。

③ 混合型(π0.5 / π0.7 / KI-VLA)—— 关键细节

图像 + 指令 + 状态 ──→ [统一 Transformer f]
                              │
                    输出序列: [y1, y2, ..., yM, yM+1, ..., yM+H]
                              │          │              │
                              ↓          │              ↓
                    前M个: text logits   │      后H个: action expert tokens
                    → 解码成文字 ℓ̂       │      → 线性映射 → 连续动作 a_t:t+H
                    (subtask标签)        │
                    如"pick up the       │
                     cutting board"      │
                              │          │
                              └──────────┘
                    推理时: 先生成subtask文字 → 再conditioned on它生成动作
π0.5 确实输出文字——这是真的。 论文原话(§II-A):
"the output of f is split into text token logits and action output tokens, respectively. The first M correspond to text token logits that can be used to sample ℓ̂ and the later H tokens are produced by a separate action expert, projected via a linear mapping to continuous outputs."

"At inference-time, the model first produces a high-level subtask for the robot to perform and then, conditioned on this subtask, predicts the low-level actions via the action expert."

具体说:π0.5 的 Transformer 输出序列被切成两段——前 M 个位置用标准 next-token prediction 解码成文字(subtask 描述如"pick up the cutting board"),后 H 个位置用 action expert(flow matching)映射成连续动作。两段在同一个前向传播里产生,但前段是离散 token、后段是连续向量。

推理时的执行顺序:先自回归生成 subtask 文字 → action expert 以(图像 + 指令 + subtask文字)为条件生成动作 chunk。

VLA/WAM 推理数据流全景大表:200+ 篇论文分类 🟢核心论文手工核对 + 🔍其余自动检测

把本地 200+ 篇论文按"推理时 VLM 输出什么 → 中间经过什么 → 最终怎么变成动作"分类。核心问题:VLM 的输出到 action 之间,有没有文字/视觉/几何等显式中间产物?

分类 A:直接型(hidden states → action head,无显式中间产物)

推理时 VLM 输出 hidden states,直接送入 action head 解码为连续动作。中间没有文字、没有图像、没有轨迹——最短路径。这是当前最主流的做法。

图像+指令 → [VLM] → hidden states → [Action Head] → 连续动作
                    (向量,不是文字)
论文VLMAction Head 类型可靠性
π0PaliGemma 3BFlow Matching action expert🟢
StarVLA-OFTQwen-VLMLP 回归(单步)🟢
StarVLA-πQwen-VLFlow Matching DiT🟢
StarVLA-GR00TQwen-VLDiffusion DiT(dual-system)🟢
StarVLA-FASTQwen-VLAutoregressive FAST token🟢
OpenVLALlama2 7B + DINOv2 + SigLIPAutoregressive 离散token🟢
Qwen-RobotManipQwen3.5-4BFlow Matching DiT action expert🟢
Diffusion Policy(无 VLM,CNN/Transformer encoder)DDPM U-Net / DiT🟢
ACT(无 VLM,ResNet encoder)Transformer decoder (L1回归)🟢
RDT-1BSigLIP + T5Diffusion Transformer 1B🟢
Motuslatent action modelLatent → action decoder🔍
SwiftVLASmolVLM 0.5BConditional diffusion (训练时有4D几何辅助,推理时丢弃)🟢
LRMVLMFlow Matching🔍
UWMVLMDiffusion🔍
+ DynaGuide(冻结DP+外部引导)、VLS(冻结π0.5+梯度引导)、VERA(video→IDM)、ContextVLA、ConRFT、FACTR、ARRO 等约 100+ 篇属此类

分类 B:文字串流型(VLM 先输出文字 → 以文字为条件生成动作)

推理时 VLM 先生成一段文字(subtask/plan/CoT),然后 action head 以这段文字为额外条件预测动作。文字是推理路径上的必经产物

图像+指令 → [VLM] → 文字 token (subtask/plan) → [拼回序列作为条件]
                                                        ↓
                          图像+指令+文字+状态 → [Action Head] → 连续动作
论文文字输出是什么Action Head文字角色可靠性
π0.5subtask标签("pick up the plate")Flow Matching action expert串流必经(先生成subtask→再conditioned on it生成动作)🟢
π0.7subtask指令(由高层策略生成)Flow Matching action expert串流必经(高层策略→低层策略)🟢
DWYS/SEALtextual plan("First pick up soup...")Flow Matching(π0 backbone)串流必经(plan→验证alignment→执行)🟢
G0.5CoT(bbox + subtask + 2D trace)Flow Matching可开关(CoT mode at inference)🟢
DIALlatent visual subtask(System 2→System 1)Flow Matching DiT串流(高层视觉推理→低层动作)🔍
pi-HiRobothierarchical subtaskFlow Matching串流(层级策略)🔍
SayCanlanguage plan(LLM生成)低层 RL 策略串流(LLM规划→RL执行)🟢
SeeingToDoingSrCoT(Spatial Relationship CoT)串流(CoT→visual trace→action)🔍
+ ForeAct、EgoPi、ForceVLA2(含subtask)等约 10-15 篇属此类

分类 C:视觉想象型 / WAM(先预测未来视觉 → 再解码动作)

推理时先"想象"未来会发生什么(预测未来帧/subgoal图/latent),然后基于想象结果生成动作。中间产物是视觉(图像/视频/latent/KV cache),不是文字。

类型1(视频WAM):  图像+指令 → [Video DiT] → 未来视频帧 → [IDM/decoder] → 动作
类型2(图像编辑WAM): 图像+指令 → [Edit Model] → KV cache(不解码图!) → [Action Expert] → 动作
类型3(subgoal):  图像+指令 → [World Model] → subgoal图像 → [低层策略] → 动作
论文视觉中间产物Action Head / 动作解码方式可靠性
ImageWAMKV cache(编辑分支的逐层K/V,不解码成图)Flow Matching action expert (joint attention读KV)🟢
MaskWAMKV cache + mask predictionFlow Matching action expert🟢
Fast-WAMKV cache(训练时有视频co-train,推理时只取cache)Flow Matching action expert🟢
VERA预测的未来视频帧Jacobian IDM(光流→动作)🟢
DiT4DiTVideo DiT hidden features(不解码视频)Action DiT(conditioned on video hidden states)🟢
CosmosPolicy预测的未来 latent 帧(Cosmos backbone)latent→action decoder🟢
DreamVLAworld embedding(VLM想象的未来,不解码成图)Action head conditioned on world embedding🟢
FutureVLApredicted future latentAction head🔍
SuSIEsubgoal 图像(编辑生成的目标帧)低层 goal-conditioned policy🟢
GHIL-Gluesubgoal 图像低层 policy🔍
UniPi未来视频inverse dynamics model🟢
GigaWorld-Policyworld model 预测policy conditioned on prediction🔍
+ Cosmos3、RISE-WM、World-VLA-Loop、DreamDojo、DreamTac、EgoWM、tau0-WM、LAPA(video plan) 等约 30-40 篇属此类

分类 D:几何中间表示型(先预测 SE(3)/关键点/轨迹 → 再解码动作)

推理时先预测一个几何结构(SE(3)轨迹/2D轨迹/关键点/光流),然后 action decoder 把几何信息转成可执行动作。

图像+指令 → [VLM + Depth] → 3D表征 → [Trajectory Predictor] → SE(3)轨迹
                                                                    ↓
                                           [Action Decoder] → 可执行动作(joint/EEF)
论文几何中间产物Action Decoder可靠性
OASIScamera-frame SE(3) EEF轨迹(third-person系)ACT-style L1 decoder🟢
SwiftVLA4D 几何 Transformer features(训练有,推理丢)Conditional diffusion🟢
Goal-VLA目标物体 (R,t) 位姿action conditioned on pose🔍
NJFNeural Jacobian Field(image-space→action映射)Jacobian反解🔍
VERAdense Jacobian field + 光流J·Δimage = Δaction🟢
TLAsequential 2D/3D waypoints从waypoint解码动作🔍
+ SeeingToDoing(visual trace)、TraceVLA、ContactWorld(latent rollout) 等约 5-10 篇属此类

分类 E:训练辅助型(训练时有额外预测,推理时丢弃)

训练时有额外的预测分支(离散token/深度/future frame等)提供梯度帮助学习,但推理时完全不执行那个分支——只走最短的 hidden states → action head 路径。

论文训练时的额外预测(推理时丢弃)推理时实际路径可靠性
KI-VLA离散FAST action token(CE loss帮VLM学表征)hidden states → action expert(FM)🟢
SwiftVLA4D几何辅助分支VLM → conditional diffusion🟢
RISE-WMfuture frame predictionVLM → action head(推理时不predict future)🔍
Fast-WAMvideo co-training(训练时有视频token)推理时只取KV cache,不解码视频🟢

统计总览

分类数据流篇数(估)占比
A. 直接型hidden states → action head~11055%
C. 视觉想象/WAM先预测未来视觉 → 再动作~4020%
B. 文字串流型先输出文字 → 再动作~157%
D. 几何中间表示先预测轨迹/关键点 → 再动作~105%
E. 训练辅助(推理丢弃)训练时有额外分支,推理时只走直接路径~52%
其余(触觉/RL/综述等)~2010%
结论
55% 的论文(~110 篇)走最短路径:VLM hidden states → action head,中间没有任何显式中间产物。这是绝对主流。
20% 是 WAM(世界模型):先想象未来(视频/subgoal/KV cache)再解码动作——这是 2025-2026 年增长最快的方向。
只有 7% 在推理时输出文字:π0.5/π0.7/DWYS/G0.5/SayCan 等。"VLA=先输出文字再动作"是少数派,不是主流。
几何中间表示(5%)训练辅助推理丢弃(2%)是更细分的设计选择。

追问:subtask 文字是辅助 loss 还是推理串流路径? 🟢多篇论文核对

答案:是推理串流路径中的必经环节,不只是辅助 loss。

先区分这两个概念

辅助 loss串流路径
定义训练时计算梯度帮助学习,推理时不执行那个分支训练时有 loss 监督,推理时也必须执行,输出作为下游的输入
举例StarVLA 的 VLM co-train loss(推理时不跑 VQA 分支)π0.5 的 subtask prediction(推理时必须先生成 subtask 文字,action expert 以它为条件)
推理时去掉会怎样性能不变(本来就不跑)性能崩溃(action expert 缺少高层条件)

π0.5 的 subtask = 串流必经环节(论文原话确认)

论文原话 1(Figure 3 说明):"At inference time, the model first infers a high-level subtask, and then predicts the actions based on this subtask."

论文原话 2(§II-A):"At inference-time, the model first produces a high-level subtask for the robot to perform and then, conditioned on this subtask, predicts the low-level actions via the action expert."

论文原话 3(架构描述):"the output of f is split into text token logits and action output tokens. The first M correspond to text token logits that can be used to sample ℓ̂ [subtask文字] and the later H tokens are produced by a separate action expert."

推理时的具体执行顺序

Step 1: Transformer 自回归生成前 M 个位置 → 解码成 subtask 文字
        例: "pick up the cutting board"
        ↓ (这些 token 拼回序列作为 context)
Step 2: Action expert 接收 (图像 + 指令 + subtask文字 + 状态) → 输出连续动作 chunk
        [dx, dy, dz, rx, ry, rz, grip] × H 步

如果不先生成 subtask:action expert 缺少"当前该做什么"的高层语义条件,会退化成"只看图猜动作"——π0.5 论文说 subtask 让模型能做 10-15 分钟的长程厨房清洁任务,因为每一步都先确认"接下来该做什么"。

其他模型的 subtask/plan 角色对照 🟢逐篇核对

模型文字输出是什么辅助 loss 还是串流路径?论文原话/证据
π0.5subtask 标签
("pick up the plate")
串流路径(推理必经)"first infers subtask, then predicts actions based on this subtask"
π0.7subtask 指令 ℓ̂t
(由高层策略生成)
串流路径(高层策略先输出 subtask → 低层策略以此为条件执行)"language commands are produced by a high-level semantic policy...conditioning the model on the semantic subtask"(可 dropout 5%但默认开)
DWYS/SEALtextual plan
("First pick up soup, then place...")
串流路径(plan 用来验证+条件化)"interleave textual planning and action generation...score alignment between action's outcomes and the text plan"
G0.5CoT reasoning
(bbox + subtask + 2D trace)
可开关的串流路径"letting the CoT mode be switched at inference without retraining"——推理时可选择开/关 CoT
KI-VLA离散 FAST action token训练时有(帮VLM学表征),推理时用 action expert 不用离散 token"generating continuous actions with the smaller action expert is desirable for fast and precise control, while representation learning with discrete actions...makes the model train fast"
π0无(不输出文字)N/AVLM hidden states 直接送 action expert,无文字环节
StarVLA 全系列无(不输出文字)N/AVLM features 直接给 action head(OFT/GR00T/FM)
ImageWAM无(不输出文字)N/AVLM 冻结,编辑分支 KV cache 送 action expert

总结:文字在 VLA 中的三种角色

角色 A:推理串流路径的必经输出(推理时必须先生成文字,再以文字为条件生成动作)
→ π0.5(subtask) / π0.7(subtask) / DWYS(textual plan)
作用:提供"当前该做什么"的高层语义条件。对长程多步任务至关重要(10分钟厨房清洁需要每步确认 subtask)。

角色 B:训练时的表征学习辅助(推理时丢弃)
→ KI-VLA(离散FAST token只训练用,推理用连续action expert)
作用:让 VLM 通过预测离散动作 token 来适配机器人域(和 next-token prediction 兼容),但推理时不需要——直接用连续 action expert 更快更精确。

角色 C:可选的推理增强(开关式)
→ G0.5(CoT 模式可开可关)
作用:开 CoT = 推理时多花时间做 reasoning 再输出动作(精度可能更高);关 CoT = 直接输出动作(更快但可能不够精确)。推理时按需选择。

大多数 VLA 根本没有文字输出(角色 D:无)
→ π0 / StarVLA / ImageWAM / OpenVLA / VERA 等
VLM 的 hidden states 直接送入 action head,整个推理过程中没有任何文字产物。这是当前最主流的做法。

核心问答:仿真 benchmark 测试 = 在 benchmark 数据上后训练吗?

是的。所谓"在 LIBERO / RoboTwin / CALVIN 上测试",标准流程是:
① 拿该 benchmark 自带的训练演示数据(遥操作 episode) 做后训练/微调;
② 在同一 benchmark 的任务上让模型实际 rollout(在仿真里真跑),统计成功率。
不是"零样本直接测",而是"在它的训练 split 上微调 → 在它的任务上评测"。
工作后训练用的数据训练量来源
StarVLA (LIBERO)LIBERO 四套件演示,每套件 500 条100K 步(~30K 即好)🟢 论文
ImageWAM (LIBERO)四套件合并演示10 epoch🟢 论文
ImageWAM (RoboTwin)RoboTwin 演示(2500 干净+25000 随机)5 epoch🟢 论文
StarVLA (RoboTwin 2.0)全任务演示(多任务单策略)🟢 论文
那这还算"测泛化"吗?算,但要分清是哪种泛化:
标准 benchmark(IID 泛化):训练用该任务的一批演示,测试用同任务的新初始化(物体位置/初态随机不同)。模型没背过测试时的具体摆放,但任务/场景是同分布——这叫分布内(IID)泛化。这也是为什么标准 LIBERO 大家都能 >90%。
OOD benchmark:见下。

OOD benchmark 的特殊训练协议(别踩坑)

LIBERO-Plus / LIBERO-PRO 这类 OOD 套件,训练协议和标准 benchmark 不同

用原始 LIBERO 的演示数据做后训练,但在扰动集上测——把扰动增强数据拿去训练。ImageWAM 论文明确:"we use the same original LIBERO training demonstrations and do not incorporate the augmented LIBERO-Plus training data"。这才能真正测出"没见过的扰动"下的表现,即分布外(OOD)泛化。

所以:标准 benchmark 高分 = 会做这个任务(IID);OOD benchmark 高分 = 换相机/换物体/换指令还能做(真泛化)。看一个 VLA 强不强,要看后者。详见 starVLA 数据集页(含 LIBERO-Plus vs PRO 对比)

OOD 评测协议完整总览:各 Benchmark 及其变体含义 🟢论文核对

下面系统整理目前 VLA 领域所有主流 benchmark 的"标准(IID)"和"OOD"变体,逐一解释含义、训练协议、以及哪些论文用了它。

① LIBERO 系列

LIBERO(UT Austin)= 130 个桌面操作任务,分 4 个 suite(Spatial/Object/Goal/Long),每套 10 任务 × 50 条遥操作演示。评测 = 在同任务新初始化上 rollout(IID)。

变体全称/来源含义训练协议使用论文
LIBERO(标准)原始 4 suite同分布评测:在同任务的新初始化(物体位置/初态随机不同)上 rollout在该 suite 的 500 条演示上 SFT所有 VLA 论文(π0/StarVLA/ImageWAM/OpenVLA…)
LIBERO-PlusIn-depth Robustness Analysis of VLA, 10,030 任务7 维独立扰动
① 相机视角(位置/朝向/FOV变)
② 机器人初态(初始关节姿态变)
③ 语言指令(LLM 改写同义指令)
④ 光照(强度/方向/颜色/阴影变)
⑤ 背景纹理(场景/桌面材质变)
⑥ 传感器噪声(光度畸变/图像退化)
⑦ 物体布局(位置重排)
另有5 级强度梯度,可测"扰动多大开始崩"
用原始 LIBERO 演示 SFT,不把增强/扰动数据混入训练;在扰动集上 rolloutImageWAM, Qwen-RobotManip, OpenVLA-OFT
LIBERO-PROarXiv:2510.038275 类扰动
① Position(swap):对调两物体位置,指令一字不改→测"死记坐标 vs 真找目标"
② Object:换物体外观/颜色/大小
③ Semantic(语言):同义改写指令
④ Task:同时换指令+目标+关注物体→最狠,几乎所有模型崩到 0–1%
⑤ Environment:换整个工作场景
同上:原始数据训,扰动集测VLS
Plus vs PRO 区别:Plus 偏"感知/物理层"(相机/光照/噪声/初态)7 维覆盖广、量级大(1 万+任务);PRO 偏"语义/任务层"(Task 扰动最极端)5 维但单点更狠。两者互补。

② RoboTwin 2.0 系列

RoboTwin 2.0(上海 AI Lab)= 50 个双臂操作任务。数据分两种采集环境

变体含义训练协议使用论文
Clean场景固定、干净:固定光照、固定桌面纹理、无干扰物、标准背景在 Clean + Randomized 合并数据上训练(如 2,500 Clean + 25,000 Randomized);分别在 Clean 环境和 Randomized 环境下各评 50 任务 × 100 episodesStarVLA, ImageWAM, π0.5, Motus
Randomized (Rand.)场景随机化:背景/桌面材质/光照/干扰物体随机变化——比 Clean 视觉复杂度高很多
C2R (Clean-to-Random)真正 OOD:只在 Clean 数据上训练 → 在 Randomized 环境下测试。模型从未见过视觉随机化只用 Clean 演示 SFT → Randomized 环境评测StarVLA(原论文报告 IID 85.7% → OOD 10.6%)
RoboTwin-IF指令跟随(Instruction Following):测模型是否真读懂语言——给同一场景不同指令,测能否区分执行不同任务标准训练后评测Qwen-RobotManip(新提 benchmark)
RoboTwin-XE跨本体(Cross-Embodiment):在一种机器人上训 → 零样本迁移到另一种机器人控制单一本体 SFT → 其他本体零样本评测Qwen-RobotManip(新提 benchmark)
易混点:标准 RoboTwin 评测(Clean + Rand 合并训练后分别评)≠ C2R。前者两个环境模型都见过(IID),后者是真 OOD(只见过 Clean,测 Randomized)。C2R 才是 OOD benchmark。

③ SimplerEnv 系列

SimplerEnv(UCSD/Google)= 在仿真里复现真机策略表现的评测平台,有 WidowX 和 Google Robot 两种机器人。关键是两种评测协议

协议全称含义是否 OOD
VM (Visual Matching)Visual Matching仿真渲染刻意贴近真机图像:叠加真实背景纹理、对齐真机视角/光照——让 sim 尽量像 realIID(最接近训练时看到的视觉)
VA (Variant Aggregation)Variant Aggregation系统改变背景/光照/桌面/相机位置等多种变体,每种变体评一次后取平均——测视觉鲁棒性近 OOD(视觉外观变了,但任务/物体不变)

使用论文:StarVLA, CogACT, SpatialVLA, π0, GR00T N1.5, Magma 等。VM 分数通常高于 VA。

④ CALVIN 系列

CALVIN(Freiburg 大学)= 34 个长程语言条件操作任务,Franka 机器人 + PyBullet 仿真。4 个环境(A/B/C/D)代表不同场景布局。

协议含义是否 OOD使用论文
ABCD→D在 A+B+C+D 四个环境上训练 → 在 D 环境测IID(D 环境在训练时见过)
ABC→D只在 A+B+C 环境上训练 → 在从未见过的 D 环境上测OOD(零样本环境迁移)DynaGuide, VLS, SuSIE 等引导类方法

D 环境的场景布局与 A/B/C 不同(桌面物体摆放/颜色不同),模型从未在此环境训练过。ABC→D 是引导类方法(DynaGuide/VLS)的天然测试场——它们不微调 base policy,而是在推理时引导冻结策略适应新场景。

⑤ RoboCasa-GR1

RoboCasa-GR1(UT Austin + NVIDIA)= 24 个人形机器人桌面任务,比 LIBERO 难得多(涉及开关柜门/微波炉 + 物体放置组合)。目前只有标准(IID)评测协议——在全部 24 任务上训练一个模型,每任务 50 rollouts 统计成功率。暂无官方 OOD 变体。

使用论文:StarVLA, GR00T N1.6, π0.5。

总结:OOD 评测协议统一范式

所有 OOD benchmark 的共同逻辑
在"干净/标准/原始"分布的数据上做后训练 → 在"加了某种训练时没见过的变化"的场景上评测。

不同的只是"加了什么变化":
• LIBERO-Plus:视觉/物理 7 维扰动
• LIBERO-PRO:语义/任务 5 类扰动
• RoboTwin C2R:视觉随机化(Clean→Randomized)
• CALVIN ABC→D:新场景布局
• SimplerEnv VA:多种视觉变体平均

纪律:绝不把扰动/增强/OOD 目标环境的数据混入训练集。否则就不叫 OOD 了。

完整论文×Benchmark 对照表(OOD 评测) 🟢PDF批量核对(233篇)

以下表格来自对本地 203 个论文目录、233 篇 PDF(含软链接)的批量全文检索。共 77 篇做了 OOD/鲁棒性评测

论文仿真 BenchmarkOOD 协议
LIBERO 系列(含 Plus/PRO)
ImageWAMLIBERO, LIBERO-Plus, RoboTwin 2.0原始LIBERO训→Plus七维扰动测
Qwen-RobotManipLIBERO, LIBERO-Plus, RoboTwin(Mu原版), C2R, RoboCasa, ALOHAPlus七维 + C2R + IF/XE
StarVLALIBERO, LIBERO-Plus, RoboTwin 2.0, CALVIN, SimplerEnv(VA), RoboCasa, BEHAVIORPlus + VA + 多benchmark覆盖
VLSLIBERO, LIBERO-PRO, CALVIN原始训→PRO的Position+Task 2种扰动测(PRO共5种,VLS只选了2种) + ABC→D
FutureVLALIBERO, LIBERO-Plus, SimplerEnv, SimplerEnv-VAPlus + VA
MINTLIBERO, LIBERO-Plus, CALVIN, MetaWorldPlus + 跨benchmark
Qwen-VLALIBERO, RoboTwin, SimplerEnv, RoboCasa, ALOHA多benchmark覆盖
Xiaomi-Robotics-0LIBERO, CALVIN, SimplerEnv, SimplerEnv-VAVA + 多环境
G0.5LIBERO, RoboTwin 2.0, SimplerEnv, BEHAVIOR跨benchmark zero-shot
Cosmos3LIBERO, RoboCasa, BEHAVIOR, Push-T世界模型OOD
OASISLIBERO, CALVIN跨环境泛化
MaskWAMLIBERO, RoboTwin 2.0鲁棒性
ForeActLIBEROOOD预测引导
ICLR-ICLLIBEROin-context zero-shot
Cosmos(2025)LIBERO, RoboCasa, ALOHA世界模型泛化
DreamVLALIBERO, CALVIN想象辅助OOD
SwiftVLALIBERO, RoboTwin 2.0高效VLA鲁棒性
mimic-videoLIBERO视频模仿泛化
UniSkillLIBERO, ALOHA统一技能迁移
DiT4DiTLIBERO, RoboCasa, ALOHA跨任务泛化
CosmosPolicyLIBERO, RoboCasa, ALOHA世界模型辅助OOD
World-VLA-LoopLIBERO, RoboTwin 2.0, ManiSkill世界模型闭环引导
DWYS/SEALLIBERO推理-动作对齐验证
InSightLIBEROOOD泛化
LA4VLALIBERO, MetaWorldzero-shot跨本体
LAPLIBEROzero-shot跨本体
MotusLIBERO, RoboTwin 2.0鲁棒性
UWMLIBEROzero-shot/鲁棒性
KI-VLALIBERO知识隔离防退化
π0-FASTLIBERO, CALVIN, ALOHA跨benchmark零样本
CALVIN 系列(ABC→D)
DynaGuideCALVIN, ALOHAABC→D零样本环境迁移
DeFICALVIN, SimplerEnv, SimplerEnv-VA, Language Table引导+VA
DISCOCALVIN, Franka Kitchen, Push-T引导冻结策略OOD
SuSIECALVIN, BEHAVIOR子目标生成辅助OOD
GHIL-GlueCALVINzero-shot环境迁移
RoboTwin 系列
ManiTwinRoboTwin 2.0孪生仿真OOD
SynthICLRoboTwin, RLBench合成数据zero-shot
DECORoboTwin(原版+2.0)解耦OOD
GigaWorld-PolicyRoboTwin 2.0世界模型策略
LingBot-VLARoboTwin 2.0语言引导VLA
RoboCasa / SimplerEnv / RLBench / 其他
GR00T N1RoboCasa跨本体zero-shot
OmniGuideRoboCasa引导OOD
DIALRoboCasa对话引导
MimicDroidRoboCasa模仿泛化
UniT-HumanoidRoboCasa人形统一
HSAT-ATRoboCasa, ManiSkill层级OOD
SeeingToDoingSimplerEnvsim-to-real zero-shot
LAPASimplerEnv跨本体
ActiveVLARLBench主动探索OOD
Goal-VLARLBench目标条件OOD
SAM2ActRLBench分割引导OOD
SymmetryAwareFusionRLBench对称性鲁棒
VIMABEHAVIOR, CALVIN, MetaWorld, RLBench多模态指令泛化
OpenVLALIBERO, ALOHA跨本体LoRA迁移
Diffusion PolicyFranka Kitchen, Push-T多模态/鲁棒性
VERAPush-Tzero-shot跨本体
DDP-WMPush-T世界模型鲁棒性
DCDPPush-T扩散条件策略
LVPLanguage Table语言-视觉规划
DreamDojoLanguage Table梦境训练OOD
ALOHA 为主(双臂)
π0ALOHA跨本体基础模型
ACTALOHA双臂模仿泛化
RDT-1BALOHA跨本体扩散基础模型
HumanEgoALOHA人类视频zero-shot
ARROALOHA, ManiSkillOOD鲁棒性
UniTALOHA跨任务统一
SAILALOHA测试时scaling
FACTRALOHA触觉OOD
RDPALOHA扩散策略
VT-RefineALOHA视触觉精调
pi-HiRobotALOHA层级VLA
EDILALOHA高效分布式
TouchGuideALOHA触觉引导
综述类(多benchmark提及)
VLA-SurveyLIBERO, CALVIN, SimplerEnv, RLBench, MetaWorld, BEHAVIOR, ALOHA, Franka Kitchen, Language Table综述对比
EmbodiedSurveyRoboTwin, RLBench, ManiSkill, ALOHA综述
ILContactRichSurveyALOHA, CALVIN, RLBench综述
WM-ManipSurveyManiSkill, Language Table综述

仅 IID 仿真 / 仅真机评测的论文 🟢PDF核对(233篇)

以下论文不做 OOD 仿真评测——只做标准(IID)仿真、只做真机、或为综述/预训练数据类。

仅 IID 仿真评测(无 OOD 协议,9 篇)

论文Benchmark
HATOALOHA
TA-VLAALOHA
AHEADCALVIN, RLBench
Fast-WAMLIBERO, RoboTwin 2.0
GigaBrainALOHA
RISE-WMLIBERO, RoboTwin(原版+2.0), CALVIN, RoboCasa, BEHAVIOR
UniVTACManiSkill, RoboTwin
WorldArenaRoboTwin 2.0
SAILALOHA

仅真机评测(无仿真 benchmark,74 篇)

以下工作只在物理机器人上评测,不使用 LIBERO/RoboTwin 等仿真 benchmark。主要分布在:触觉/力控操作、视觉伺服、插装、灵巧手、真机 RL 等领域。

类别论文(按年份)
VLA/策略ContextVLA, DualActor, FtF, pi0*.6, pi-RTC, pi-MEM, pi-RLT, ConRFT, CRAFT, AT-VLA, FAVLA, ForceVLA, ForceVLA2, PACE, REMAC, DreamZero, EgoScale, VLAW
触觉/力控MimicTouch, Sparsh(2024), 3D-ViTac, AdapTac, AnyTouch, AnyTouch2, GelFusion, ManiFeel, SparshX, TacThru, TactileAloha, ViTacFormer, ViTaLPrecise, FTP-1, T-Rex, TaF-VLA, TacFiLM, TacForeSight, TacVLA, TacVLA2, HapTile, TouchGuide, DreamTac, DreamTacVLA, UniVTAC, OmniVTA, VLA-Touch, VTAM, ViTaL-Steering, ViTaS, HTD, HSAT-AT
视觉伺服/插装MSVT, VT-WireInsertion, VFT-Fusion, VTInsertion, VT-Refine, MBCtrl-RL-Insertion, DiffusionVS, HypernetVS
灵巧手/人形DexNDM, InterMimic, UniDex, WorldGymnast
世界模型FOWM, GigaWorld-0, tau0-WM, VTWM, ContactWorld, VideoGenRobotics-Survey
其他SayCan, Vid2Robot, ViSk, FBI, CGP, AnyPlace, FoAR, MEM, MimicDroid, TiW, OmniVTLA, OPFA, FG-CLTP, MvM, RL-PegInsertion, ProMPs-PiH
为什么这些不做仿真 benchmark:① 触觉/力控类任务(接触力/滑动检测)仿真很难准确模拟,真机评测更可信;② 视觉伺服/插装类有自己的物理精度指标(位置误差 mm 级)而非"成功率";③ 灵巧手/人形全身控制的 benchmark 生态还不成熟。

Benchmark 热度排行(被多少篇 OOD 论文使用)

Benchmark被引用篇数代表性 OOD 变体
LIBERO 系列35+LIBERO-Plus(7维) / LIBERO-PRO(5维)
LIBERO-Plus vs LIBERO-PRO 的采用现状(233 篇 PDF 全文检索结果):

LIBERO-Plus5 篇论文用它做 OOD 测试 → FutureVLA, ImageWAM, MINT, Qwen-RobotManip, StarVLA
LIBERO-PRO:严格引用该名字的 仅 1 篇(VLS)。但 DWYS/SEAL 自研了类似的 LIBERO OOD 变体(4维),思路相同只是不叫"PRO"

为什么 Plus 用的更多?
① Plus 发布更早(arXiv:2510.13626, 2025年10月),PRO 同月(arXiv:2510.03827),两者时间接近
② Plus 覆盖 7 维扰动(更全面),适合"全景鲁棒性评测"——大多数论文想证明自己在多种扰动下都强
③ Plus 有公开的 leaderboard + RLDS/LeRoBot 格式训练数据 + HuggingFace 模型——生态更完整,复现方便
④ PRO 侧重"语义/任务级极端 OOD"(Task 扰动所有模型崩到 0-1%)——适合验证"推理时引导"类方法(如 VLS),但对大多数 VLA 来说太难了、无法体现改进

为什么 RoboTwin(19 篇)比 Plus(5 篇)/PRO(1 篇)用的人多?是因为 Plus/PRO 发布晚吗?
不完全是。主要有三个原因:
它们解决不同问题:RoboTwin 是"双臂操作 benchmark"(测双臂协调),LIBERO 是"单臂桌面 benchmark"(测语言/空间理解)。19 篇用 RoboTwin 是因为它们做双臂研究,不是用 RoboTwin 代替 Plus/PRO 做 OOD
标准 RoboTwin ≠ OOD:19 篇中大多数是 Clean+Rand 合并训练后 IID 评测(两种环境都见过),只有 Qwen-RobotManip 做了 C2R 真 OOD。不能把 RoboTwin 的 19 篇和 Plus/PRO 的 5-6 篇直接比——前者主要是 IID,后者全是 OOD。
发布时间确实有影响:时间线——
BenchmarkarXiv发布
LIBERO 原版2023年
RoboTwin 原版(Mu)2410.241642024年10月
RoboTwin 2.0(Chen)2504.130592025年4月
LIBERO-Plus2510.136262025年10月
LIBERO-PRO2510.038272025年10月
Plus/PRO 2025年10月才出,很多 2025 年论文在此之前已定稿。但 2026 年新论文已开始集中用 Plus(5 篇全是 2026 的),说明 OOD 评测正在成为标配。

选哪个?如果你的工作是做"更鲁棒的 VLA"→ 用 Plus(能在 7 维上都有提升才有说服力)。如果你做"推理时纠偏/语义理解"→ 用 PRO(它的 Task 扰动是唯一能测"模型到底读没读指令"的极端 case)。
ALOHA20+跨任务/跨本体(双臂标配)
RoboTwin 2.019Clean+Rand标准评测(IID) / C2R(OOD) / IF / XE
CALVIN12ABC→D(零样本环境迁移)
RoboCasa12(暂无官方OOD变体,但任务本身难)
RLBench9多任务零样本
SimplerEnv8VA(Variant Aggregation)
ManiSkill6多任务泛化
Push-T6多模态/鲁棒性(扩散策略消融常用)
BEHAVIOR5长程家务(较难)
Language Table4语言条件桌面操作
MetaWorld4跨任务(较旧benchmark)
Franka Kitchen3多任务组合(较旧)
结论:LIBERO(35+篇)和 ALOHA(20+篇)是当前 VLA 的两大事实标准。RoboTwin 2.0(19篇)、CALVIN(12)、RoboCasa(12)紧随其后。做 VLA 研究必须至少覆盖 LIBERO + 一个 OOD 变体(Plus/PRO) + ALOHA 或 RoboTwin 才算主流配置。

时间鱼骨图 ①:各 Benchmark 发布时间线

2022
2023
2024
2025
2026
CALVIN
2022
LIBERO
2023
RLBench
2023
SimplerEnv
2024.5
RoboCasa
2024
RoboTwin
2024.10
RoboTwin 2.0
2025.4
LIBERO-Plus
2025.10
LIBERO-PRO
2025.10
C2R/IF/XE
2026
颜色说明白色=标准IID benchmark · 绿色=含域随机化(Clean/Rand) · 橙色=专用OOD benchmark · 紫色=新提OOD协议。可以看到 OOD 专用 benchmark 集中在 2025 年底才出现——这解释了为什么大多数论文还在做 IID 评测。

时间鱼骨图 ②:本地 201 篇论文发布年份分布

2017
LearnVS
1篇
2019
DDPGfD
MSVT
VT-Wire
3篇
2020
Insertion
RL-Peg
2篇
2021
MMVP
1篇
2022
DFBVS
MvM
TS-NVAE
VT-RL
4篇
2023
ACT·SuSIE·VIMA
FOWM·UniPi
SayCan·DP-review
CBF·HypernetVS
RoboCook·等
13篇
2024
π0·OpenVLA·DP
DISCO·GHIL-Glue
Genie·HATO·Sparsh
MimicTouch·ViTaL
Vid2Robot·等
15篇
2025
π0.5·GR00T·DynaGuide·Motus·RDT-1B·π0-FAST·KI-VLA
Cosmos·DreamVLA·SwiftVLA·UWM·UniSkill·UniT
FACTR·ConRFT·ManiTwin·SAM2Act·LAPA·LRM
3D-ViTac·AnyTouch·TactileAloha·ForceVLA·ViTacFormer
MimicDroid·InterMimic·pi-HiRobot·等
69篇 ← 爆发
2026
ImageWAM·StarVLA·Qwen-RobotManip·VERA·VLS·DiT4DiT
π0.7·G0.5·Cosmos3·CosmosPolicy·DWYS·Fast-WAM
FutureVLA·MINT·MaskWAM·DreamZero·OASIS·RISE-WM
LA4VLA·LAP·DeFI·ActiveVLA·Goal-VLA·SynthICL
TouchGuide·TacVLA·FTP-1·T-Rex·DreamTac·HumanEgo
Xiaomi·LingBot·GigaBrain·WorldArena·等
93篇 ← 高峰
趋势:2023 年以前主要是视觉伺服/插装/触觉的小领域论文;2023 年 ACT/SuSIE/VIMA 开启了 VLA 浪潮;2024 年 π0/OpenVLA/Diffusion Policy 确立范式;2025-2026 年爆发(162 篇/201 = 80%)——VLA/世界模型/触觉三条线并行。OOD 评测(Plus/PRO)在 2025.10 才出现,所以大部分 2025 年及之前论文只做 IID。

按 Benchmark 分组:哪些论文在用?怎么用的? 🟢233篇PDF全文检索

每个 benchmark 被哪些论文使用、具体怎么用(训练协议)。标🟢的协议已从论文原文精确核对;标🔍的为自动检测(regex)结果,需查原文确认。

LIBERO 系列(35 篇)

常见疑问:LIBERO 自身有四个 suite(Spatial/Object/Goal/Long),为什么不能用它们互相测 OOD?为什么必须用 Plus/PRO?

核心答案:因为标准 LIBERO 评测时,四个 suite 的演示数据是合并在一起训的——模型对每个 suite 都有监督信号,全都"见过"。所以测出来的只是"学了之后在新随机初始化下能不能做"(IID 泛化),不是"遇到没见过的变化还能不能做"(OOD)。

先搞懂:LIBERO 四个 suite 到底在干嘛?(每 suite 3 个真实任务举例) 🟢仓库 bddl 文件核对

四个 suite 不是"难度分级",而是测不同维度的能力。每 suite 10 个任务 × 50 条演示:

Suite测什么能力场景特点3 个真实任务举例
Spatial
(空间)
空间描述词区分目标同场景、同物体(都是黑碗)、只是位置/参照物不同① "pick up the black bowl next to the cookie box and place it on the plate"
② "pick up the black bowl between the plate and the ramekin and place it on the plate"
③ "pick up the black bowl on the ramekin and place it on the plate"
Object
(物体)
物体名称区分目标同场景、同动作(抓→放篮子)、目标物体不同① "pick up the alphabet soup and place it in the basket"
② "pick up the butter and place it in the basket"
③ "pick up the chocolate pudding and place it in the basket"
Goal
(目标)
理解不同动作语义同一厨房、不同动作目标① "open the middle drawer of the cabinet"
② "push the plate to the front of the stove"
③ "put the bowl on top of the cabinet"
Long
(LIBERO-10)
完成多步骤组合不同房间(厨房/客厅/书房)、2+步骤① "turn on the stove and put the moka pot on it"
② "put the yellow mug in the microwave and close it"
③ "put both the alphabet soup and the cream cheese box in the basket"

测试集属于训练集吗?模型见过这些物体吗?

不完全属于,但属于同分布(IID)。不存在"新物体"。

具体说:
• 每个任务有 50 条遥操作演示作为训练集。每条演示里物体的精确位置/朝向有微小随机。
• 评测时,对该任务跑 50 次 rollout,每次的初始化重新随机——具体摆放确实和训练时不一样(新随机种子)。
但是:物体种类、场景布局、相机位置、光照全都和训练时一样。Object suite 训练时就见过 alphabet soup / butter / milk 等所有物体,评测还是这些物体,只是精确坐标微调。
• 这就是独立同分布(IID):统计分布相同,只是采样了新的实例。就像同一题型换了数字——不是新题型。
所以标准 LIBERO 大家都能 >90%——因为从没遇到真正"没见过"的东西。

每条 episode 到底哪些变、哪些不变?🟢源码核对(envs/utils.py + robots/new_init.py)

从 LIBERO 仓库代码直接确认:

因素episode 间变不变怎么变 / 代码依据
物体精确位置(x, y)每个物体在 bddl 定义的 region 范围内均匀随机采样np.random.uniform(min, max))。region 是一个小矩形区域(如 5cm×5cm),物体每次 reset 落在其中随机位置。
物体 z 轴旋转绕 z 轴均匀随机旋转 0~2πnp.random.uniform(0, 2π))。杯子/碗/瓶子每次朝向不同。
机器人初始关节角微变在标准初始 qpos 上加微小高斯扰动perturbation * 0.1,方向随机、幅度固定 0.1 rad)。手臂起始姿态略有不同。
物体种类/外观不变bddl 文件里写死了哪些物体(如 butter, basket, tomato_sauce...),每次 reset 还是这些物体、同样的 mesh/贴图。
物体数量不变干扰物体(如 tomato_sauce, orange_juice 等)固定存在,数量和类型不变。
场景/桌面不变固定的桌面模型(KITCHEN_SCENE / LIVING_ROOM 等),材质/大小不变。
相机位置/朝向/FOV不变固定正前方 + 固定腕部相机,位置/朝向/FOV 一帧不动。
光照不变固定光源方向/强度/颜色,无阴影变化。
语言指令不变同一任务的指令永远同一句话(如 "pick up the butter and place it in the basket")。
动作空间/控制频率不变固定 Franka、固定 7DoF delta EEF + gripper、固定 20Hz。
所以"IID 泛化"具体指什么:模型需要应对的唯一变化是物体在小区域内的精确位置(±几cm) + 朝向(随机旋转) + 机械臂起始角度(微调)。这些变化在训练的 50 条演示里已经覆盖过类似范围了——评测只是换了一组新的随机种子。模型不需要应对任何"从未见过的新情况",只需要"在见过的分布里再来一次"。
这就是为什么标准 LIBERO 大家都 >90%:变化太小、分布和训练完全一致。也是为什么 Plus/PRO 要加系统性偏移(换相机/换光照/对调物体)才能真正测出 OOD——因为这些变化训练时从未出现过,是全新的统计分布。

既然不是 OOD,为什么四个 suite 还要用 Spatial / Object / Goal / Long 这些词?

这些名字描述的是每个 suite 考察的理解能力维度,不是 OOD 扰动类型:

  • Spatial = 考察"能否理解空间关系描述"——所有物体外观一样(都是黑碗),只能靠"旁边的/之间的/上面的"定位目标
  • Object = 考察"能否区分不同物体名称"——位置一样,只靠物体视觉识别
  • Goal = 考察"能否理解不同动作语义"——同一场景,但开抽屉 vs 推盘子 vs 放碗是完全不同的运动
  • Long = 考察"能否完成多步骤组合"——要连续做两件事,中间不能忘记第二步

它们是"这个 benchmark 想测 VLA 哪几种理解能力"的分类,不是 OOD 扰动。训练时四个 suite 的演示全都见过了。

那 Plus/PRO 做了什么是 LIBERO 标准做不到的?

LIBERO 标准LIBERO-Plus / PRO
训练数据该任务的演示(含该布局/视角/外观)同样这些演示(不加任何增强)
测试场景同任务、新随机初始化(布局/视角/外观和训练类似同任务、但加了训练时从没见过的变化
模型见没见过见过类似的(只是新随机种子)没见过这种变化(系统性偏移)
测的是什么学过的任务还会不会做(IID)环境变了还会不会做(OOD)
大家的分数主流 VLA 都 >90%掉到 30–80%(相机/初态最致命)

两个具体例子

例1: LIBERO-PRO 的 Position(swap)

以 Spatial suite 的任务为例:"pick up the black bowl next to the cookie box and place it on the plate"
• 训练时:黑碗确实在饼干盒旁边(模型见过几十次这个布局)
• PRO 测试时:把黑碗和饼干盒位置对调——现在饼干盒在原来黑碗的位置,黑碗跑到别处了。指令一字不改
• 如果模型是"死记移动到某个坐标抓"→ 会抓到饼干盒(错)。真理解的模型才会重新定位"黑碗现在在哪"
训练数据里从没出现过这种对调——所以这才是 OOD

例2: LIBERO-Plus 的 Camera 扰动

• 训练时:相机永远在正前方、固定高度/朝向/FOV
• Plus 测试时:相机换到侧面,或改了俯仰角/FOV——图像里物体的位置、大小、遮挡关系全变了
• π0 在这个扰动下从标准的 >90% 掉到 13.8%
• 说明 π0 严重依赖固定视角,学的是"图像里固定像素区域=目标"而非真正的空间理解

那能不能"只在 Spatial suite 训,拿 Object suite 测"当 OOD?

理论上可以,但目前没有论文这么做——因为四个 suite 的任务定义本身就不同(不同指令、不同目标物体、不同成功条件),这样测的是"跨任务泛化"而非"同任务下的鲁棒性",混淆了变量。LIBERO-Plus/PRO 的设计精髓是:任务保持不变,只变环境条件——这样才能干净地隔离出"模型到底是记住了场景 pattern 还是真理解了任务"。

一句话记住
• LIBERO 四 suite = 测"不同维度的理解能力"(空间/物体/目标/长程),但全是 IID(训练时全见过)
• LIBERO-Plus/PRO = 测"训练没见过的变化下还行不行"(OOD
• 区别不在于"任务难不难",在于"测试时的变化有没有在训练数据里出现过"
• 标准 LIBERO 每次 rollout 只换随机种子(微调位置)→ IID;Plus/PRO 加了从没见过的系统性变化(换相机/换光照/对调物体)→ OOD

各数据集/子集的数据规模 + 5 条真实任务举例 🟢论文+仓库核对

① LIBERO(UT Austin)

维度数量
总任务数130 个(结构见下)
常用的 4 suiteSpatial(10) + Object(10) + Goal(10) + Long/LIBERO-10(10) = 40 任务,每任务 50 演示
4 suite 合计40 任务 × 50 演示 = 2,000 条轨迹(大多数论文只用这 40 个任务)
LIBERO-90另外 90 个更多样的任务(覆盖 10+ 个不同厨房/客厅/书房场景,单步+多步混合)
LIBERO-100= LIBERO-10(Long) + LIBERO-90 = 100 个任务(注意:不含 Spatial/Object/Goal 那 30 个)
全部 130 个= LIBERO-100(100) + Spatial(10) + Object(10) + Goal(10),约 6,500 条总轨迹
每条轨迹时长~3-10 秒(短 horizon 桌面操作)
评测量每 suite 10 任务 × 50 episodes = 500 trials/suite
LIBERO-100 vs "四套件"——别混淆
• 大多数论文说的"LIBERO"指的是 Spatial+Object+Goal+Long 四套件(40 个任务)——StarVLA、ImageWAM、π0-FAST、KI-VLA 等都只用这 40 个。
LIBERO-100 = Long(10) + LIBERO-90(90) = 100 个任务——这是一个更大的训练池,少数论文(如 DWYS/SEAL)用它来训练更强的模型。
• LIBERO-90 的 90 个任务和四套件的 40 个任务不重叠(不同场景、不同任务定义)。
• 四套件中的 Long/LIBERO-10 和 LIBERO-100 里的 LIBERO-10 是同一批任务(10 个多步骤任务)。
"每个任务 50 条演示"具体是什么意思?

同一个任务的 50 条演示:指令完全一样,只是物体的精确位置/朝向和机械臂起始角度做了随机化。

具体说,以 Object suite 的 "pick up the butter and place it in the basket" 为例:
指令:50 条演示全是同一句 "pick up the butter and place it in the basket",一个字不变
随机化的:butter 在 bddl region(~5cm×5cm) 内的精确 xy 坐标、butter 的 z 轴旋转(0~2π)、旁边干扰物(tomato sauce/orange juice 等)各自的位置/朝向、机械臂起始关节角(±0.1 rad 高斯扰动)
不变的:物体种类(永远是 butter + 那几个固定干扰物)、数量、场景桌面、相机、光照

本质:人类操作员在 50 次稍有不同的初始摆放下各做了一遍遥操作,录下来就是 50 条演示。每次 reset 环境时物体位置微调,人类重新操作一遍。

评测也一样:同一个任务 rollout 50 次,每次 reset 物体位置/朝向随机(但还是在同一个小 region 内),指令不变、物体不变、场景不变。看模型能不能在这些微小初始化差异下都成功。

为什么 50 条就够:因为变化范围很小(同一个 ±几 cm 的区域内位置微调),50 条基本覆盖了这个小范围的分布。这也是为什么标准 LIBERO 大家都能 >90% —— 分布太窄、训练数据够覆盖。

Spatial suite(9 个任务,测空间理解)——全部任务:

  1. "pick up the black bowl next to the cookie box and place it on the plate"
  2. "pick up the black bowl between the plate and the ramekin and place it on the plate"
  3. "pick up the black bowl on the ramekin and place it on the plate"
  4. "pick up the black bowl next to the plate and place it on the plate"
  5. "pick up the black bowl on the cookie box and place it on the plate"

(还有 4 个类似任务:on the stove / on the wooden cabinet / next to the ramekin / in the top drawer。全部是"拿黑碗放盘子",只靠空间位置描述区分。)

Object suite(10 个任务,测物体识别)——全部任务:

  1. "pick up the alphabet soup and place it in the basket"
  2. "pick up the butter and place it in the basket"
  3. "pick up the chocolate pudding and place it in the basket"
  4. "pick up the cream cheese and place it in the basket"
  5. "pick up the milk and place it in the basket"

(还有 bbq sauce / ketchup / orange juice / salad dressing / tomato sauce。全部是"拿XX放篮子",只靠物体名区分。)

Goal suite(10 个任务,测动作语义)——5 个举例:

  1. "open the middle drawer of the cabinet"
  2. "push the plate to the front of the stove"
  3. "put the bowl on top of the cabinet"
  4. "put the cream cheese in the bowl"
  5. "turn on the stove"

Long/LIBERO-10 suite(10 个任务,测多步骤)——5 个举例:

  1. "turn on the stove and put the moka pot on it"(KITCHEN)
  2. "put the black bowl in the bottom drawer and close it"(KITCHEN)
  3. "put the yellow mug in the microwave and close it"(KITCHEN)
  4. "put both the alphabet soup and the cream cheese box in the basket"(LIVING ROOM)
  5. "put the white mug on the left plate and put the yellow mug on the right plate"(LIVING ROOM)

② RoboTwin 系列(上海 AI Lab)

RoboTwin vs RoboTwin 2.0 的关系
RoboTwin (Mu et al., 2025) = 原始版本。50 个双臂操作任务,有 easy/hard 两种难度模式(hard = 更复杂的空间布局/操作要求)。Qwen-RobotManip 论文引用的就是这个版本。
RoboTwin 2.0 (Chen et al., 2025b) = 在原始 RoboTwin 基础上加了 Clean/Randomized 双数据集设置 + LeRoBot 格式标准化。StarVLA/ImageWAM 引用的是这个版本。同样 50 个任务,但提供了 structured domain randomization 的数据(背景/光照/杂物/桌高随机化)。
简单说:RoboTwin 2.0 = RoboTwin 原版(easy/hard) 标准化为 Clean/Rand 格式。实际上所有 19 篇引用 RoboTwin 的论文都在用 2.0 的任务/数据(没有论文只用原版而不用 2.0),只是 6 篇同时引了 Mu et al. 作为 benchmark 的原始出处。
哪些论文引用了原版 RoboTwin (Mu) vs RoboTwin 2.0 (Chen)?🟢233篇PDF全文检索

只引原版(Mu et al., 2025),不引 2.0(11 篇):ILContactRichSurvey, π0*.6, pi-HumanToRobotVLA, AnyTouch2, AT-VLA, CRAFT, DeFI, FG-CLTP, ForeAct, OmniGuide, VLA-Survey

同时引两个版本(9 篇):EmbodiedSurvey, Motus, Cosmos3, DECO, MultimodalPretraining, Qwen-RobotManip, Qwen-VLA, RISE-WM, StarVLA

只引 2.0(Chen et al., 2025b):ImageWAM, SwiftVLA, G0.5, GigaWorld-Policy, LingBot-VLA, MaskWAM, SynthICL, UniVTAC, World-VLA-Loop, WorldArena, ManiTwin 等

实际差异:大多数论文用的"RoboTwin"评测数据是一样的 50 个双臂任务——区别只在是否用了 2.0 标准化的 Clean/Rand 数据格式。如果论文报告了 Clean/Rand 分数,用的就是 2.0 协议。
维度数量
总任务数50 个双臂协作任务
每任务数据50 Clean 演示 + 500 Randomized 演示 = 550 条/任务
总轨迹50 × 550 = 27,500 条
评测量50 任务 × 2 设置(Clean/Rand) × 100 episodes = 10,000 trials

5 个真实任务举例(从 ImageWAM per-task 表提取):

  1. Adjust Bottle — 双臂协作调整瓶子位置/朝向
  2. Handover Block — 一只手递积木给另一只手
  3. Hanging Mug — 把杯子挂到挂钩上(最难任务之一,ImageWAM 74%)
  4. Place Bread Basket — 把面包放进篮子
  5. Open Microwave — 打开微波炉门

其余举例:Click Bell(按铃)、Grab Roller(抓滚筒)、Lift Pot(举锅)、Pick Dual Bottles(捡两瓶)、Place Object Scale(放物体到秤上)。完整 50 任务见 ImageWAM 论文 Table 12。

③ CALVIN(Freiburg 大学)

维度数量
任务数34 个长程语言条件操作任务
环境数4 个(A/B/C/D,不同桌面布局/颜色)
评测协议1,000 个 5 步任务链(连续执行 5 个指令)
指标平均成功完成的连续步数(满分 5)

5 个真实任务举例:

  1. "push the red button"(按红色按钮)
  2. "open the drawer"(打开抽屉)
  3. "turn on the light"(开灯)
  4. "slide the door to the right"(把门滑到右边)
  5. "lift the pink block"(举起粉色积木)

CALVIN 特点:每次评测是连续 5 个随机指令组合(如"开灯→开抽屉→放积木→关灯→关抽屉"),测的是长程连续执行能力。ABC→D 的 OOD 是:D 环境的颜色/布局和 A/B/C 不同。

④ RoboCasa-GR1(UT Austin + NVIDIA)

维度数量
任务数24 个人形机器人桌面任务
每任务数据~1,000 条演示
总轨迹~24,000 条
评测每任务 50 rollouts

5 个真实任务举例:

  1. PnPBottleToCabinetClose — 抓瓶子放进柜子并关门
  2. PnPCanToDrawerClose — 抓罐子放进抽屉并关上
  3. PnPMilkToMicrowaveClose — 抓牛奶放进微波炉并关门
  4. PnPNovelFromCuttingboardToPan — 从砧板上拿新物体放进锅里
  5. PnPNovelFromPlateToCardboardbox — 从盘子上拿新物体放进纸箱

RoboCasa 特点:多阶段任务(抓+放+关门),涉及铰接物体(柜门/抽屉/微波炉门),比 LIBERO 难得多。GR1 是人形机器人本体。

⑤ SimplerEnv(UCSD/Google)

维度数量
机器人WidowX(桌面小臂)+ Google Robot(移动机器人)
WidowX 任务4 个
Google Robot 任务4 个
评测协议Visual Matching(VM) / Variant Aggregation(VA)

WidowX 全部 4 个任务:

  1. "Put spoon on towel"(把勺子放到毛巾上)
  2. "Put carrot on plate"(把胡萝卜放到盘子上)
  3. "Stack green block on yellow block"(把绿积木叠到黄积木上)
  4. "Put eggplant in yellow basket"(把茄子放到黄篮子里)

Google Robot 全部 4 个任务:

  1. "Pick coke can"(捡可乐罐)
  2. "Move near"(移动到目标旁边)
  3. "Open/Close drawer"(开/关抽屉)
  4. "Open top drawer and place apple"(开上层抽屉放苹果)

SimplerEnv 特点:本身不提供训练数据——用 BridgeData V2 / RT 系列真机数据训练,在这个仿真平台上评测(测 sim-to-real 一致性)。

每个数据集/变体:每条 episode 到底变什么、不变什么? 🟢论文+仓库核对

上面只详细解释了 LIBERO 标准。下面补全其余所有数据集——同一个数据集内,不同 episode 之间到底哪些因素在变

LIBERO-Plus(7 维扰动,10,030 任务)

训练数据和标准 LIBERO 完全一样(同一批 50 条干净演示)。只在测试时加入以下系统性变化

扰动维度具体变什么举例影响多大
① Objects Layout
(物体布局)
加入干扰物体(训练时没有的新物体出现在桌面) + 目标物体位移到训练没见过的区域桌上突然多了一个杯子(训练时没有);butter 不在原来区域而是在桌子另一端OpenVLA-OFT: 74.2%
② Camera Viewpoints
(相机视角)
相机的位置、朝向、FOV都变——图像里物体的位置/大小/遮挡完全不同相机从正前方移到侧面 45°;FOV 从 60° 变成 90°π0: 13.8%(最致命)
③ Robot Initial States
(机器人初态)
机械臂初始关节角大幅偏离标准位置(不是 ±0.1 的微扰,是完全不同的起始姿态)手臂从"正前方悬停"变成"侧伸到左边";初始离目标更远或更近OpenVLA-OFT: 31.9%
④ Language Instructions
(语言指令)
用 LLM 改写指令为同义但措辞不同的表达"pick up the butter" → "grasp the stick of butter from the table"OpenVLA-OFT: 79.5%
⑤ Light Conditions
(光照)
改变光源强度、方向、颜色、阴影主光源从上方移到侧面;暖光变冷光;物体阴影方向变OpenVLA-OFT: 88.7%
⑥ Background Textures
(背景纹理)
更换桌面材质、墙壁纹理、场景背景木桌变大理石;白墙变砖墙;加入海报/窗户等新背景OpenVLA-OFT: 93.3%
⑦ Sensor Noise
(传感器噪声)
对图像加入光度畸变、高斯噪声、模糊、遮挡图像变模糊;加入随机噪点;色彩偏移;部分遮挡OpenVLA-OFT: 75.8%
每条 episode 不变的:任务指令的语义意图(即使措辞变了,目标动作不变)、物体的基本功能(butter 还是 butter)。Plus 还有 5 级强度梯度:每种扰动从 level 1(轻微) 到 level 5(极端),可以精确测"扰动多大时开始崩"。
具体一条 Plus episode 长什么样(以 Camera level 3 为例)
任务还是 "pick up the butter and place it in the basket",训练时见过的那个场景,但:
• 相机从正前方偏转了约 30°到右侧 → 图像里 butter 从画面中央跑到左边缘
• butter 的像素大小因透视变化变小了约 20%
• 篮子从图像右侧变到了左上角
• 指令不变、物体不变、光照不变——只有"眼睛的位置"变了

模型如果学的是"butter 在图像中央偏右的位置 → 移动到(x,y)",这时候就会直接失效。只有真正理解"这个3D空间里哪个物体是 butter"的模型才能在新视角下成功。这就是 π0 掉到 13.8% 的原因——它过拟合了固定视角下的像素模式。

LIBERO-PRO(5 维扰动)

和 Plus 类似也是测试时加扰动,但侧重语义/任务层面(Plus 侧重感知/物理层面):

澄清:LIBERO-PRO 本身有 5 种扰动,但 VLS 只用了其中 2 种。
PRO 提供 5 种(Position/Object/Semantic/Task/Environment)。VLS 论文 Table I 表注明确写:
"The experimental environment consists of LIBERO-PRO's task and position perturbation"
原因(论文原话):"Among these, the position and task perturbations best align with the description of OOD scenarios in this paper."
• Position = 观测偏移(o_OOD):物体位置变了 → 对应 VLS 的"空间理解纠偏"
• Task = 语言偏移(l_OOD):指令彻底变了 → 对应 VLS 的"指令跟随纠偏"
另外 3 种(Object/Semantic/Environment)和 VLS 核心主张关系没那么直接,VLS 没测。
扰动具体变什么举例(以 Object suite "pick up alphabet soup" 任务为例)
Position (swap)把两个物体位置对调,指令一字不改alphabet soup 和 butter 的位置互换——alphabet soup 跑到原来 butter 在的地方。指令还是"pick up alphabet soup"
Object换目标物体的外观/颜色/大小(同类不同实例)alphabet soup 罐子从红色变成蓝色;或从大罐变成小罐
Semantic用同义词改写指令(语义不变)"pick up the alphabet soup" → "grab the can of soup"
Task同时换指令+目标+物体(任务彻底变)原来抓 alphabet soup → 现在要求抓 butter。场景物体没动,但要抓的目标变了
Environment换整个工作场景从标准桌面场景变成另一个完全不同的场景(不同桌子/背景/物体摆放逻辑)
PRO 最致命的是 Task 扰动:所有模型几乎都掉到 0–1%。因为它测的是"模型到底在读指令还是在背动作序列"——如果只是背了"这个场景=执行固定动作",换个指令就完全失效。
具体一条 PRO Position(swap) episode 长什么样
原始 Spatial suite 任务:"pick up the black bowl next to the cookie box and place it on the plate"
• 训练时(50条演示):黑碗在饼干盒旁边 (x≈-0.1, y≈0.05),饼干盒在 (x≈-0.05, y≈0.05),盘子在 (x≈0.1, y≈0.0)。人类 50 次都是"伸手到(-0.1, 0.05)附近抓碗 → 放到(0.1, 0.0)盘子上"
• PRO swap 测试时:黑碗和饼干盒位置互换——黑碗跑到 (x≈-0.05, y≈0.05),饼干盒到 (x≈-0.1, y≈0.05)。指令完全不改
• 死记坐标的模型:会伸手到 (-0.1, 0.05)——抓到的是饼干盒(错!)
• 真理解的模型:先找"cookie box 在哪" → 再找"cookie box 旁边的黑碗在哪" → 正确抓到新位置的黑碗

为什么几乎所有模型都失败:因为标准 LIBERO 的 50 条演示中物体位置变化范围太小(±几cm),模型学到的本质是"这个区域=目标"的空间固定模式,而非真正的空间关系推理。swap 一下就暴露了。
追问:swap 后指令和场景矛盾了,这算合理的 OOD 测试吗?

比如 Spatial suite 的"pick up the black bowl in the top drawer"——swap 后碗不在抽屉里了,但指令还说"in the top drawer"。指令说错了,模型应该听指令还是看实际情况?

答案:这是有意的设计,不是 bug。 核心在于 LIBERO 的成功标准(goal condition)不是"按指令描述的路径执行",而是"物体最终状态"

论文原文证据
• LIBERO bddl 文件的 goal condition(🟢仓库核对):(:goal (And (On akita_black_bowl_1 plate_1))) —— 成功标准是"碗在盘子上",不管碗原来在哪、怎么找到的
• Position swap 只改了物体初始位置(SwapPerturbator),没有改 goal condition
• VLS 论文原话:"The position perturbation refers to relocating objects (o_OOD) while keeping language instructions unchanged"

所以 swap 测的是:"当物体不在指令描述的位置时,模型能否根据视觉观察找到目标物体(而非死记'指令说在哪就去哪'),然后完成任务(把碗放到盘子上)。"

为什么这是合理的 OOD 测试(反映真实部署需求)
• 真实世界里,人类给指令时物体可能已经被别人移走了("帮我拿桌子上的杯子"——但杯子已经被放到柜台上了)
• 或者人类记错了位置(人类指令天然不精确)
• 一个鲁棒的策略应该能优先根据视觉找到目标,而非严格执行可能已过时的空间描述
• 评测系统认为"碗最终在盘子上=成功"——用户要的是结果,不在乎机器人怎么找到碗的

VLS 的 spatial hint 怎么修复这个问题:VLS 在推理时用 SAM+深度图获取物体 3D 关键点,VLM 生成可微 reward 函数,在去噪循环里注入梯度把动作拉向正确位置 → 10% → 90%。详细的 5 步管线机制见 VLS 全解析页 §2.5

RoboTwin 2.0(Clean vs Randomized)

RoboTwin 的每条 episode 变化取决于是 Clean 还是 Randomized 设置:

因素Clean 设置Randomized 设置
物体位置固定初始位置(每次一样)随机化(位置在更大范围内变化)
场景杂物(clutter)无干扰物体随机加入干扰物体(桌上多出没见过的杂物)
背景固定干净背景随机更换背景(墙壁/地板纹理变化)
桌面高度固定随机微调桌面高度
光照固定标准光照随机变化光照(方向/强度/颜色)
任务/指令不变(同一个任务)
机器人本体不变(固定双臂)
训练协议:标准评测用 Clean(50条) + Randomized(500条) 合并训练,分别在 Clean 和 Rand 环境下评测——这是 IID(两种环境都见过)。C2R(Clean-to-Random) 才是真 OOD:只用 50 条 Clean 训练 → 在 Randomized 下测试(模型从没见过视觉随机化)。
具体一条 RoboTwin episode 长什么样(以 "Handover Block" 任务为例)
Clean episode:固定白色桌面、固定光照、无杂物。左手持积木在固定位置、右手张开等待。每次 reset 积木的精确 xy 有微小随机(类似 LIBERO)。背景是纯色墙壁。
Randomized episode:同一个任务(递积木),但:
• 桌面变成木纹/大理石/布面(随机选)
• 背景墙变成有图案的/有窗户的(随机选)
• 桌上多了 2-3 个干扰物体(杯子/瓶子,训练时没有)
• 光照从正上方变成侧面暖光
• 桌面高度微调了 ±2cm

为什么 Rand 有 500 条而 Clean 只有 50 条:Randomized 的变化组合太多(背景×光照×杂物×桌高),500 条才能覆盖这个更大的分布。Clean 变化小(只有物体 xy 微调),50 条就够。

C2R 为什么难:只用 50 条 Clean 训练 → 模型从没见过杂物/随机背景/变光照 → 在 Randomized 下测试。StarVLA 从 IID 85.7% 直接掉到 C2R 的 10.6%。

CALVIN(4 环境 A/B/C/D)

CALVIN 的每条 episode 变化:

因素同一环境内不同 episode不同环境(A vs B vs C vs D)之间
物体初始状态抽屉开/关、灯亮/灭、积木位置——随机初始化同样随机
任务指令从 34 个任务中随机采样 5 个串联成一条链同样的 34 个任务池
桌面颜色/布局固定(同一环境内不变)不同:A/B/C/D 各有不同颜色的桌面、不同的物体摆放区域
物体外观固定不同:如粉色积木在 A 中的位置/颜色和 D 不同
相机/光照固定可能有微小差异
ABC→D 为什么是 OOD:模型在 A+B+C 三个环境里训练,见过三种不同的桌面颜色/物体布局。D 环境有第四种没见过的颜色/布局组合——不是更难的任务,而是一个"从未见过的视觉外观"的同类环境。
具体一条 CALVIN episode 长什么样(以 ABC→D 的 "open the drawer" 为例)
环境 A 训练时:蓝色桌面、抽屉在桌面右侧、灯在左上方。"open the drawer" 的意思是拉开右侧抽屉。人类演示了几十次"伸手到右侧 → 抓把手 → 向外拉"。
环境 D 测试时绿色桌面、抽屉可能在稍微不同的位置、整体色调偏暖。同样的指令 "open the drawer"。
• 任务逻辑完全一样(还是开抽屉)
• 但图像的颜色分布、物体的视觉外观(抽屉颜色可能不同)都和训练时见过的 A/B/C 不一样
• 如果模型学的是"蓝色桌面右侧那个方块状东西=抽屉",到了绿色桌面就可能认不出来

CALVIN 评测的独特之处:不是单个任务成功率,而是连续 5 步任务链的平均成功长度。比如"开灯→开抽屉→放积木→关灯→关抽屉"——一旦中间某步失败,后面全算失败。所以长程能力和单步精度同时被测。

数据量:每个环境约有数小时的连续交互数据(不是按单任务切分的),模型要从长视频中学会识别不同指令并执行。

RoboCasa-GR1(24 任务)

因素episode 间变不变说明
物体初始位置/朝向物体在操作台上随机摆放
铰接物体状态柜门/抽屉/微波炉门的初始开合角度随机
物体种类(Novel 任务)PnPNovel 系列任务:每次放入的物体可能不同(从物体池中随机选择),但训练时见过这些物体
场景/厨房布局不变固定的 GR1 人形机器人 + 固定厨房台面
相机/光照不变固定
RoboCasa 比 LIBERO 难的原因不是 OOD,而是任务本身更复杂:需要"抓+放+关门"多步操作、涉及铰接物体(柜门要用力推关)、人形本体控制更难(GR1 双臂+躯干)。最好的模型(StarVLA-OFT)也只有 48.8%。
具体一条 RoboCasa episode 长什么样(以 "PnPCanToDrawerClose" 为例)
任务:"抓起罐子 → 放进抽屉 → 关上抽屉"(3 步)
• 每次 reset:罐子在操作台上的随机位置、抽屉的初始开合角度随机(可能半开或全开)
• 不变:始终是同一个罐子、同一个抽屉、同一个厨房场景
• 难度来源 ①:多阶段组合——抓罐子(要精确对齐)→ 放进去(要判断抽屉深度)→ 关门(要施加足够的推力使铰链闭合)
• 难度来源 ②:铰接物体物理——抽屉有弹簧阻力,关不严就算失败;人形机器人(GR1)的手臂力控不如 Franka 精确
• 难度来源 ③:部分遮挡——罐子放进抽屉后被遮挡,关门时需要不碰到罐子

为什么 48.8% 已经是 SOTA:这不是 OOD 导致的低分,而是任务本身对精确控制+多步规划+力交互的要求超过了当前 VLA 的能力。在同样 IID 的条件下(训练时见过完全同样的场景/物体/抽屉),模型仍然经常在"关抽屉"这步失败。

SimplerEnv(VM vs VA)

因素Visual Matching (VM)Variant Aggregation (VA)
背景/桌面刻意用真机背景纹理渲染(让仿真贴近真实)系统替换多种背景:不同墙壁/桌面/地板纹理
光照模拟真机的固定光照多种光照条件取平均
相机和真机一致的固定视角多种相机位置取平均
物体位置和真机一致的固定摆放微调位置
是否 OODIID(和训练时真机数据最像)近 OOD(视觉外观系统变化,但不极端)
SimplerEnv 不提供训练数据——模型用 BridgeData V2(WidowX) 或 RT 系列(Google Robot) 的真机数据训练,然后在 SimplerEnv 仿真里评测。所以 VM 测的是"仿真和真机视觉有多像(sim-to-real gap)",VA 测的是"模型对视觉外观变化有多鲁棒"。
具体一条 SimplerEnv episode 长什么样(以 WidowX "Put carrot on plate" VM vs VA 为例)
VM(Visual Matching) episode
• 仿真渲染用了真实 BridgeData 实验室的背景照片作为纹理——图像看起来几乎和真机拍的一样
• 胡萝卜模型、盘子模型的位置和真机实验台一致
• 光照模拟真实实验室
• 这样测出来的成功率 ≈ 该模型在真机上的实际成功率(这是 SimplerEnv 的核心价值:cheap sim proxy for real eval)

VA(Variant Aggregation) episode
• 同一个任务(放胡萝卜到盘子),但:背景换成木纹墙/花纹地板/白板(多种选一)
• 桌面颜色可能从灰色变成棕色
• 光照从上方白光变成侧面暖光
• 相机位置微调(高了 3cm 或偏了 5°)
• 最终成功率 = 所有变体各跑一次后取平均

为什么 VA 分数低于 VM:VM 尽力模拟真机(模型见过的视觉),VA 故意引入视觉变化(模型没精确见过)。如果一个模型 VM 很高但 VA 掉很多,说明它严重依赖特定视觉外观而非学会了通用技能。

数据量特殊性:SimplerEnv 本身 0 条训练数据——训练用真机数据(BridgeData V2 约 6 万条 WidowX 轨迹;RT 系列约 13 万条 Google Robot 轨迹)。SimplerEnv 只是一个评测平台,不是数据源。
搞懂了上面,再来读表里的"原始 LIBERO 四套件 SFT(10 epoch) → LIBERO-Plus 七维扰动评测"

拆开说三步:
"原始 LIBERO 四套件" = LIBERO 官方提供的训练演示数据(Spatial/Object/Goal/Long 四个 suite,各约 500 条遥操作轨迹)——没有任何扰动的干净数据
"SFT(10 epoch)" = 在这些干净演示数据上做后训练/监督微调,训 10 个 epoch。这一步让模型学会"怎么在 LIBERO 桌面场景里完成这些任务"。这就是"后训练"
"→ LIBERO-Plus 七维扰动评测" = 训练完之后,拿训好的模型去 LIBERO-Plus 的扰动场景(换相机视角/换光照/换背景等 7 维变化)里 rollout 跑评测。

关键:训练用的是干净数据(无扰动),测试用的是扰动数据——训练时从没见过这些视觉变化,所以测出来的是真正的 OOD 泛化能力。"→"箭头表示"训完之后拿去测",不是两步训练。

ImageWAM 论文原话确认:"We use the same original LIBERO training demonstrations and do not incorporate the augmented LIBERO-Plus training data."

完整流程示意:
VLM 预训练(继承,如 Qwen-VL)
 → 编辑模型预训练(继承,如 FLUX.2 / OmniGen2)
  → 在 LIBERO 原始干净数据上 SFT 10 epoch(后训练,学会该场景任务)
   → 拿训好的模型去 LIBERO-Plus 扰动环境 rollout(评测,测 OOD 泛化)
所以表格里"SFT → Plus/PRO 评测"的含义统一是:后训练阶段用原始干净数据,评测阶段才换到扰动环境。下面所有"→"箭头都是这个意思——不是两步训练,而是"训完→测"。
论文具体怎么用
明确做了 LIBERO→Plus/PRO 的 OOD 测试(🟢已核对)
ImageWAM🟢 原始LIBERO四套件SFT(10 epoch) → LIBERO-Plus 七维扰动评测,不混入增强数据
Qwen-RobotManip🟢 原始LIBERO SFT → LIBERO-Plus 七维评测 + RoboTwin-C2R
StarVLA🟢 四套件合并SFT(30K步) → LIBERO-Plus 评测 + SimplerEnv-VA
VLS🟢 冻结base policy(π0.5在LIBERO训的) → LIBERO-PRO 的 Position+Task 两种扰动(PRO共5种,VLS只选了这2种)推理时引导
LIBERO-PRO 使用论文详解(233 篇 PDF 精确检索:严格引用"LIBERO-PRO"的仅 VLS 1 篇)

⚠️ 但注意:虽然"LIBERO-PRO"这个名字只有 VLS 在用,但DWYS/SEAL 做了自己设计的类似 LIBERO OOD 变体(在 LIBERO-10 上加 4 维扰动:Lang-Rephrase / Lang-Object-Property / Visual-Scene / Visual-Viewpoint),本质和 PRO 是同类思路,只是不叫"PRO"。所以"在 LIBERO 上做类 PRO 风格 OOD 测试"的论文实际有 2 篇(VLS + DWYS/SEAL)。

VLS(Vision-Language Steering, 2026):
训练协议:base policy(π0.5)在标准 LIBERO 数据上训练并冻结权重——VLS 本身不训练任何参数
测试协议:在 LIBERO-PRO 的 Position(swap) 和 Task 两种扰动 × 4 suite 上评测
怎么用 PRO:VLS 在冻结策略的去噪循环中注入 VLM 生成的梯度引导,让策略适应 OOD 输入
结果:base policy 在 swap 下 14% → VLS 引导后 36%;在 task 下 12% → 20%(Object suite 改善最大)
为什么选 PRO 而不是 Plus:VLS 测的是"推理时能否纠正语义/空间理解错误"——PRO 的 Position(swap) 精准测"空间理解" vs "死记坐标",Task 测"指令跟随" vs "背动作",这正是 VLS 想证明的能力

为什么目前只有 1 篇用 PRO:PRO 的 Task 扰动所有模型都崩到 0-1%——太难了,大多数 VLA 改进方法在 Task 扰动下看不出差异(都是 0 分),无法体现自己的优势。只有 VLS 这种"推理时引导"方法才有可能在这个极端设定下展示增益。对于"做更鲁棒的 VLA"类工作,Plus 的 7 维覆盖更适合展示多维度改进。

DWYS/SEAL 的类 PRO 方案(自研 OOD 变体 + 组合泛化,非引用 PRO):

先解释:LIBERO-100 / LIBERO-90 / LIBERO-10 的关系
子集任务数含义
LIBERO-1010= 常说的 Long suite(多步骤组合任务,跨厨房/客厅/书房场景)
LIBERO-9090= 更大的任务池(单步+多步,覆盖 10+ 个不同场景,任务更多样)
LIBERO-100100= LIBERO-10 + LIBERO-90 的合集(全部 100 个任务)
加上 Spatial + Object + Goal+30总共 130 个任务(但 Spatial/Object/Goal 和 LIBERO-100 是不同的任务集)

DWYS/SEAL 用的"LIBERO-100"就是 10+90 的全集。大多数论文说"LIBERO 四套件"指的是 Spatial+Object+Goal+Long(即 LIBERO-10)共 40 个任务。

DWYS/SEAL 具体怎么做实验(三个层面都是自己构造的)

① 训练数据:在 LIBERO-100(100 个任务)的标准演示上做 SFT + 用 LLM 给每条演示生成 chain-of-thought 推理标注("reasoning-annotated extension of LIBERO-100")

② 自构造的 4 维 OOD 变体(论文原话:"we extend the LIBERO-10 benchmark with four OOD variations"):
变体名类型具体怎么构造
LIBERO-10-Lang-Rephrase语义 OOD改写指令措辞,物体描述不变(如 "pick up the butter" → "grab the stick of butter from the table")
LIBERO-10-Lang-Object-Property语义 OOD用替代属性描述物体(如不说"alphabet soup"而说"the red can on the left")
LIBERO-10-Visual-Scene视觉 OOD在场景中加入干扰物体 / 替换非目标物体(桌上多了训练没见过的东西)
LIBERO-10-Visual-Viewpoint视觉 OOD更换背景纹理 + 改变相机视角
训练协议:在 LIBERO-100 标准数据上 SFT → 在这些自构造的变体上测试(不把变体数据混入训练)

③ 自构造的组合泛化(Composition)任务
任务集构造方式举例
LIBERO-10-Compose (2 个新任务)把 LIBERO-10 中学过的单技能重新排列组合成没见过的多步指令训练见过"放A进篮子"和"放C进篮子" → 测试"放A和C进篮子"
LIBERO-100-Basket-Compose (9 个)从 LIBERO-90 挑 basket 相关任务,组合成新链
LIBERO-100-Compose (13 个)跨更多物体和任务类型的新组合

这测的是"学过的技能能否零样本组合成新任务"——和 OOD(环境变了)不同,这是组合泛化(任务逻辑变了但场景不变)。

结果:SEAL(VLM verifier 运行时验证) 在 OOD 上比 base π0 提升最大 15%,在组合泛化上随训练数据增大进一步提升

和 PRO 的异同:思路类似(在 LIBERO 上加扰动测 OOD),但 DWYS 侧重"验证推理-动作对齐是否能增强 OOD",且 OOD 维度比 PRO 温和(不含 PRO 那种"同时换指令+目标+物体"的极端 Task 扰动),不会崩到 0%。另外 DWYS 额外做了组合泛化(PRO 没做这个)。
FutureVLA🟢 LIBERO SFT → LIBERO-Plus + SimplerEnv-VA MINT🟢 LIBERO SFT → LIBERO-Plus + CALVIN + MetaWorld G0.5🟢 LIBERO SFT → OOD跨benchmark泛化测试 在LIBERO上SFT→标准(IID)评测 OpenVLALIBERO SFT(LoRA微调) → 标准评测 + 跨本体迁移 Cosmos(2025)LIBERO SFT → 标准评测 Cosmos3LIBERO SFT → 标准评测 CosmosPolicyLIBERO SFT → 标准评测 DiT4DiTLIBERO SFT → 标准评测 Fast-WAMLIBERO SFT → 标准评测(仅IID) DreamVLALIBERO SFT → 标准评测 Motus预训练+LIBERO SFT → 标准评测 SwiftVLALIBERO SFT → 标准评测 UWMLIBERO SFT → 标准评测 + zero-shot鲁棒性 UniSkillLIBERO SFT → 标准评测 mimic-videoLIBERO SFT → 标准评测 π0-FASTLIBERO SFT → 标准评测 KI-VLALIBERO SFT → 标准评测(测知识隔离防退化) DWYS/SEALLIBERO SFT → 标准评测(测推理-动作对齐) InSightLIBERO SFT → 标准+unseen泛化测试 LA4VLALIBERO SFT → zero-shot跨本体迁移 LAPLIBERO SFT → zero-shot跨本体 ForeActLIBERO SFT → 标准评测 ICLR-ICLLIBERO few-shot → in-context zero-shot MaskWAMLIBERO SFT → 标准评测 OASISLIBERO SFT → 标准评测 World-VLA-LoopLIBERO SFT → 标准评测 RISE-WMLIBERO SFT → 标准评测(仅IID) Qwen-VLALIBERO SFT → 标准评测 + 跨本体 Xiaomi-Robotics-0LIBERO SFT → 标准+SimplerEnv-VA评测 VLA-Survey综述:对比引用各论文LIBERO成绩

ALOHA(28 篇)

论文具体怎么用
ACT🟢 ALOHA硬件首发论文,在其上采集+训练+评测(6个双臂任务)
π0跨本体预训练含ALOHA数据 → ALOHA任务后训练/prompt评测
OpenVLAALOHA作为评测平台之一(跨本体LoRA迁移)
RDT-1B跨本体预训练 → ALOHA双臂任务评测
π0-FASTALOHA双臂任务SFT+评测
pi-HiRobotALOHA双臂SFT+评测
DynaGuideALOHA用于真机引导实验
DiT4DiTALOHA双臂SFT+评测
CosmosPolicyALOHA SFT+评测
Qwen-RobotManipALOHA真机评测(OOD:87.5% vs π0.5 37.5%)
Qwen-VLAALOHA评测
HumanEgo人类视频zero-shot→ALOHA双臂迁移
ARROALOHA OOD鲁棒性评测
UniSkillALOHA双臂统一技能
UniTALOHA双臂跨任务统一
SAILALOHA测试时scaling
FACTRALOHA+触觉
RDPALOHA扩散策略评测
VT-RefineALOHA视触觉精调
EDILALOHA高效分布式IL
GigaBrainALOHA评测
TouchGuideALOHA触觉引导
TA-VLAALOHA触觉VLA
CosmosALOHA评测
HATOALOHA触觉遥操作硬件
EmbodiedSurvey, ILContactRichSurvey, VLA-Survey综述:ALOHA作为标准双臂平台引用

RoboTwin 2.0(19 篇,含 6 篇同时引原版 Mu et al.)

论文具体怎么用
StarVLA🟢 48×A100 SFT(Clean+Rand合并) → Clean/Rand分别评 + C2R OOD
ImageWAM🟢 Clean+Rand合并SFT(5天) → Clean/Rand评测(93.2/93.6%)
Qwen-RobotManip🟢 SFT → Clean/Rand + C2R(Clean训→Rand测) + IF + XE
Motus预训练+RoboTwin SFT → 评测
G0.5RoboTwin SFT → OOD泛化
MaskWAMRoboTwin SFT → 评测
SwiftVLARoboTwin SFT → 评测
Fast-WAMRoboTwin SFT → 评测(仅IID)
World-VLA-LoopRoboTwin SFT → 评测
Qwen-VLARoboTwin SFT → 评测
LingBot-VLARoboTwin SFT → 评测
GigaWorld-PolicyRoboTwin SFT → 评测
DECORoboTwin SFT → 评测
SynthICL合成数据zero-shot → RoboTwin评测
ManiTwinRoboTwin孪生仿真OOD
RISE-WM, WorldArena, UniVTACRoboTwin SFT/评测
EmbodiedSurvey综述引用

CALVIN(17 篇)

论文具体怎么用
DynaGuide🟢 CALVIN D-split训dynamics model → ABC→D零样本引导评测
VLS🟢 冻结base policy → ABC→D推理时VLM引导
DeFICALVIN SFT → ABC→D评测
DISCOCALVIN冻结DP → ABC→D引导评测
GHIL-GlueCALVIN ABC→D zero-shot
SuSIECALVIN子目标生成 → 评测
DreamVLACALVIN SFT → 评测
π0-FASTCALVIN SFT → 评测
MINTCALVIN SFT → 评测
OASISCALVIN SFT → 评测
StarVLACALVIN评测(框架支持)
Xiaomi-Robotics-0CALVIN SFT → 评测
AHEAD, RISE-WMCALVIN SFT → 评测
VIMA, ILContactRichSurvey, VLA-Survey综述引用

RoboCasa(15 篇) / SimplerEnv(9 篇) / RLBench(10 篇)

Benchmark论文(全部)典型用法
RoboCasaStarVLA, Cosmos, Cosmos3, CosmosPolicy, DiT4DiT, GR00T-N1, LRM, MimicDroid, UniT-Humanoid, DIAL, HSAT-AT, OmniGuide, Qwen-RobotManip, Qwen-VLA, RISE-WMSFT→24任务评测(IID为主,任务本身难)
SimplerEnvStarVLA(VM+VA), FutureVLA(VA), DeFI(VA), Xiaomi-Robotics-0(VA), G0.5, Qwen-VLA, SeeingToDoing, LAPA, VLA-SurveyVM=标准(贴近真机); VA=近OOD(多变体平均)
RLBenchActiveVLA, Goal-VLA, SAM2Act, SymmetryAwareFusion, SynthICL, AHEAD, VIMA, EmbodiedSurvey, ILContactRichSurvey, VLA-Survey多任务SFT→评测/zero-shot

其余 Benchmark

Benchmark论文(全部)典型用法
Push-T(6篇)Diffusion Policy, DISCO, VERA, Cosmos3, DCDP, DDP-WM扩散/FM策略消融(2D桌面推块)
Language Table(9篇)OpenVLA, GR00T-N1, LAPA, LVP, RDT-1B, WM-ManipSurvey, DeFI, DreamDojo, VLA-Survey语言条件桌面操作评测
BEHAVIOR(7篇)SuSIE, VIMA, Cosmos3, G0.5, RISE-WM, StarVLA, VLA-Survey长程家务任务
ManiSkill(7篇)EmbodiedSurvey, LRM, WM-ManipSurvey, ARRO, HSAT-AT, UniVTAC, World-VLA-Loop多任务泛化
MetaWorld(4篇)VIMA, LA4VLA, MINT, VLA-Survey跨任务(较旧)
Franka Kitchen(3篇)DISCO, Diffusion Policy, VLA-Survey多任务组合(较旧)
读法:🟢标记的是我从论文原文精确核对了训练协议(如"原始LIBERO四套件SFT,不混入Plus增强数据,在Plus七维扰动下评测")的条目。其余为 PDF 全文检索到该 benchmark 关键词,具体协议请查原文。

贯穿各阶段的"防遗忘":协同训练

无论预训练还是后训练,只要在动作数据上训 VLA,VLM 的语言视觉能力就会退化(VLA→VA 退化)。解法是协同训练(co-training):动作数据里掺入 VLM 数据(VQA/grounding)一起训。这是"训练方式"里和阶段划分正交的一条主线,详见 协同训练 & KI tab

后训练也常是"动作数据 + VLM 数据"的协同,而非纯动作微调

各模型训练 Pipeline 横向对比 🟢论文核对

把主流 VLA 的"三阶段"逐模型拆解。关键信息:哪些做了 VLA 预训练(P.T.)、用了哪些数据

模型VLM 骨干(继承)VLA 预训练?预训练数据Benchmark 后训练
π0PaliGemma 3B10,000h 跨本体(7 种机器人、68 任务、22 台机器人)高质量数据 post-training(等价于 SFT)
π0.5π0 骨干(含 PaliGemma)π0 预训练数据 + ~400h 家庭移动操作 + co-train(VLM + subtask)mobile manipulation SFT
Qwen-RobotManipQwen3.5-4B~38,100h 开源异构数据(OXE/DROID/RH20T/RoboMIND/H2R合成) + 28M VL样本 co-train目标本体/任务 SFT(比预训练"更少GPU更少步")
OpenVLALlama 2 7B + DINOv2 + SigLIPOXE 970K episode(跨本体混合)下游 LoRA 微调(新机器人/新任务)
GR00T N1.5Eagle-2 VLM大规模 cross-embodiment(NVIDIA 内部 + 开源)benchmark SFT
StarVLA(框架)Qwen-VL 系列 / Cosmos✗(框架本身不做)直接在 benchmark 演示上 SFT(LIBERO 30K步即好)
ImageWAMOmniGen2 / Ovis-U1 / FLUX.2—(只继承图像编辑模型预训练)直接在 benchmark 演示上 SFT(LIBERO 10epoch)
DynaGuide—(冻结 DP)只训 dynamics model(15M, ~48h 单卡)
VLS—(冻结 base policy)不训练(training-free, VLM API 引导)
读法:P.T.=✓ 的工作做了阶段②(VLA 预训练),拥有跨本体通用能力,少样本即可迁移;P.T.=✗ 的工作跳过阶段②,直接在目标 benchmark 数据上从 VLM/edit model 出发做 SFT——它们在 benchmark 上照样能刷高分,但迁移新任务需要重新训练。
StarVLA 的定位:它是框架而非单一模型——对外提供 backbone + action head 可插拔组合(OFT/FAST/π/GR00T),用户拿来做 benchmark SFT 比较。它不自己做大规模预训练,但可以加载别人预训练好的 VLM(如 Qwen3.5-VL)。

"不做 VLA 预训练"的工作怎么跑? 🟢论文核对

跳过阶段②、不做大规模跨本体预训练的工作,其训练 pipeline 和"基础模型"类有何本质区别?

维度有 VLA 预训练(π0/Qwen-RobotManip)无 VLA 预训练(StarVLA/ImageWAM)
起点VLM + 大量机器人数据 → 通用动作先验VLM(或图像编辑模型) + 只有目标 benchmark 数据
Benchmark SFT 作用适配/精调(少步即好,如π0 "prompt or fine-tune")是主要训练(这一步教会模型动作,不是精调而是从头学动作)
训练数据量预训练~万小时 + 后训练~百/千条后训练就是全部:~千条演示(如 LIBERO 四套件各500条)
OOD 能力来源大规模异构预训练提供的泛化基底纯靠架构设计(如 ImageWAM 的 KV cache 天然抗视觉扰动;DynaGuide 靠外部引导)
算力门槛预训练需大集群;SFT 省全程用 benchmark SFT 那点资源(8×A100 / 单3090)
迁移到新任务少样本即可(few-shot prompt / 轻量 SFT)需完整重训(新 benchmark 新数据集)
容易踩的坑:看论文"无需预训练即超越 π0.5"不要误以为"不用训练"——它只是没做大规模跨本体预训练,在 benchmark 本身的数据上它还是正儿八经做了 SFT 的。"P.T.=✗"= 没做阶段②,不等于"零训练"。
实用判断:如果你手上有足够算力做大规模预训练 → 走 π0/Qwen-RobotManip 路线获得通用基底;如果你只想在一个具体 benchmark/任务上刷结果 → 走 StarVLA/ImageWAM 路线,直接在该 benchmark 数据上 SFT 即可,不需要先预训练。两条路最终都要在 benchmark 上做后训练(SFT)才出评测分数。

端到端复现流水线:从零到刷出 LIBERO 96.6% 🟢仓库核对

以 StarVLA-OFT (Qwen3-VL) 在 LIBERO 上的 96.6% 为例,完整拆解"我要复现这个数字,具体跑什么"。所有路径/命令来自仓库 examples/LIBERO/

Step 0: 环境准备

# StarVLA 环境
git clone https://github.com/starVLA/starVLA.git && cd starVLA
pip install -e .   # 或按 README 的 conda 指引

# LIBERO 仿真环境(评测需要)
# → 官方 LIBERO 仓库,推荐 Python 3.10
pip install tyro matplotlib mediapy websockets msgpack
pip install numpy==1.24.4 mujoco==3.2.3

Step 1: 下载数据集

# 从 HuggingFace 下载 4 个 suite 的 LeRoBot 格式数据(已去 no-ops)
export DEST=playground/Datasets/LEROBOT_LIBERO_DATA
bash examples/LIBERO/data_preparation.sh
# 实际下载:IPEC-COMMUNITY/libero_{spatial,object,goal,10}_no_noops_1.0.0_lerobot

Step 2: 下载 VLM 权重

# Qwen3.5-VL(或 Qwen2.5-VL / Qwen3-0.8B 等,按 config 指定)
# 放到 playground/Pretrained_models/Qwen3.5-VL
huggingface-cli download Qwen/Qwen3.5-VL --local-dir playground/Pretrained_models/Qwen3.5-VL

Step 3: 训练(后训练/SFT)

# 关键配置在 examples/LIBERO/train_files/starvla_cotrain_libero.yaml
# 训练脚本(自动检测 GPU 数):
export NUM_PROCESSES=8  # 8× A100
accelerate launch \
  --config_file starVLA/config/deepseeds/deepspeed_zero2.yaml \
  --num_processes 8 \
  starVLA/training/train_starvla.py \
  --config_yaml examples/LIBERO/train_files/starvla_cotrain_libero.yaml \
  --framework.name QwenOFT \
  --framework.qwenvl.path playground/Pretrained_models/Qwen3.5-VL \
  --data.data_root playground/Datasets/LEROBOT_LIBERO_DATA \
  --data.data_mix libero_all \
  --output_dir playground/Checkpoints/libero_qwen3oft
# 训练约 30K 步(~9.5 epochs, per-device batch 16)即可达最佳
# 每 10K 步自动存 checkpoint + 可选 periodic 评测

Step 4: 评测(在仿真里 rollout)

# 启动 model server(GPU 侧)
python deployment/model_server/server_policy.py \
  --ckpt_path playground/Checkpoints/libero_qwen3oft/checkpoint-30000

# 启动 LIBERO 评测(另一终端, LIBERO conda 环境)
python examples/LIBERO/eval_files/eval_libero.py \
  --suite spatial --num_episodes 50
# 对 4 个 suite 各跑 500 trials(10 任务 × 50 episodes)
# 报告 success rate → 预期: Spatial ~97.8, Object ~98.6, Goal ~96.2, Long ~93.8, Avg ~96.6

Step 5: 解读结果

一张表总结这条线的训练量:VLM 预训练(Qwen团队做的,你不用管) → 无 VLA 预训练 → LIBERO 四套件合并 SFT, 8× A100, batch 16, 30K 步, ~9.5 epoch → rollout 评测得分。数据总量 = 2000 条演示(4 suite × 500 条),墙钟时间约几小时。
也可用预训练 checkpoint 直接评测(不再训练):StarVLA 在 HuggingFace 提供了已训好的 checkpoint 集合(StarVLA/bench-libero),下载后直接 Step 4 评测即可验证论文数字。已验证在 A100 和 RTX 4090 上均可运行。

各动作头的损失函数一览

读完你能回答:为什么 FAST 用交叉熵、OFT 用 L1、扩散/FM 用 MSE?各自在优化什么?

动作头损失优化目标为什么
FAST(自回归)交叉熵(next-token)预测下一个动作 token 的类别动作被离散成 token,等价于语言建模,用 LLM 的 CE loss
OFT(并行回归)L1(有时 L2)直接回归连续动作值L1 对离群点更鲁棒,OpenVLA-OFT 用 L1;简单直接
DDPM 扩散MSE(预测噪声 ε)‖ε − ε_θ‖²学分数函数,不涉及配分函数,训练稳定
Flow Matching(π/GR00T)MSE(预测速度 v)‖v − v_θ‖², v=action−noise学直线路径速度场,采样步数少
离散扩散(MaskGIT)交叉熵(预测 masked bin)预测被 mask 的动作 bin logits动作分箱后做 MaskGIT 式并行去噪

为什么"预测噪声/速度"而不是"直接预测动作"?

直接回归动作(OFT/L1)会把多模态分布"平均化"——左绕右绕平均成撞墙。扩散/FM 不直接预测动作,而是预测噪声/速度场,通过迭代采样从随机起点生成,天然能落入某一个模式(commit)。这就是它们能处理多模态动作分布的根本原因。详见 DP·DiT·Flow Matching 三剑客

协同训练时的多损失组合

总损失 = λ_vla · L_action + λ_vlm · L_vlm  (+ λ_aux · L_aux)

L_action : 动作损失(上面五种之一)
L_vlm    : VLM 的语言建模损失(维持视觉语言能力,防遗忘)
L_aux    : 辅助目标(如未来帧预测/子目标/ECoT)

典型配比: λ_vla=1.0, λ_vlm=0.1~0.5 (按经验调)

KI-VLA 的做法更特殊:VLM 用 FAST token 的离散交叉熵监督,动作专家用连续 FM MSE,两路损失并存但梯度不互通(见"协同训练 & KI"tab)。

微调策略:全参 vs LoRA vs 冻结

读完你能回答:VLA 该微调哪些层?为什么 VLM 用低学习率?

策略训什么优点缺点/场景
全参微调VLM + action head 全部性能上限最高显存大、易过拟合小数据、可能损坏 VLM 知识
LoRAVLM 加低秩适配器 + action head 全训省显存、快、保护预训练知识性能略低于全参;小数据首选
冻结 VLM只训 action head最省、最快、完全不损 VLM动作性能受限;VLM 与动作对齐弱
分组学习率VLM 低 LR + head 高 LR兼顾保护知识与快速学动作需调两个 LR

分组学习率(实战常用)

# starVLA 的做法(config 里按模块名设 LR)
trainer:
  learning_rate:
    base: 1e-05              # 其它模块
    qwen_vl_interface: 1.0e-05   # VLM 骨干: 低 LR(保护预训练知识)
    action_model: 1.0e-04        # 动作头: 高 LR(新参数,快速学)
# 实现: trainer_tools.build_param_lr_groups 按名字分组
直觉:VLM 是预训练好的(懂视觉/语言),动一大步会"学坏"——用低 LR 小心微调;action head 通常是随机初始化的新模块,需要高 LR 快速学会输出动作。

其它训练技巧

  • EMA(指数滑动平均):维护权重的滑动平均副本用于评估,更稳定。注意与 BatchNorm 冲突→VLA 视觉编码器常用 GroupNorm
  • 混合精度(bf16):VLM 前向用 bf16 省显存;动作头/损失常保留 fp32 保数值稳定
  • DeepSpeed ZeRO-2/3:分片优化器状态/梯度/参数,多卡训大模型
  • repeated_diffusion_steps:同一样本采多组噪声(如 8 组),等效增大 batch 但 VLM 只编码一次(repeat),增加训练信号密度
  • 梯度裁剪:防梯度爆炸,尤其扩散/FM 训练早期

协同训练(Co-training):为什么需要

读完你能回答:为什么纯动作微调会让 VLM "变笨"?怎么防?

核心问题 VLA→VA 退化:只用机器人动作数据微调 VLA,VLM 的视觉语言能力会快速退化(如 RefCOCO-g 空间理解在 20K 步内降到随机水平)。模型从"vision-language-action"退化成"vision-action pattern matcher"——看图执行常见动作,不再认真听语言。RoboTwin-IF 就是专门测这个退化的。

三种防退化手段

手段做法代表
多目标协同训练交替喂 VLA 数据(学动作)和 VLM 数据(VQA/grounding,保语言视觉),按 λ 配比π0.5, Qwen-RobotManip(28M VL 样本)
知识隔离(KI)梯度停止,阻断动作专家到 VLM 的梯度回流KI-VLA, π0.5, π0.7
冻结 VLM完全不动 VLM,只训 head(最极端)部分轻量方案

VLA→VA 退化详解 + Co-train 具体怎么工作 🟢论文+代码核对

先解释术语

术语全称含义
LRLearning Rate (学习率)每步更新参数的步长大小。LR 高 = 学得快但容易"学坏";LR 低 = 学得慢但稳。
VQAVisual Question Answering"看图回答问题"数据,如图片+问题"图中有几个苹果?"→答案"3个"
Co-train协同训练在同一个训练循环里交替喂两种数据(动作数据 + VQA 数据),各自算各自的 loss,加权求和后一起更新参数
Loss损失函数衡量"模型预测离正确答案有多远"的数字。训练 = 不断让 loss 变小。
Cross-Entropy (CE)交叉熵用于离散预测(下一个 token 是什么?)的 loss。VLM 预测文字时用这个。
MSE / Flow Matching均方误差 / 流匹配用于连续预测(动作向量该多大?)的 loss。动作头预测连续动作时用这个。

VLM 接上 action head 后为什么能力被削弱?🟢多篇论文实证

这是 VLA 领域被广泛实证确认的现象。 核心原因:

纯动作 SFT 时,梯度主要驱动模型学"这个图像 pattern → 输出这个动作序列"的映射。VLM 的语言理解能力(需要细读指令区分微妙差异)如果没有监督信号维持,就会在动作梯度的拉扯下退化。

为什么:因为动作数据里同一个场景通常只有一种指令(不像 VQA 数据有丰富的问答变体)。模型发现"不管指令怎么写,只看图就能猜对动作"——于是语言分支被旁路了

论文实证
• Qwen-RobotManip(§4.2):"policy behaves more like a vision-action pattern matcher"
• StarVLA(§6):"action-only fine-tuning can rapidly degrade multimodal representations"
• LIBERO-Plus 发现:"Models largely ignore language instructions, functioning more like Vision-Action models"
• KI-VLA:整篇论文就是为了解决这个退化问题
• RoboTwin-IF(Qwen新提):专门测"给同场景不同指令,模型能否区分"——退化的模型给什么指令都执行同一个动作

VLA 里的 VLM 和原生 VLM 一样吗?

情况VLA 里的 VLM vs 原生 VLM能力保留程度代表
冻结 VLM完全一样(权重一字不动)100% 保留语言视觉能力ImageWAM
低 LR 微调 / LoRA稍有不同(权重微调过,适配了动作域)大部分保留,少量适配StarVLA(分组LR) / OpenVLA(LoRA)
全参 SFT(无保护)明显不同(语言能力可能严重退化)动作强但语言弱纯动作 SFT(不推荐)
全参 SFT + co-train有变化但受保护动作强 + 语言基本保留π0 / Qwen-RobotManip
一句话:VLA 里的 VLM 是否和原生 VLM 不同,取决于"训练时有没有保护它"。冻结 = 完全一样;全参无保护 = 会退化变笨;全参+协同训练 = 变了但受保护。

Co-train 时,动作数据和 VQA 数据分别经过什么模型、算什么 loss?

这是最核心的机制。用一张图说清:

┌─────────────────────────────────────────────────────────────────────┐
│                        同一个模型(共享参数)                          │
│                                                                     │
│   ┌─────────── 动作数据路径 ───────────┐   ┌─── VQA 数据路径 ───┐  │
│   │                                   │   │                     │  │
│   │  输入: 图像 + "pick up butter"    │   │  输入: 图像 + "图中 │  │
│   │         + 机器人状态              │   │  有几个苹果?"      │  │
│   │            ↓                      │   │        ↓            │  │
│   │    ┌──────────────┐               │   │  ┌──────────────┐  │  │
│   │    │  VLM backbone │ ← 共享权重 → │   │  │  VLM backbone │  │  │
│   │    │  (Qwen-VL等)  │               │   │  │  (同一个)     │  │  │
│   │    └──────┬───────┘               │   │  └──────┬───────┘  │  │
│   │           ↓                       │   │         ↓           │  │
│   │    ┌──────────────┐               │   │  ┌──────────────┐  │  │
│   │    │ Action Head   │               │   │  │  LM Head     │  │  │
│   │    │ (DiT/OFT/FM) │               │   │  │ (next token) │  │  │
│   │    └──────┬───────┘               │   │  └──────┬───────┘  │  │
│   │           ↓                       │   │         ↓           │  │
│   │    预测: 连续动作向量              │   │  预测: "3个"       │  │
│   │    [dx,dy,dz,rx,ry,rz,grip]      │   │  (token by token)  │  │
│   │           ↓                       │   │         ↓           │  │
│   │    正确答案: 演示里的真实动作      │   │  正确答案: "3个"   │  │
│   │           ↓                       │   │         ↓           │  │
│   │    Loss: MSE/Flow Matching        │   │  Loss: Cross-Entropy│  │
│   │    (连续值之间的距离)             │   │  (token概率对不对)  │  │
│   └───────────┬───────────────────────┘   └─────────┬───────────┘  │
│               ↓                                     ↓               │
│        L_action = MSE(预测动作, 真实动作)    L_vlm = CE(预测token, 真实token) │
│               ↓                                     ↓               │
│          ┌────────────────────────────────────────────┐             │
│          │   总 Loss = 1.0 × L_action + 0.1 × L_vlm  │             │
│          │   → 一起反传梯度 → 更新所有共享参数         │             │
│          └────────────────────────────────────────────┘             │
└─────────────────────────────────────────────────────────────────────┘
逐步拆解

动作数据路径
① 输入 = 图像 + 语言指令 + 机器人状态
② 经过 VLM backbone(和 VQA 路径共享同一组权重)提取视觉-语言特征
③ 特征送入 Action Head(如 flow-matching DiT / OFT MLP / FAST tokenizer)
④ 输出 = 连续动作向量(如 [dx, dy, dz, rx, ry, rz, gripper]×16 步)
⑤ Loss = MSE 或 Flow Matching loss(预测动作和演示里真实动作的距离)

VQA 数据路径
① 输入 = 图像 + 文字问题(如"What color is the mug?")
② 经过 同一个 VLM backbone(共享权重)
③ 特征送入 LM Head(VLM 自带的语言预测头,逐 token 输出下一个字)
④ 输出 = 文字答案(如"red",token by token)
⑤ Loss = Cross-Entropy(每个位置预测的 token 概率 vs 正确 token)

两路 loss 怎么合并
总Loss = λ_action × L_action + λ_vlm × L_vlm
StarVLA: λ_action=1.0, λ_vlm=0.1(动作是主任务,VQA 只占 10% 权重防退化)
Qwen-RobotManip: 数据比 9:1(机器人数据:VL 数据),效果类似
为什么管用:VQA 数据强迫模型"继续认真读文字、理解语义、回答问题"——维持了语言分支的活跃度。如果没有 VQA loss,动作梯度会让模型发现"不读文字也能猜对动作",然后语言分支被旁路、退化。

具体用什么 VQA 数据(StarVLA 代码):ShareGPT4V-COCO(一种高质量图文问答数据集),包含图像描述、空间理解问答、物体识别等。不需要机器人相关——任何维持 VLM "读图回答"能力的数据都行。

知识隔离 KI 深究(KI-VLA 论文) 🟢论文核对

KI 发生在哪个阶段?→ 后训练/SFT 阶段,不是预训练。

KI(Knowledge Insulation) 解决的问题是:把预训练好的 VLM 适配成 VLA 时(即加 action head 做机器人数据 SFT),action expert 的梯度会破坏 VLM 已有的知识。
论文原话:"insulating the VLM backbone during VLA training" / "when adapting the pre-trained VLM to a VLA, the newly initialized weights of the action expert don't interfere with the pre-trained weights"

时间线:VLM 预训练(Qwen/PaliGemma团队做的,和 KI 无关) → 后训练/SFT 时用 KI 技术(加 action head 做机器人数据训练,此时做梯度隔离) → 部署推理
KI 是用少量数据针对单台机器人做?还是大量多机器人数据做?→ 两种都做了。

论文原话(§Experiments):"We train models both on single robot embodiments as well as generalist models that are trained on a large mixture of data from many different robots on a large number of tasks, including non-action prediction tasks such as image captioning, bounding box prediction, and robot planning."

① Specialist(单机器人专有训练)
论文 Figure 5 标题:"Comparison of multiple models/architectures on 'table bussing' task with specialist models trained on a single robot embodiment."
→ 只用一台机器人的数据训练+KI,验证 KI 在少数据专有训练时也有效。

② Generalist(大规模多机器人训练)
论文原话:"we next shift to assessing how well our recipe works when training jointly on all data we have available" + "our recipe achieves comparable performance to the embodiment specific results"
→ 把所有机器人数据混合训练一个通用模型,KI 同样有效。

③ Generalist → 再 SFT 到特定 benchmark
论文原话:"This model has been finetuned on LIBERO from the generalist stop-gradient + VLM data co-trained model since the generalist model did not have LIBERO data in its original training mixture."
→ 先用 KI 训 generalist → 再在 LIBERO 上 SFT(此时 KI 已经在 generalist 阶段做过了)。

结论:KI 不限于某种数据规模——单机器人专有训练多机器人大规模训练时都适用。但论文的核心贡献更偏 generalist(因为异构数据混合时退化风险更大、KI 的价值更明显)。
KI-VLA 架构:
  图像+语言 ──→ VLM backbone(PaliGemma) ──┬──→ FAST token 预测头
                    │                     │    L_CE (离散 next-token 监督)
                    │                     │    ← 梯度回传 VLM (保语言能力)
                    │                     │
                    └──→ Action Expert(连续 FM)
                         L_MSE (flow matching)
                         ✂️ 梯度停止! 不回传 VLM backbone

关键: 动作专家能"读" VLM 的激活(attention),但它的梯度
      不允许流回 VLM——避免连续动作训练冲垮 VLM 的离散语义表征
常见误解:KI = 完全不训 VLM?不对!

KI 不是"冻结 VLM"。论文实验明确说(原话):"Freezing the backbone is not a viable option for knowledge insulation, since the representations in the pre-trained model are not sufficient for robotics, leading to low performance"(实验中完全冻结的方案性能为 0%)。

KI 的真正做法是:VLM backbone 仍然在训练,但训练信号来自离散动作 token 的 cross-entropy loss(和 VLM 原生的 next-token prediction 同类型)——这让 VLM 适配了机器人域(学会理解动作语义),而不是用 action expert 的连续 flow matching 梯度来改 VLM(那种梯度性质不兼容,会冲垮离散语义表征)。

三种方案对比
完全冻结:VLM 一个参数不动 → 不适配机器人域,性能极差 ✗
Joint-training(π0 原版):action expert 的 FM 梯度直接回传 VLM → 适配了但语言能力退化 ✗
KI:VLM 用离散 token loss 训练(适配) + FM 梯度被阻断(保护) → 又适配又不退化 ✓
那 LoRA 微调和 KI 什么关系?

LoRA 和 KI 是不同层面的技术,解决的问题有重叠但不完全相同:
LoRA:在 VLM 参数旁边加低秩适配器,"小幅修改 VLM 让它适配机器人域"——减少修改量来保护知识。梯度仍然从 action head 回传,只是回传到 LoRA 而不是原始参数。
KI切断特定方向的梯度流(action expert → VLM 方向阻断),同时用另一路兼容的梯度(离散 token CE)继续训 VLM。

两者可以同时使用(如 VLM 用 LoRA + KI 阻断 action expert 梯度),也可以各自独立使用。选哪个取决于具体场景:
• 数据少 + 想省显存 → LoRA(参数量小,不用存完整 VLM 梯度)
• 有足够数据 + 想要最好的语言保持 → KI(允许 VLM 全参训练但隔离有害梯度)
• OpenVLA 用 LoRA 做下游适配,KI-VLA 用梯度隔离做大规模训练——场景不同
KI 和 π0.5 的关系

KI-VLA 不是对 π0.5 做微调。关系是:
• π0.5 用两阶段方案:先用 FAST 离散 token 训练 → 再加 action expert joint-training(梯度回传 VLM)
• KI-VLA 论文原话:"Our work formalizes the approach of π0.5 and extends it to develop a single-stage training recipe"
• 即:KI 把 π0.5 的两阶段简化为单阶段(离散+连续同时训),并且加了梯度隔离(π0.5 没有隔离)
• 结果:KI 训练比 π0-FAST 快 7.5×达到类似性能,且语言跟随能力更好

跨本体协同训练(cross-embodiment)

在多种机器人数据上联合训一个模型。关键难点是动作表示对齐——不同机器人关节数/坐标系/频率不同。Qwen-RobotManip 发现:joint 空间几乎不能跨本体迁移(<5%),改用相机系末端执行器(camera-frame EEF)表示后跨本体平均达 23.9%。
另一坑:异构数据不能直接相加,需先做状态/动作/视频/语言一致性清洗(RoboMIND UR 数据 81% 未通过 state-action 对齐检查)。

动作表示:三个正交的选择

读完你能回答:动作怎么编码进模型?为什么表示选择对跨本体这么重要?

维度选项取舍
控制空间关节空间 / 末端执行器(EEF) / 相机系 EEFjoint 精确但不跨本体;EEF 更通用;相机系 EEF 最利于跨本体
绝对 vs 相对绝对位姿 / 相对增量(Δ)Diffusion Policy 发现位置(绝对)控制多模态更显著、累积误差小,通常更优
旋转表示欧拉角 / 四元数 / 6D 旋转 / axis-angle6D 旋转(Zhou 2019)连续无奇异,位置控制常用;速度控制用 axis-angle

动作离散化方法(给自回归/离散头用)

方法原理特点
Naive binning每维动作直接分箱成离散 token简单,但 token 多(100-700/chunk)、高频动作压缩差
FASTDCT 频域变换 + 量化 + BPE 压缩压缩率 1.75×~13.2×,~30 tokens/chunk,高频任务尤其好
RVQ残差向量量化码本表示,多级残差
MINT intent/exec token分离行为意图与执行细节频谱解耦,长程组合更好

FAST tokenization 流程(重点)

连续动作 chunk [T, |A|]  (T 步 × 动作维度)
  │
  ① DCT 离散余弦变换(每维独立) → 频域系数 [T, |A|]
  │   低频=大幅缓慢动作, 高频=细微快速动作
  │
  ② 量化: round(γ · C), γ=10(默认 rounding scale)
  │   丢弃接近0的高频系数(动作本身低频为主)→ 天然压缩
  │
  ③ BPE 压缩(词表 1024) → ~30 tokens/arm
  │
  ▼
离散 token 序列 → 拼进 LLM 词表, 自回归生成
为什么用 DCT:机器人动作序列以低频为主(平滑运动),DCT 把能量集中到少数低频系数,量化后大量高频系数变 0,再 BPE 压缩,就能把原本几百个 token 压到 ~30 个——大幅缩短自回归生成长度=推理更快。这也是 π0-FAST 的核心。

action chunking 为什么抗延迟

VLA 一次预测一串动作(如 16 步)而非 1 步,好处:① 时间一致性(避免连续动作来自不同模态导致抖动);② 抗延迟(预测的未来动作可以在模型还在算下一块时先执行);③ 抗空闲动作过拟合。执行时通常只执行前 Ta 步就重规划(receding horizon)。延迟的深层处理见 RTC(下一 tab)。

推理加速:为什么需要

读完你能回答:VLA 推理慢在哪?怎么加速到能实时控制(10Hz+)?

机器人要 10-50Hz 实时控制,但大 VLA 推理慢:π0-FAST 自回归 30-60 步 ~750ms/chunk(4090);扩散/FM 只需 ~100ms/chunk。自回归的多步解码是主要瓶颈

五种加速手段

手段做法提速
少步采样DDPM 100 步 → DDIM 10-16 步;FM 用 Euler ODE 4-10 步~10×
Flow Matching 替代扩散直线路径,天然少步(4步)比 DDPM 少一个量级
动作 tokenization 压缩FAST 把 token 数从数百压到 ~30自回归步数骤降
Consistency/蒸馏蒸馏成 1-2 步生成极致提速
KV cache 复用固定 prompt 的 KV 缓存复用(prefix caching);π0 推理时 prefix 只算一次去掉重复计算

不同范式的推理成本对比

范式          采样方式        典型步数    延迟(参考)
FAST(自回归)  逐token解码     30-60步     ~750ms/chunk
DDPM          反向链          100步       慢(训练用)
DDIM          确定性跳步      10-16步     实时可行
Flow Matching Euler ODE       4-10步      ~100ms/chunk ★最快
Consistency   直接映射        1-2步       极快(有损)
规律:连续动作头(扩散/FM)推理通常比自回归(FAST)快——因为自回归要逐 token 解码几十步,而 FM 一次并行出整个 chunk 只需 4-10 步去噪。这也是 π0/GR00T 主推 Flow Matching 的实用原因。

实时控制的核心矛盾

读完你能回答:为什么"能算出动作"不等于"能实时控制"?RTC 怎么解决块间抖动?

矛盾:动作分块给了时间一致性,但推理有延迟(算下一块要时间)。当前块执行完、下一块还没算好 → 块边界出现暂停或抖动(尤其精密任务如点火柴、插入)。简单方案(执行完再算)会卡顿;提前算又面临"新块和已执行动作不连续"。

RTC(Real-Time Chunking):把执行建模成 inpainting

RTC(π-RTC, NeurIPS 2025)是纯推理时算法,无需重训,适用于任何扩散/流的 VLA:

核心思想: 一边执行当前块, 一边生成下一块
  ① 已确定会执行的动作前缀 → "冻结"(freeze)
  ② 其余未来动作 → "修补"(inpaint)生成, 约束为与冻结部分兼容

Guided Inpainting(每步去噪时施加 soft mask W):
  W[0:d]     = 1.0        完全冻结(严格匹配已执行动作 A_0)
  W[d:H-s]   = 指数衰减    平滑过渡区(逐渐从冻结过渡到自由生成)
  W[H-s:H]   = 0          完全自由生成(远期动作)

就像图像修补: 固定已知区域(已执行动作), 生成缺失区域(未来动作)
→ 新块与旧块平滑衔接, 消除边界抖动
为什么优雅:RTC 利用了扩散/FM"迭代去噪"的天然特性——去噪过程中把已执行动作当作"已知像素"钉住,就能生成兼容的后续。无需改训练、无需额外模型,直接套在现有 VLA 上就能显著提升精密任务在延迟下的吞吐量和成功率。

其它实时技巧

  • Receding horizon:预测 Tp 步只执行 Ta 步(如预测16执行8)后重规划,平衡一致性与响应
  • Temporal ensemble / action ensemble(ACT 系):对重叠时间步的多次预测加权平均,平滑动作
  • 异步推理:推理和执行并行,用 RTC 保证衔接
  • 控制频率 vs 规划频率分离:规划 10Hz,底层插值到 125Hz/1kHz 执行(Diffusion Policy 真机做法)

Server-Client 部署架构

读完你能回答:模型怎么接到真机/仿真?为什么要解耦?

┌──────────────┐   WebSocket    ┌─────────────────┐
│ 环境/机器人    │ ◄───(msgpack)──► │ Policy Server   │
│ (仿真/真机)    │                │ (加载 VLA 模型)  │
│ + Client wrapper│               │                 │
└──────────────┘                └─────────────────┘

流程:
① 环境采集 obs(多相机图像 + proprioception) → Client 打包(msgpack)
② WebSocket 发给 Server
③ Server: predict_action(obs) → 归一化动作 [B,T,action_dim]
④ Server: unnormalize_actions() 还原到真实量纲
⑤ 发回 Client → 环境执行前 Ta 步 → 回到 ①

为什么解耦 server-client

不同 benchmark/真机各带不同依赖栈(LIBERO 要 robosuite、RoboTwin 要它的仿真器…)。如果模型代码直接 import 环境代码,依赖会打架。Server-client 把模型推理环境控制彻底解耦:Server 只管"obs→action",Client 是各环境的小 wrapper。同一个模型接口无需改动即可评测多个 benchmark 或部署真机。

部署工程要点(易踩坑)

  • 归一化统计量:训练时保存 dataset_statistics.json(动作的 q01/q99/mean/std),推理时 unnormalize 必须用同一份统计量,否则动作幅度全错
  • 观测同步:多相机时间戳对齐、proprioception 与图像对齐——不同步会让模型看到矛盾输入
  • 图像预处理一致:训练/推理的分辨率、crop、归一化必须完全一致(train/test 分布偏移)
  • 动作空间/坐标系一致:训练用 EEF 就别推理时发 joint;坐标系、单位(米/毫米)对齐
  • 延迟补偿:真机有通信/计算延迟,用 RTC 或 receding horizon 处理

评估指标

指标含义
成功率(Success Rate)完成任务的 episode 比例,最常用
任务进度(Task Progress)部分完成度(0-100%),比二元成功率更细
5-in-a-row(CALVIN)连续完成任务链的平均长度(满分5),测长程
归一化吞吐量相对专家的 successes/hour,测速度+成功率综合
OOD 成功率分布外(换相机/物体/指令)的成功率,测真泛化(见 数据集 tab)

训练/评测资源配置全景 🟢跨论文核对

这是一张横向速查表:本站已核对的各类工作,训练需要什么卡、几张、推理如何。数字均来自对应论文/仓库(点各专页看出处)。这能帮你在选方法前先算清"我的卡够不够"。

工作类型训练 GPU推理可靠性
Diffusion Policy单体扩散策略单卡即可(仓库支持 ray 多卡)0.1s @ RTX 3080🟢
DynaGuide引导冻结策略单张 RTX 3090(24GB),24–48h;dynamics ~15M/4GB单卡🟢
VLStraining-free 引导不训练(base policy 冻结 + VLM API)单卡跑 base policy + API🟢
StarVLAVLA 平台LIBERO/SimplerEnv 8× A100;RoboTwin 48× A100单卡(OFT 单步最快)🟢
ImageWAM图像编辑 WAM8× H20;LIBERO 18h / RoboTwin 5天263ms @ A6000🟢
VERA视频世界模型Wan-1.4B 单 H100;Wan-14B 8× H200视频去噪(重)🟢
π0.7通用 VLA + WM主模型未公开;世界模型 14B主策略单 H100(38ms);子目标 4× H100🟢推理/🟠训练
Qwen-RobotManip大规模 VLA未公开(38,100h 数据,推测大集群);SFT 更省单卡(4B)🟠

按"你手上的卡"选方法(实用决策 🩷整理)

你的资源能做什么
单张 24GB(3090/4090)Diffusion Policy、DynaGuide 全流程;VLS(跑 base policy);VLA 类只能小 batch+梯度累积/LoRA 冒烟单套件
单张 48–80GB(A6000/A100/H100)VLA 单 benchmark 微调(4B VLM + 部分冻结/LoRA);ImageWAM/VERA 的最小变体
8× A100/H20/H100完整训练主流 VLA(LIBERO/SimplerEnv/RoboCasa)、ImageWAM 全变体
8× H200 / 多节点(数十卡)大视频世界模型(Wan-14B)、RoboTwin 多任务(48 卡)、基础模型预训练
三条经验规律:① 训练显存主要由 backbone 规模(策略网 ~百M / VLM 3–4B / 视频 DiT 14B)+ batch + 是否冻结决定;② 推理速度主要由采样步数决定(单步回归 < 少步 Flow Matching < 多步 DDPM < 视频解码);③ 省算力路线(引导冻结策略 / 图像编辑 cache / training-free)把成本从训练转到推理或 API,是算力受限时的现实选择。右列决策为按论文配置与常规经验的推断(🩷)。
说明:本表汇总自各专页已核对的数据。标 🟠 的(π0.7 训练、Qwen-RobotManip)论文未公开确切 GPU 数,只给量级推断,切勿当确定值引用。

自测:10 题检验掌握