从"看懂架构"到"能训能跑":损失/微调策略/协同训练/动作表示/推理加速/实时控制/部署
读完你能回答:什么是预训练/后训练?为什么"预训练"这个词在 VLA 里有两层含义(VLM 的 vs VLA 的)?各阶段用什么数据?以及最关键的——"在仿真 benchmark 上测试"是不是在 benchmark 数据上做后训练?(答案:是,下面详解)
你问的核心问题:预训练是开放更多参数吗? 答案比"开放更多"更微妙——不同阶段的参数策略差异很大,且不同论文做法不同。
| 阶段 | 训练哪些参数 | 冻结哪些 | 学习率策略 |
|---|---|---|---|
| ① 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 |
| 策略 | VLM backbone | Action 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: 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。loss_scale.vlm: 0.1 → 同时喂 VLM 数据(VQA)防止语言理解退化,但权重只有动作损失的 1/10。| 预训练(§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 不协同;但可选"混合后训练"(加预训练子集防退化) |
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 → 输出动作" |
常见误解:"推理 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 |
图像 + 指令 ──→ [VLM backbone] ──→ hidden states h (向量,不是文字!)
│
↓ (直接送入,不经过"变成文字"这一步)
[Action Head (DiT/OFT/FM)]
│
↓
连续动作 a_t:t+H
VLM 不输出任何文字——它的最后几层的隐藏状态(高维向量,如 2048 维)直接被 action head 读取。整个过程中没有"文字"这个中间产物。这是 π0、StarVLA 全系列、ImageWAM、OpenVLA 等大多数 VLA 的做法。
图像 + 指令 ──→ [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 对齐。
图像 + 指令 + 状态 ──→ [统一 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它生成动作
把本地 200+ 篇论文按"推理时 VLM 输出什么 → 中间经过什么 → 最终怎么变成动作"分类。核心问题:VLM 的输出到 action 之间,有没有文字/视觉/几何等显式中间产物?
推理时 VLM 输出 hidden states,直接送入 action head 解码为连续动作。中间没有文字、没有图像、没有轨迹——最短路径。这是当前最主流的做法。
图像+指令 → [VLM] → hidden states → [Action Head] → 连续动作
(向量,不是文字)
| 论文 | VLM | Action Head 类型 | 可靠性 |
|---|---|---|---|
| π0 | PaliGemma 3B | Flow Matching action expert | 🟢 |
| StarVLA-OFT | Qwen-VL | MLP 回归(单步) | 🟢 |
| StarVLA-π | Qwen-VL | Flow Matching DiT | 🟢 |
| StarVLA-GR00T | Qwen-VL | Diffusion DiT(dual-system) | 🟢 |
| StarVLA-FAST | Qwen-VL | Autoregressive FAST token | 🟢 |
| OpenVLA | Llama2 7B + DINOv2 + SigLIP | Autoregressive 离散token | 🟢 |
| Qwen-RobotManip | Qwen3.5-4B | Flow Matching DiT action expert | 🟢 |
| Diffusion Policy | (无 VLM,CNN/Transformer encoder) | DDPM U-Net / DiT | 🟢 |
| ACT | (无 VLM,ResNet encoder) | Transformer decoder (L1回归) | 🟢 |
| RDT-1B | SigLIP + T5 | Diffusion Transformer 1B | 🟢 |
| Motus | latent action model | Latent → action decoder | 🔍 |
| SwiftVLA | SmolVLM 0.5B | Conditional diffusion (训练时有4D几何辅助,推理时丢弃) | 🟢 |
| LRM | VLM | Flow Matching | 🔍 |
| UWM | VLM | Diffusion | 🔍 |
| + DynaGuide(冻结DP+外部引导)、VLS(冻结π0.5+梯度引导)、VERA(video→IDM)、ContextVLA、ConRFT、FACTR、ARRO 等约 100+ 篇属此类 | |||
推理时 VLM 先生成一段文字(subtask/plan/CoT),然后 action head 以这段文字为额外条件预测动作。文字是推理路径上的必经产物。
图像+指令 → [VLM] → 文字 token (subtask/plan) → [拼回序列作为条件]
↓
图像+指令+文字+状态 → [Action Head] → 连续动作
| 论文 | 文字输出是什么 | Action Head | 文字角色 | 可靠性 |
|---|---|---|---|---|
| π0.5 | subtask标签("pick up the plate") | Flow Matching action expert | 串流必经(先生成subtask→再conditioned on it生成动作) | 🟢 |
| π0.7 | subtask指令(由高层策略生成) | Flow Matching action expert | 串流必经(高层策略→低层策略) | 🟢 |
| DWYS/SEAL | textual plan("First pick up soup...") | Flow Matching(π0 backbone) | 串流必经(plan→验证alignment→执行) | 🟢 |
| G0.5 | CoT(bbox + subtask + 2D trace) | Flow Matching | 可开关(CoT mode at inference) | 🟢 |
| DIAL | latent visual subtask(System 2→System 1) | Flow Matching DiT | 串流(高层视觉推理→低层动作) | 🔍 |
| pi-HiRobot | hierarchical subtask | Flow Matching | 串流(层级策略) | 🔍 |
| SayCan | language plan(LLM生成) | 低层 RL 策略 | 串流(LLM规划→RL执行) | 🟢 |
| SeeingToDoing | SrCoT(Spatial Relationship CoT) | — | 串流(CoT→visual trace→action) | 🔍 |
| + ForeAct、EgoPi、ForceVLA2(含subtask)等约 10-15 篇属此类 | ||||
推理时先"想象"未来会发生什么(预测未来帧/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 / 动作解码方式 | 可靠性 |
|---|---|---|---|
| ImageWAM | KV cache(编辑分支的逐层K/V,不解码成图) | Flow Matching action expert (joint attention读KV) | 🟢 |
| MaskWAM | KV cache + mask prediction | Flow Matching action expert | 🟢 |
| Fast-WAM | KV cache(训练时有视频co-train,推理时只取cache) | Flow Matching action expert | 🟢 |
| VERA | 预测的未来视频帧 | Jacobian IDM(光流→动作) | 🟢 |
| DiT4DiT | Video DiT hidden features(不解码视频) | Action DiT(conditioned on video hidden states) | 🟢 |
| CosmosPolicy | 预测的未来 latent 帧(Cosmos backbone) | latent→action decoder | 🟢 |
| DreamVLA | world embedding(VLM想象的未来,不解码成图) | Action head conditioned on world embedding | 🟢 |
| FutureVLA | predicted future latent | Action head | 🔍 |
| SuSIE | subgoal 图像(编辑生成的目标帧) | 低层 goal-conditioned policy | 🟢 |
| GHIL-Glue | subgoal 图像 | 低层 policy | 🔍 |
| UniPi | 未来视频 | inverse dynamics model | 🟢 |
| GigaWorld-Policy | world model 预测 | policy conditioned on prediction | 🔍 |
| + Cosmos3、RISE-WM、World-VLA-Loop、DreamDojo、DreamTac、EgoWM、tau0-WM、LAPA(video plan) 等约 30-40 篇属此类 | |||
推理时先预测一个几何结构(SE(3)轨迹/2D轨迹/关键点/光流),然后 action decoder 把几何信息转成可执行动作。
图像+指令 → [VLM + Depth] → 3D表征 → [Trajectory Predictor] → SE(3)轨迹
↓
[Action Decoder] → 可执行动作(joint/EEF)
| 论文 | 几何中间产物 | Action Decoder | 可靠性 |
|---|---|---|---|
| OASIS | camera-frame SE(3) EEF轨迹(third-person系) | ACT-style L1 decoder | 🟢 |
| SwiftVLA | 4D 几何 Transformer features(训练有,推理丢) | Conditional diffusion | 🟢 |
| Goal-VLA | 目标物体 (R,t) 位姿 | action conditioned on pose | 🔍 |
| NJF | Neural Jacobian Field(image-space→action映射) | Jacobian反解 | 🔍 |
| VERA | dense Jacobian field + 光流 | J·Δimage = Δaction | 🟢 |
| TLA | sequential 2D/3D waypoints | 从waypoint解码动作 | 🔍 |
| + SeeingToDoing(visual trace)、TraceVLA、ContactWorld(latent rollout) 等约 5-10 篇属此类 | |||
训练时有额外的预测分支(离散token/深度/future frame等)提供梯度帮助学习,但推理时完全不执行那个分支——只走最短的 hidden states → action head 路径。
| 论文 | 训练时的额外预测(推理时丢弃) | 推理时实际路径 | 可靠性 |
|---|---|---|---|
| KI-VLA | 离散FAST action token(CE loss帮VLM学表征) | hidden states → action expert(FM) | 🟢 |
| SwiftVLA | 4D几何辅助分支 | VLM → conditional diffusion | 🟢 |
| RISE-WM | future frame prediction | VLM → action head(推理时不predict future) | 🔍 |
| Fast-WAM | video co-training(训练时有视频token) | 推理时只取KV cache,不解码视频 | 🟢 |
| 分类 | 数据流 | 篇数(估) | 占比 |
|---|---|---|---|
| A. 直接型 | hidden states → action head | ~110 | 55% |
| C. 视觉想象/WAM | 先预测未来视觉 → 再动作 | ~40 | 20% |
| B. 文字串流型 | 先输出文字 → 再动作 | ~15 | 7% |
| D. 几何中间表示 | 先预测轨迹/关键点 → 再动作 | ~10 | 5% |
| E. 训练辅助(推理丢弃) | 训练时有额外分支,推理时只走直接路径 | ~5 | 2% |
| 其余(触觉/RL/综述等) | — | ~20 | 10% |
答案:是推理串流路径中的必经环节,不只是辅助 loss。
| 辅助 loss | 串流路径 | |
|---|---|---|
| 定义 | 训练时计算梯度帮助学习,推理时不执行那个分支 | 训练时有 loss 监督,推理时也必须执行,输出作为下游的输入 |
| 举例 | StarVLA 的 VLM co-train loss(推理时不跑 VQA 分支) | π0.5 的 subtask prediction(推理时必须先生成 subtask 文字,action expert 以它为条件) |
| 推理时去掉会怎样 | 性能不变(本来就不跑) | 性能崩溃(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 分钟的长程厨房清洁任务,因为每一步都先确认"接下来该做什么"。
| 模型 | 文字输出是什么 | 辅助 loss 还是串流路径? | 论文原话/证据 |
|---|---|---|---|
| π0.5 | subtask 标签 ("pick up the plate") | 串流路径(推理必经) | "first infers subtask, then predicts actions based on this subtask" |
| π0.7 | subtask 指令 ℓ̂t (由高层策略生成) | 串流路径(高层策略先输出 subtask → 低层策略以此为条件执行) | "language commands are produced by a high-level semantic policy...conditioning the model on the semantic subtask"(可 dropout 5%但默认开) |
| DWYS/SEAL | textual 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.5 | CoT 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/A | VLM hidden states 直接送 action expert,无文字环节 |
| StarVLA 全系列 | 无(不输出文字) | N/A | VLM features 直接给 action head(OFT/GR00T/FM) |
| ImageWAM | 无(不输出文字) | N/A | VLM 冻结,编辑分支 KV cache 送 action expert |
| 工作 | 后训练用的数据 | 训练量 | 来源 |
|---|---|---|---|
| StarVLA (LIBERO) | LIBERO 四套件演示,每套件 500 条 | 100K 步(~30K 即好) | 🟢 论文 |
| ImageWAM (LIBERO) | 四套件合并演示 | 10 epoch | 🟢 论文 |
| ImageWAM (RoboTwin) | RoboTwin 演示(2500 干净+25000 随机) | 5 epoch | 🟢 论文 |
| StarVLA (RoboTwin 2.0) | 全任务演示(多任务单策略) | — | 🟢 论文 |
LIBERO-Plus / LIBERO-PRO 这类 OOD 套件,训练协议和标准 benchmark 不同:
所以:标准 benchmark 高分 = 会做这个任务(IID);OOD benchmark 高分 = 换相机/换物体/换指令还能做(真泛化)。看一个 VLA 强不强,要看后者。详见 starVLA 数据集页(含 LIBERO-Plus vs PRO 对比)。
下面系统整理目前 VLA 领域所有主流 benchmark 的"标准(IID)"和"OOD"变体,逐一解释含义、训练协议、以及哪些论文用了它。
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-Plus | In-depth Robustness Analysis of VLA, 10,030 任务 | 7 维独立扰动: ① 相机视角(位置/朝向/FOV变) ② 机器人初态(初始关节姿态变) ③ 语言指令(LLM 改写同义指令) ④ 光照(强度/方向/颜色/阴影变) ⑤ 背景纹理(场景/桌面材质变) ⑥ 传感器噪声(光度畸变/图像退化) ⑦ 物体布局(位置重排) 另有5 级强度梯度,可测"扰动多大开始崩" | 用原始 LIBERO 演示 SFT,不把增强/扰动数据混入训练;在扰动集上 rollout | ImageWAM, Qwen-RobotManip, OpenVLA-OFT |
| LIBERO-PRO | arXiv:2510.03827 | 5 类扰动: ① Position(swap):对调两物体位置,指令一字不改→测"死记坐标 vs 真找目标" ② Object:换物体外观/颜色/大小 ③ Semantic(语言):同义改写指令 ④ Task:同时换指令+目标+关注物体→最狠,几乎所有模型崩到 0–1% ⑤ Environment:换整个工作场景 | 同上:原始数据训,扰动集测 | VLS |
RoboTwin 2.0(上海 AI Lab)= 50 个双臂操作任务。数据分两种采集环境:
| 变体 | 含义 | 训练协议 | 使用论文 |
|---|---|---|---|
| Clean | 场景固定、干净:固定光照、固定桌面纹理、无干扰物、标准背景 | 在 Clean + Randomized 合并数据上训练(如 2,500 Clean + 25,000 Randomized);分别在 Clean 环境和 Randomized 环境下各评 50 任务 × 100 episodes | StarVLA, 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) |
SimplerEnv(UCSD/Google)= 在仿真里复现真机策略表现的评测平台,有 WidowX 和 Google Robot 两种机器人。关键是两种评测协议:
| 协议 | 全称 | 含义 | 是否 OOD |
|---|---|---|---|
| VM (Visual Matching) | Visual Matching | 仿真渲染刻意贴近真机图像:叠加真实背景纹理、对齐真机视角/光照——让 sim 尽量像 real | IID(最接近训练时看到的视觉) |
| VA (Variant Aggregation) | Variant Aggregation | 系统改变背景/光照/桌面/相机位置等多种变体,每种变体评一次后取平均——测视觉鲁棒性 | 近 OOD(视觉外观变了,但任务/物体不变) |
使用论文:StarVLA, CogACT, SpatialVLA, π0, GR00T N1.5, Magma 等。VM 分数通常高于 VA。
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(UT Austin + NVIDIA)= 24 个人形机器人桌面任务,比 LIBERO 难得多(涉及开关柜门/微波炉 + 物体放置组合)。目前只有标准(IID)评测协议——在全部 24 任务上训练一个模型,每任务 50 rollouts 统计成功率。暂无官方 OOD 变体。
使用论文:StarVLA, GR00T N1.6, π0.5。
以下表格来自对本地 203 个论文目录、233 篇 PDF(含软链接)的批量全文检索。共 77 篇做了 OOD/鲁棒性评测。
| 论文 | 仿真 Benchmark | OOD 协议 |
|---|---|---|
| LIBERO 系列(含 Plus/PRO) | ||
| ImageWAM | LIBERO, LIBERO-Plus, RoboTwin 2.0 | 原始LIBERO训→Plus七维扰动测 |
| Qwen-RobotManip | LIBERO, LIBERO-Plus, RoboTwin(Mu原版), C2R, RoboCasa, ALOHA | Plus七维 + C2R + IF/XE |
| StarVLA | LIBERO, LIBERO-Plus, RoboTwin 2.0, CALVIN, SimplerEnv(VA), RoboCasa, BEHAVIOR | Plus + VA + 多benchmark覆盖 |
| VLS | LIBERO, LIBERO-PRO, CALVIN | 原始训→PRO的Position+Task 2种扰动测(PRO共5种,VLS只选了2种) + ABC→D |
| FutureVLA | LIBERO, LIBERO-Plus, SimplerEnv, SimplerEnv-VA | Plus + VA |
| MINT | LIBERO, LIBERO-Plus, CALVIN, MetaWorld | Plus + 跨benchmark |
| Qwen-VLA | LIBERO, RoboTwin, SimplerEnv, RoboCasa, ALOHA | 多benchmark覆盖 |
| Xiaomi-Robotics-0 | LIBERO, CALVIN, SimplerEnv, SimplerEnv-VA | VA + 多环境 |
| G0.5 | LIBERO, RoboTwin 2.0, SimplerEnv, BEHAVIOR | 跨benchmark zero-shot |
| Cosmos3 | LIBERO, RoboCasa, BEHAVIOR, Push-T | 世界模型OOD |
| OASIS | LIBERO, CALVIN | 跨环境泛化 |
| MaskWAM | LIBERO, RoboTwin 2.0 | 鲁棒性 |
| ForeAct | LIBERO | OOD预测引导 |
| ICLR-ICL | LIBERO | in-context zero-shot |
| Cosmos(2025) | LIBERO, RoboCasa, ALOHA | 世界模型泛化 |
| DreamVLA | LIBERO, CALVIN | 想象辅助OOD |
| SwiftVLA | LIBERO, RoboTwin 2.0 | 高效VLA鲁棒性 |
| mimic-video | LIBERO | 视频模仿泛化 |
| UniSkill | LIBERO, ALOHA | 统一技能迁移 |
| DiT4DiT | LIBERO, RoboCasa, ALOHA | 跨任务泛化 |
| CosmosPolicy | LIBERO, RoboCasa, ALOHA | 世界模型辅助OOD |
| World-VLA-Loop | LIBERO, RoboTwin 2.0, ManiSkill | 世界模型闭环引导 |
| DWYS/SEAL | LIBERO | 推理-动作对齐验证 |
| InSight | LIBERO | OOD泛化 |
| LA4VLA | LIBERO, MetaWorld | zero-shot跨本体 |
| LAP | LIBERO | zero-shot跨本体 |
| Motus | LIBERO, RoboTwin 2.0 | 鲁棒性 |
| UWM | LIBERO | zero-shot/鲁棒性 |
| KI-VLA | LIBERO | 知识隔离防退化 |
| π0-FAST | LIBERO, CALVIN, ALOHA | 跨benchmark零样本 |
| CALVIN 系列(ABC→D) | ||
| DynaGuide | CALVIN, ALOHA | ABC→D零样本环境迁移 |
| DeFI | CALVIN, SimplerEnv, SimplerEnv-VA, Language Table | 引导+VA |
| DISCO | CALVIN, Franka Kitchen, Push-T | 引导冻结策略OOD |
| SuSIE | CALVIN, BEHAVIOR | 子目标生成辅助OOD |
| GHIL-Glue | CALVIN | zero-shot环境迁移 |
| RoboTwin 系列 | ||
| ManiTwin | RoboTwin 2.0 | 孪生仿真OOD |
| SynthICL | RoboTwin, RLBench | 合成数据zero-shot |
| DECO | RoboTwin(原版+2.0) | 解耦OOD |
| GigaWorld-Policy | RoboTwin 2.0 | 世界模型策略 |
| LingBot-VLA | RoboTwin 2.0 | 语言引导VLA |
| RoboCasa / SimplerEnv / RLBench / 其他 | ||
| GR00T N1 | RoboCasa | 跨本体zero-shot |
| OmniGuide | RoboCasa | 引导OOD |
| DIAL | RoboCasa | 对话引导 |
| MimicDroid | RoboCasa | 模仿泛化 |
| UniT-Humanoid | RoboCasa | 人形统一 |
| HSAT-AT | RoboCasa, ManiSkill | 层级OOD |
| SeeingToDoing | SimplerEnv | sim-to-real zero-shot |
| LAPA | SimplerEnv | 跨本体 |
| ActiveVLA | RLBench | 主动探索OOD |
| Goal-VLA | RLBench | 目标条件OOD |
| SAM2Act | RLBench | 分割引导OOD |
| SymmetryAwareFusion | RLBench | 对称性鲁棒 |
| VIMA | BEHAVIOR, CALVIN, MetaWorld, RLBench | 多模态指令泛化 |
| OpenVLA | LIBERO, ALOHA | 跨本体LoRA迁移 |
| Diffusion Policy | Franka Kitchen, Push-T | 多模态/鲁棒性 |
| VERA | Push-T | zero-shot跨本体 |
| DDP-WM | Push-T | 世界模型鲁棒性 |
| DCDP | Push-T | 扩散条件策略 |
| LVP | Language Table | 语言-视觉规划 |
| DreamDojo | Language Table | 梦境训练OOD |
| ALOHA 为主(双臂) | ||
| π0 | ALOHA | 跨本体基础模型 |
| ACT | ALOHA | 双臂模仿泛化 |
| RDT-1B | ALOHA | 跨本体扩散基础模型 |
| HumanEgo | ALOHA | 人类视频zero-shot |
| ARRO | ALOHA, ManiSkill | OOD鲁棒性 |
| UniT | ALOHA | 跨任务统一 |
| SAIL | ALOHA | 测试时scaling |
| FACTR | ALOHA | 触觉OOD |
| RDP | ALOHA | 扩散策略 |
| VT-Refine | ALOHA | 视触觉精调 |
| pi-HiRobot | ALOHA | 层级VLA |
| EDIL | ALOHA | 高效分布式 |
| TouchGuide | ALOHA | 触觉引导 |
| 综述类(多benchmark提及) | ||
| VLA-Survey | LIBERO, CALVIN, SimplerEnv, RLBench, MetaWorld, BEHAVIOR, ALOHA, Franka Kitchen, Language Table | 综述对比 |
| EmbodiedSurvey | RoboTwin, RLBench, ManiSkill, ALOHA | 综述 |
| ILContactRichSurvey | ALOHA, CALVIN, RLBench | 综述 |
| WM-ManipSurvey | ManiSkill, Language Table | 综述 |
以下论文不做 OOD 仿真评测——只做标准(IID)仿真、只做真机、或为综述/预训练数据类。
| 论文 | Benchmark |
|---|---|
| HATO | ALOHA |
| TA-VLA | ALOHA |
| AHEAD | CALVIN, RLBench |
| Fast-WAM | LIBERO, RoboTwin 2.0 |
| GigaBrain | ALOHA |
| RISE-WM | LIBERO, RoboTwin(原版+2.0), CALVIN, RoboCasa, BEHAVIOR |
| UniVTAC | ManiSkill, RoboTwin |
| WorldArena | RoboTwin 2.0 |
| SAIL | ALOHA |
以下工作只在物理机器人上评测,不使用 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 | 被引用篇数 | 代表性 OOD 变体 |
|---|---|---|
| LIBERO 系列 | 35+ | LIBERO-Plus(7维) / LIBERO-PRO(5维) |
| Benchmark | arXiv | 发布 |
|---|---|---|
| LIBERO 原版 | — | 2023年 |
| RoboTwin 原版(Mu) | 2410.24164 | 2024年10月 |
| RoboTwin 2.0(Chen) | 2504.13059 | 2025年4月 |
| LIBERO-Plus | 2510.13626 | 2025年10月 |
| LIBERO-PRO | 2510.03827 | 2025年10月 |
| ALOHA | 20+ | 跨任务/跨本体(双臂标配) |
| RoboTwin 2.0 | 19 | Clean+Rand标准评测(IID) / C2R(OOD) / IF / XE |
| CALVIN | 12 | ABC→D(零样本环境迁移) |
| RoboCasa | 12 | (暂无官方OOD变体,但任务本身难) |
| RLBench | 9 | 多任务零样本 |
| SimplerEnv | 8 | VA(Variant Aggregation) |
| ManiSkill | 6 | 多任务泛化 |
| Push-T | 6 | 多模态/鲁棒性(扩散策略消融常用) |
| BEHAVIOR | 5 | 长程家务(较难) |
| Language Table | 4 | 语言条件桌面操作 |
| MetaWorld | 4 | 跨任务(较旧benchmark) |
| Franka Kitchen | 3 | 多任务组合(较旧) |
每个 benchmark 被哪些论文使用、具体怎么用(训练协议)。标🟢的协议已从论文原文精确核对;标🔍的为自动检测(regex)结果,需查原文确认。
核心答案:因为标准 LIBERO 评测时,四个 suite 的演示数据是合并在一起训的——模型对每个 suite 都有监督信号,全都"见过"。所以测出来的只是"学了之后在新随机初始化下能不能做"(IID 泛化),不是"遇到没见过的变化还能不能做"(OOD)。
四个 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" |
从 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。 |
这些名字描述的是每个 suite 考察的理解能力维度,不是 OOD 扰动类型:
它们是"这个 benchmark 想测 VLA 哪几种理解能力"的分类,不是 OOD 扰动。训练时四个 suite 的演示全都见过了。
| 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 严重依赖固定视角,学的是"图像里固定像素区域=目标"而非真正的空间理解
理论上可以,但目前没有论文这么做——因为四个 suite 的任务定义本身就不同(不同指令、不同目标物体、不同成功条件),这样测的是"跨任务泛化"而非"同任务下的鲁棒性",混淆了变量。LIBERO-Plus/PRO 的设计精髓是:任务保持不变,只变环境条件——这样才能干净地隔离出"模型到底是记住了场景 pattern 还是真理解了任务"。
| 维度 | 数量 |
|---|---|
| 总任务数 | 130 个(结构见下) |
| 常用的 4 suite | Spatial(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 |
Spatial suite(9 个任务,测空间理解)——全部任务:
(还有 4 个类似任务:on the stove / on the wooden cabinet / next to the ramekin / in the top drawer。全部是"拿黑碗放盘子",只靠空间位置描述区分。)
Object suite(10 个任务,测物体识别)——全部任务:
(还有 bbq sauce / ketchup / orange juice / salad dressing / tomato sauce。全部是"拿XX放篮子",只靠物体名区分。)
Goal suite(10 个任务,测动作语义)——5 个举例:
Long/LIBERO-10 suite(10 个任务,测多步骤)——5 个举例:
| 维度 | 数量 |
|---|---|
| 总任务数 | 50 个双臂协作任务 |
| 每任务数据 | 50 Clean 演示 + 500 Randomized 演示 = 550 条/任务 |
| 总轨迹 | 50 × 550 = 27,500 条 |
| 评测量 | 50 任务 × 2 设置(Clean/Rand) × 100 episodes = 10,000 trials |
5 个真实任务举例(从 ImageWAM per-task 表提取):
其余举例:Click Bell(按铃)、Grab Roller(抓滚筒)、Lift Pot(举锅)、Pick Dual Bottles(捡两瓶)、Place Object Scale(放物体到秤上)。完整 50 任务见 ImageWAM 论文 Table 12。
| 维度 | 数量 |
|---|---|
| 任务数 | 34 个长程语言条件操作任务 |
| 环境数 | 4 个(A/B/C/D,不同桌面布局/颜色) |
| 评测协议 | 1,000 个 5 步任务链(连续执行 5 个指令) |
| 指标 | 平均成功完成的连续步数(满分 5) |
5 个真实任务举例:
CALVIN 特点:每次评测是连续 5 个随机指令组合(如"开灯→开抽屉→放积木→关灯→关抽屉"),测的是长程连续执行能力。ABC→D 的 OOD 是:D 环境的颜色/布局和 A/B/C 不同。
| 维度 | 数量 |
|---|---|
| 任务数 | 24 个人形机器人桌面任务 |
| 每任务数据 | ~1,000 条演示 |
| 总轨迹 | ~24,000 条 |
| 评测 | 每任务 50 rollouts |
5 个真实任务举例:
RoboCasa 特点:多阶段任务(抓+放+关门),涉及铰接物体(柜门/抽屉/微波炉门),比 LIBERO 难得多。GR1 是人形机器人本体。
| 维度 | 数量 |
|---|---|
| 机器人 | WidowX(桌面小臂)+ Google Robot(移动机器人) |
| WidowX 任务 | 4 个 |
| Google Robot 任务 | 4 个 |
| 评测协议 | Visual Matching(VM) / Variant Aggregation(VA) |
WidowX 全部 4 个任务:
Google Robot 全部 4 个任务:
SimplerEnv 特点:本身不提供训练数据——用 BridgeData V2 / RT 系列真机数据训练,在这个仿真平台上评测(测 sim-to-real 一致性)。
上面只详细解释了 LIBERO 标准。下面补全其余所有数据集——同一个数据集内,不同 episode 之间到底哪些因素在变。
训练数据和标准 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% |
和 Plus 类似也是测试时加扰动,但侧重语义/任务层面(Plus 侧重感知/物理层面):
| 扰动 | 具体变什么 | 举例(以 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 | 换整个工作场景 | 从标准桌面场景变成另一个完全不同的场景(不同桌子/背景/物体摆放逻辑) |
(:goal (And (On akita_black_bowl_1 plate_1))) —— 成功标准是"碗在盘子上",不管碗原来在哪、怎么找到的SwapPerturbator),没有改 goal conditionRoboTwin 的每条 episode 变化取决于是 Clean 还是 Randomized 设置:
| 因素 | Clean 设置 | Randomized 设置 |
|---|---|---|
| 物体位置 | 固定初始位置(每次一样) | 随机化(位置在更大范围内变化) |
| 场景杂物(clutter) | 无干扰物体 | 随机加入干扰物体(桌上多出没见过的杂物) |
| 背景 | 固定干净背景 | 随机更换背景(墙壁/地板纹理变化) |
| 桌面高度 | 固定 | 随机微调桌面高度 |
| 光照 | 固定标准光照 | 随机变化光照(方向/强度/颜色) |
| 任务/指令 | 不变(同一个任务) | |
| 机器人本体 | 不变(固定双臂) | |
CALVIN 的每条 episode 变化:
| 因素 | 同一环境内不同 episode | 不同环境(A vs B vs C vs D)之间 |
|---|---|---|
| 物体初始状态 | 抽屉开/关、灯亮/灭、积木位置——随机初始化 | 同样随机 |
| 任务指令 | 从 34 个任务中随机采样 5 个串联成一条链 | 同样的 34 个任务池 |
| 桌面颜色/布局 | 固定(同一环境内不变) | 不同:A/B/C/D 各有不同颜色的桌面、不同的物体摆放区域 |
| 物体外观 | 固定 | 不同:如粉色积木在 A 中的位置/颜色和 D 不同 |
| 相机/光照 | 固定 | 可能有微小差异 |
| 因素 | episode 间变不变 | 说明 |
|---|---|---|
| 物体初始位置/朝向 | 变 | 物体在操作台上随机摆放 |
| 铰接物体状态 | 变 | 柜门/抽屉/微波炉门的初始开合角度随机 |
| 物体种类(Novel 任务) | 变 | PnPNovel 系列任务:每次放入的物体可能不同(从物体池中随机选择),但训练时见过这些物体 |
| 场景/厨房布局 | 不变 | 固定的 GR1 人形机器人 + 固定厨房台面 |
| 相机/光照 | 不变 | 固定 |
| 因素 | Visual Matching (VM) | Variant Aggregation (VA) |
|---|---|---|
| 背景/桌面 | 刻意用真机背景纹理渲染(让仿真贴近真实) | 系统替换多种背景:不同墙壁/桌面/地板纹理 |
| 光照 | 模拟真机的固定光照 | 多种光照条件取平均 |
| 相机 | 和真机一致的固定视角 | 多种相机位置取平均 |
| 物体位置 | 和真机一致的固定摆放 | 微调位置 |
| 是否 OOD | IID(和训练时真机数据最像) | 近 OOD(视觉外观系统变化,但不极端) |
| 论文 | 具体怎么用 |
|---|---|
| 明确做了 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-10 | 10 | = 常说的 Long suite(多步骤组合任务,跨厨房/客厅/书房场景) |
| LIBERO-90 | 90 | = 更大的任务池(单步+多步,覆盖 10+ 个不同场景,任务更多样) |
| LIBERO-100 | 100 | = 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-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-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%,在组合泛化上随训练数据增大进一步提升| 论文 | 具体怎么用 |
|---|---|
| ACT | 🟢 ALOHA硬件首发论文,在其上采集+训练+评测(6个双臂任务) |
| π0 | 跨本体预训练含ALOHA数据 → ALOHA任务后训练/prompt评测 |
| OpenVLA | ALOHA作为评测平台之一(跨本体LoRA迁移) |
| RDT-1B | 跨本体预训练 → ALOHA双臂任务评测 |
| π0-FAST | ALOHA双臂任务SFT+评测 |
| pi-HiRobot | ALOHA双臂SFT+评测 |
| DynaGuide | ALOHA用于真机引导实验 |
| DiT4DiT | ALOHA双臂SFT+评测 |
| CosmosPolicy | ALOHA SFT+评测 |
| Qwen-RobotManip | ALOHA真机评测(OOD:87.5% vs π0.5 37.5%) |
| Qwen-VLA | ALOHA评测 |
| HumanEgo | 人类视频zero-shot→ALOHA双臂迁移 |
| ARRO | ALOHA OOD鲁棒性评测 |
| UniSkill | ALOHA双臂统一技能 |
| UniT | ALOHA双臂跨任务统一 |
| SAIL | ALOHA测试时scaling |
| FACTR | ALOHA+触觉 |
| RDP | ALOHA扩散策略评测 |
| VT-Refine | ALOHA视触觉精调 |
| EDIL | ALOHA高效分布式IL |
| GigaBrain | ALOHA评测 |
| TouchGuide | ALOHA触觉引导 |
| TA-VLA | ALOHA触觉VLA |
| Cosmos | ALOHA评测 |
| HATO | ALOHA触觉遥操作硬件 |
| EmbodiedSurvey, ILContactRichSurvey, VLA-Survey | 综述:ALOHA作为标准双臂平台引用 |
| 论文 | 具体怎么用 |
|---|---|
| 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.5 | RoboTwin SFT → OOD泛化 |
| MaskWAM | RoboTwin SFT → 评测 |
| SwiftVLA | RoboTwin SFT → 评测 |
| Fast-WAM | RoboTwin SFT → 评测(仅IID) |
| World-VLA-Loop | RoboTwin SFT → 评测 |
| Qwen-VLA | RoboTwin SFT → 评测 |
| LingBot-VLA | RoboTwin SFT → 评测 |
| GigaWorld-Policy | RoboTwin SFT → 评测 |
| DECO | RoboTwin SFT → 评测 |
| SynthICL | 合成数据zero-shot → RoboTwin评测 |
| ManiTwin | RoboTwin孪生仿真OOD |
| RISE-WM, WorldArena, UniVTAC | RoboTwin SFT/评测 |
| EmbodiedSurvey | 综述引用 |
| 论文 | 具体怎么用 |
|---|---|
| DynaGuide | 🟢 CALVIN D-split训dynamics model → ABC→D零样本引导评测 |
| VLS | 🟢 冻结base policy → ABC→D推理时VLM引导 |
| DeFI | CALVIN SFT → ABC→D评测 |
| DISCO | CALVIN冻结DP → ABC→D引导评测 |
| GHIL-Glue | CALVIN ABC→D zero-shot |
| SuSIE | CALVIN子目标生成 → 评测 |
| DreamVLA | CALVIN SFT → 评测 |
| π0-FAST | CALVIN SFT → 评测 |
| MINT | CALVIN SFT → 评测 |
| OASIS | CALVIN SFT → 评测 |
| StarVLA | CALVIN评测(框架支持) |
| Xiaomi-Robotics-0 | CALVIN SFT → 评测 |
| AHEAD, RISE-WM | CALVIN SFT → 评测 |
| VIMA, ILContactRichSurvey, VLA-Survey | 综述引用 |
| Benchmark | 论文(全部) | 典型用法 |
|---|---|---|
| RoboCasa | StarVLA, Cosmos, Cosmos3, CosmosPolicy, DiT4DiT, GR00T-N1, LRM, MimicDroid, UniT-Humanoid, DIAL, HSAT-AT, OmniGuide, Qwen-RobotManip, Qwen-VLA, RISE-WM | SFT→24任务评测(IID为主,任务本身难) |
| SimplerEnv | StarVLA(VM+VA), FutureVLA(VA), DeFI(VA), Xiaomi-Robotics-0(VA), G0.5, Qwen-VLA, SeeingToDoing, LAPA, VLA-Survey | VM=标准(贴近真机); VA=近OOD(多变体平均) |
| RLBench | ActiveVLA, Goal-VLA, SAM2Act, SymmetryAwareFusion, SynthICL, AHEAD, VIMA, EmbodiedSurvey, ILContactRichSurvey, VLA-Survey | 多任务SFT→评测/zero-shot |
| 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 | 多任务组合(较旧) |
无论预训练还是后训练,只要在动作数据上训 VLA,VLM 的语言视觉能力就会退化(VLA→VA 退化)。解法是协同训练(co-training):动作数据里掺入 VLM 数据(VQA/grounding)一起训。这是"训练方式"里和阶段划分正交的一条主线,详见 协同训练 & KI tab。
把主流 VLA 的"三阶段"逐模型拆解。关键信息:哪些做了 VLA 预训练(P.T.)、用了哪些数据。
| 模型 | VLM 骨干(继承) | VLA 预训练? | 预训练数据 | Benchmark 后训练 |
|---|---|---|---|---|
| π0 | PaliGemma 3B | ✓ | 10,000h 跨本体(7 种机器人、68 任务、22 台机器人) | 高质量数据 post-training(等价于 SFT) |
| π0.5 | π0 骨干(含 PaliGemma) | ✓ | π0 预训练数据 + ~400h 家庭移动操作 + co-train(VLM + subtask) | mobile manipulation SFT |
| Qwen-RobotManip | Qwen3.5-4B | ✓ | ~38,100h 开源异构数据(OXE/DROID/RH20T/RoboMIND/H2R合成) + 28M VL样本 co-train | 目标本体/任务 SFT(比预训练"更少GPU更少步") |
| OpenVLA | Llama 2 7B + DINOv2 + SigLIP | ✓ | OXE 970K episode(跨本体混合) | 下游 LoRA 微调(新机器人/新任务) |
| GR00T N1.5 | Eagle-2 VLM | ✓ | 大规模 cross-embodiment(NVIDIA 内部 + 开源) | benchmark SFT |
| StarVLA(框架) | Qwen-VL 系列 / Cosmos | ✗(框架本身不做) | — | 直接在 benchmark 演示上 SFT(LIBERO 30K步即好) |
| ImageWAM | OmniGen2 / Ovis-U1 / FLUX.2 | ✗ | —(只继承图像编辑模型预训练) | 直接在 benchmark 演示上 SFT(LIBERO 10epoch) |
| DynaGuide | —(冻结 DP) | ✗ | — | 只训 dynamics model(15M, ~48h 单卡) |
| VLS | —(冻结 base policy) | ✗ | — | 不训练(training-free, VLM API 引导) |
跳过阶段②、不做大规模跨本体预训练的工作,其训练 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 新数据集) |
以 StarVLA-OFT (Qwen3-VL) 在 LIBERO 上的 96.6% 为例,完整拆解"我要复现这个数字,具体跑什么"。所有路径/命令来自仓库 examples/LIBERO/。
# 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
# 从 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
# 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
# 关键配置在 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 评测
# 启动 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
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 式并行去噪 |
总损失 = λ_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)。
读完你能回答:VLA 该微调哪些层?为什么 VLM 用低学习率?
| 策略 | 训什么 | 优点 | 缺点/场景 |
|---|---|---|---|
| 全参微调 | VLM + action head 全部 | 性能上限最高 | 显存大、易过拟合小数据、可能损坏 VLM 知识 |
| LoRA | VLM 加低秩适配器 + 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 "变笨"?怎么防?
| 手段 | 做法 | 代表 |
|---|---|---|
| 多目标协同训练 | 交替喂 VLA 数据(学动作)和 VLM 数据(VQA/grounding,保语言视觉),按 λ 配比 | π0.5, Qwen-RobotManip(28M VL 样本) |
| 知识隔离(KI) | 梯度停止,阻断动作专家到 VLM 的梯度回流 | KI-VLA, π0.5, π0.7 |
| 冻结 VLM | 完全不动 VLM,只训 head(最极端) | 部分轻量方案 |
| 术语 | 全称 | 含义 |
|---|---|---|
| LR | Learning Rate (学习率) | 每步更新参数的步长大小。LR 高 = 学得快但容易"学坏";LR 低 = 学得慢但稳。 |
| VQA | Visual Question Answering | "看图回答问题"数据,如图片+问题"图中有几个苹果?"→答案"3个" |
| Co-train | 协同训练 | 在同一个训练循环里交替喂两种数据(动作数据 + VQA 数据),各自算各自的 loss,加权求和后一起更新参数 |
| Loss | 损失函数 | 衡量"模型预测离正确答案有多远"的数字。训练 = 不断让 loss 变小。 |
| Cross-Entropy (CE) | 交叉熵 | 用于离散预测(下一个 token 是什么?)的 loss。VLM 预测文字时用这个。 |
| MSE / Flow Matching | 均方误差 / 流匹配 | 用于连续预测(动作向量该多大?)的 loss。动作头预测连续动作时用这个。 |
| 情况 | VLA 里的 VLM vs 原生 VLM | 能力保留程度 | 代表 |
|---|---|---|---|
| 冻结 VLM | 完全一样(权重一字不动) | 100% 保留语言视觉能力 | ImageWAM |
| 低 LR 微调 / LoRA | 稍有不同(权重微调过,适配了动作域) | 大部分保留,少量适配 | StarVLA(分组LR) / OpenVLA(LoRA) |
| 全参 SFT(无保护) | 明显不同(语言能力可能严重退化) | 动作强但语言弱 | 纯动作 SFT(不推荐) |
| 全参 SFT + co-train | 有变化但受保护 | 动作强 + 语言基本保留 | π0 / Qwen-RobotManip |
这是最核心的机制。用一张图说清:
┌─────────────────────────────────────────────────────────────────────┐ │ 同一个模型(共享参数) │ │ │ │ ┌─────────── 动作数据路径 ───────────┐ ┌─── 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 │ │ │ │ → 一起反传梯度 → 更新所有共享参数 │ │ │ └────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘
总Loss = λ_action × L_action + λ_vlm × L_vlmKI-VLA 架构:
图像+语言 ──→ VLM backbone(PaliGemma) ──┬──→ FAST token 预测头
│ │ L_CE (离散 next-token 监督)
│ │ ← 梯度回传 VLM (保语言能力)
│ │
└──→ Action Expert(连续 FM)
L_MSE (flow matching)
✂️ 梯度停止! 不回传 VLM backbone
关键: 动作专家能"读" VLM 的激活(attention),但它的梯度
不允许流回 VLM——避免连续动作训练冲垮 VLM 的离散语义表征
在多种机器人数据上联合训一个模型。关键难点是动作表示对齐——不同机器人关节数/坐标系/频率不同。Qwen-RobotManip 发现:joint 空间几乎不能跨本体迁移(<5%),改用相机系末端执行器(camera-frame EEF)表示后跨本体平均达 23.9%。
另一坑:异构数据不能直接相加,需先做状态/动作/视频/语言一致性清洗(RoboMIND UR 数据 81% 未通过 state-action 对齐检查)。
读完你能回答:动作怎么编码进模型?为什么表示选择对跨本体这么重要?
| 维度 | 选项 | 取舍 |
|---|---|---|
| 控制空间 | 关节空间 / 末端执行器(EEF) / 相机系 EEF | joint 精确但不跨本体;EEF 更通用;相机系 EEF 最利于跨本体 |
| 绝对 vs 相对 | 绝对位姿 / 相对增量(Δ) | Diffusion Policy 发现位置(绝对)控制多模态更显著、累积误差小,通常更优 |
| 旋转表示 | 欧拉角 / 四元数 / 6D 旋转 / axis-angle | 6D 旋转(Zhou 2019)连续无奇异,位置控制常用;速度控制用 axis-angle |
| 方法 | 原理 | 特点 |
|---|---|---|
| Naive binning | 每维动作直接分箱成离散 token | 简单,但 token 多(100-700/chunk)、高频动作压缩差 |
| FAST | DCT 频域变换 + 量化 + BPE 压缩 | 压缩率 1.75×~13.2×,~30 tokens/chunk,高频任务尤其好 |
| RVQ | 残差向量量化 | 码本表示,多级残差 |
| MINT intent/exec token | 分离行为意图与执行细节 | 频谱解耦,长程组合更好 |
连续动作 chunk [T, |A|] (T 步 × 动作维度)
│
① DCT 离散余弦变换(每维独立) → 频域系数 [T, |A|]
│ 低频=大幅缓慢动作, 高频=细微快速动作
│
② 量化: round(γ · C), γ=10(默认 rounding scale)
│ 丢弃接近0的高频系数(动作本身低频为主)→ 天然压缩
│
③ BPE 压缩(词表 1024) → ~30 tokens/arm
│
▼
离散 token 序列 → 拼进 LLM 词表, 自回归生成
VLA 一次预测一串动作(如 16 步)而非 1 步,好处:① 时间一致性(避免连续动作来自不同模态导致抖动);② 抗延迟(预测的未来动作可以在模型还在算下一块时先执行);③ 抗空闲动作过拟合。执行时通常只执行前 Ta 步就重规划(receding horizon)。延迟的深层处理见 RTC(下一 tab)。
读完你能回答:VLA 推理慢在哪?怎么加速到能实时控制(10Hz+)?
| 手段 | 做法 | 提速 |
|---|---|---|
| 少步采样 | 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步 极快(有损)
读完你能回答:为什么"能算出动作"不等于"能实时控制"?RTC 怎么解决块间抖动?
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 完全自由生成(远期动作)
就像图像修补: 固定已知区域(已执行动作), 生成缺失区域(未来动作)
→ 新块与旧块平滑衔接, 消除边界抖动
读完你能回答:模型怎么接到真机/仿真?为什么要解耦?
┌──────────────┐ 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 步 → 回到 ①
| 指标 | 含义 |
|---|---|
| 成功率(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 | 单卡 | 🟢 |
| VLS | training-free 引导 | 不训练(base policy 冻结 + VLM API) | 单卡跑 base policy + API | 🟢 |
| StarVLA | VLA 平台 | LIBERO/SimplerEnv 8× A100;RoboTwin 48× A100 | 单卡(OFT 单步最快) | 🟢 |
| ImageWAM | 图像编辑 WAM | 8× 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 卡)、基础模型预训练 |