[EAI-036] 知识隔离VLA模型:阻断梯度干扰实现快速训练、高效推理与强泛化能力

Paper Card

论文标题 :Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better
作者/机构 :Physical Intelligence (Danny Driess, et al.)
发布时间 :2025年5月
项目主页https://pi.website/research/knowledge_insulation
keywords:VLA, Flow Matching, Knowledge Insulation, Co-training, PaliGemma

1. 摘要

本文提出了一种新的 VLA 模型训练范式,称为 "Knowledge Insulation" (知识隔离) 。核心思想是在微调 VLM 主干进行机器人控制时,阻断从连续动作头(Action Expert)回传到 VLM 主干的梯度,同时引入离散动作预测作为辅助任务来训练主干表征。目的是不要让未经训练的连续的动作头的梯度破坏 VLM 预训练的知识。作者通过 Stop-Gradient 配合 离散动作辅助任务,既保留了 VLM 的语义理解能力,又实现了 Flow Matching 的高精度控制,且训练速度比纯 Flow Matching 方法快得多。

2. 背景与痛点

背景:VLA 模型试图将 VLM 中的预训练知识转移到机器人控制中。目前的趋势是结合 VLM 的语义能力与扩散模型/Flow Matching 的连续动作生成能力。

现有痛点

  • 推理速度慢:自回归生成离散动作 token(如 RT-2, OpenVLA)在推理时非常慢(<2Hz),难以满足高频控制需求。
  • 知识遗忘与干扰:将随机初始化的连续动作头(如 Diffusion Head)"嫁接"到 VLM 上进行微调时,来自该头部的梯度流会破坏 VLM 原有的语义表征,导致语言指令遵从能力大幅下降。
  • 训练收敛慢:基于 Flow Matching 或 Diffusion 的 VLA 训练效率较低,需要更多的 step 才能收敛。

本文动机:设计一种架构和训练策略,既能像自回归模型那样训练快、泛化好,又能像 Flow Matching 模型那样推理快、动作平滑,同时解决"灾难性遗忘"问题。

3. 核心方法

3.1 模型架构

作者基于 PaliGemma 构建模型,采用了 Mixture-of-Experts (MoE) 风格的解耦设计:

  • VLM Backbone (3B):负责处理图像、语言指令和机器人状态(State),输出高层表征。
  • Action Expert (300M):一个较小的 Transformer 模块,专门通过 Flow Matching 生成连续动作块(Action Chunks)。
  • 关键机制:知识隔离 (Knowledge Insulation) :如 Figure 1 所示,模型在 Action Expert 和 VLM Backbone 之间实施了 Stop Gradient 操作 。
  • Attention Masking:Action Expert 可以 attend 到 Backbone 的特征,但 Backbone 不能 attend 到 Action Expert 的 token,实现了单向信息流 。

3.2 训练策略

为了在切断梯度的情况下仍能有效训练 Backbone 适应机器人任务,作者提出了 Joint-Training 策略,同时优化两个损失函数:

Backbone 表征学习 (离散动作损失)

  • 使用 FAST Tokenizer 将连续动作离散化为 tokens。
  • Backbone 通过标准的 Next-token Prediction (Cross-Entropy Loss) 预测这些离散动作 tokens。
  • 为 Backbone 提供监督信号,使其学习机器人相关的视觉-动作表征,而不依赖于 Action Expert 的梯度 。

Action Expert 动作生成 (连续动作损失)

  • Action Expert 基于 Backbone 的(detached)embedding,通过 Flow Matching 损失进行训练 。
  • 损失函数定义如 Eq (4),其中, Action Expert 的梯度不会传回 Backbone。

3.3 数据构建

为了进一步确保存储在 Backbone 中的通用知识不丢失,采用大规模的 Co-training 策略:

机器人数据:包含 OXE 数据集和 Physical Intelligence 内部采集的高质量数据(单臂、双臂、移动底盘等)。

VLM 通用数据

  • Image Captioning (CapsFusion, COCO)
  • Visual Question Answering (Cambrian-1, VQAv2)
  • Object Localization (Bounding box prediction)
  • 在训练 VLA 时,混合这些非动作数据与机器人数据一起训练。实验证明这对保持模型的通用泛化能力(特别是对新物体的处理)至关重要 。

4. 实验与评测

4.1 评测环境

真机实验:包括 "Items in drawer"(物体放入抽屉)、"Table bussing"(餐桌清理)、"Shirt folding"(叠衬衫)等长程任务。使用了不同形态的机器人(单臂 Franka/UR5、双臂移动操作机器人)。

仿真实验 :LIBERO benchmark (Spatial, Object, Goal, Long) 。

基线对比:对比了 (Flow-only), -FAST (Discrete-only), HybridVLA, OpenVLA-OFT 等 。

4.2 主要结果

任务成功率与语言遵循

  • 在 "Items in drawer" 任务中(需要理解语言指令并进行精细操作),显著优于所有基线(Figure 4a)。
  • 在 "Table bussing" 任务中,实现了最高的成功率,且推理速度远快于 -FAST(Figure 5)。
  • Figure 4b 显示,阻断梯度(Insulation)对于保持高水平的 Language Following Rate 至关重要(80%+ vs HybridVLA/ 的 ~50%)。

训练与推理速度

  • 训练速度Figure 6b 展示了收敛速度与离散模型(FAST)一样快,远快于纯 Flow Matching 的 ( 需要 7.5 倍的步数才能达到相似性能)。
  • 推理速度 :由于 Action Expert 较小且采用 Flow Matching,推理延迟远低于自回归模型(Figure 2)。

泛化性

  • 在 LIBERO-90 和 LIBERO-Spatial 上达到了新的 SOTA(Table 1)。
  • 在移动机器人未见物体(OOD)测试中,Co-training VLM 数据显著提升了成功率(Figure 7)。

4.3 消融实验 (Ablation Studies)

Insulation 的作用 :如果不阻断梯度(即 Joint-training),语言遵循能力和任务成功率都会下降(Figure 4b, Figure 8)。

VLM 数据的作用:去掉 VLM Co-training 数据会导致在未见场景和长程任务中的表现下降,尤其是在 Joint-training 设定下(Figure 6a)。

离散 Tokenizer 的选择:使用 FAST tokenizer 比简单的 naive binning 效果更好,证明了高质量的离散表征对 Backbone 的学习很重要(Figure 5 "naive tokens")。

5. 结论与思考

5.1 关键结论

本文最有价值的发现是揭示了 "Gradient Interference" (梯度干扰) 是阻碍 VLA 发展的核心因素之一。通过解耦 "Representation Learning" (由离散信号驱动的主干训练) 和 "Action Generation" (由连续信号驱动的头部训练),可以在不牺牲 VLM 通用智能的前提下,获得高性能的机器人控制策略。

5.2 局限性

计算成本增加:由于需要同时预测离散 token 和连续流,训练时的计算成本增加了约 20% 。

语言遵循仍非完美:尽管有显著提升,但仍未达到 100%,作者推测这是训练数据中的相关性(correlations)导致的过拟合 。

State 表示:虽然探索了 Text state vs Continuous state,但并未得出那种表示绝对占优的定论,尽管 Text state 更符合 VLM 直觉(Figure 10)。

5.3 未来方向

Scaling Law:这种 Insulation 架构在更大参数量(如 70B+ 模型)上的表现值得探索,大模型可能对梯度干扰更敏感。

Tokenizer 改进:既然离散信号主要用于表征学习,是否可以设计专门针对机器人 State-Action 压缩的 Tokenizer,而不仅仅是像 FAST 那样做 DCT 压缩?

架构融合:目前的 Action Expert 还是一个独立的 Transformer,未来是否可以利用 LoRA 或 Adapter 的形式实现更轻量级的 Insulation?



PyTorch 实现伪代码

根据论文第 5.2 节(Knowledge Insulation & Gradient Flow)的描述,特别是公式 (5) 和 (6) ,Knowledge Insulation 的核心是在 Action Expert(动作专家网络)对 VLM Backbone(主干网络)进行 Attention 操作时,切断反向传播的路径。

在 PyTorch 中,这主要通过 .detach() 方法来实现。

核心原理

论文中的公式 (5) 将 Attention Logits 分解为:

Logits = ( Q b K b T − ∞ Q a sg ( K b T ) Q a K a T ) \text{Logits} = \begin{pmatrix} Q_b K_b^T & -\infty \\ Q_a \text{sg}(K_b^T) & Q_a K_a^T \end{pmatrix} Logits=(QbKbTQasg(KbT)−∞QaKaT)

其中 sg (stop gradient) 操作符对应 PyTorch 中的 .detach()。这意味着当 Action Expert 的 Query ( Q a Q_a Qa) 去"查询" Backbone 的 Key ( K b K_b Kb) 时,我们将 K b K_b Kb 视为常数,不计算其梯度。

伪代码

这通常有两种实现范式:一种是作为两个独立的 Transformer 模块(Backbone 和 Expert),另一种是作为一个拼接序列的单一模型。鉴于论文中提到 Backbone 和 Expert 参数量不同(3B vs 300M),分离模块 + 交叉注意力(或带 Mask 的拼接注意力) 是最合理的工程实现。

以下代码展示了最清晰的 "Detached KV Cache" 范式,这也是绝大多数类似架构(如 Flamingo, Blip-2)采用的方法:

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

class KnowledgeInsulatedVLA(nn.Module):
    def __init__(self, vlm_backbone, action_expert):
        super().__init__()
        self.vlm_backbone = vlm_backbone  # e.g., PaliGemma (3B)
        self.action_expert = action_expert # e.g., Smaller Transformer (300M)
        
        # 论文提到两者通过 attention 交互,需要维度投影到一致
        [cite_start]# [cite: 119] "dimensions of those projections are the same"
        self.expert_proj = nn.Linear(vlm_backbone.hidden_size, action_expert.hidden_size)

    def forward(self, images, text_input, noisy_actions, action_timesteps):
        # =========================================================
        # 1. VLM Backbone Forward (Standard)
        # =========================================================
        # Backbone 处理图像和文本,计算离散动作的表征
        # 输出: backbone_features (Batch, Seq_Len_B, Dim_B)
        backbone_outputs = self.vlm_backbone(images, text_input)
        backbone_features = backbone_outputs.last_hidden_state
        
        # [cite_start]计算离散动作预测 Loss (用于表征学习) [cite: 122]
        # 这部分的梯度是允许传回 Backbone 的
        loss_discrete = self.compute_discrete_loss(backbone_outputs.logits, text_input)

        # =========================================================
        # 2. Knowledge Insulation (The Core Trick)
        # =========================================================
        # 关键步骤:在传递给 Action Expert 之前,切断梯度流
        # [cite_start]对应论文 Eq (5) 中的 sg(...) 操作 [cite: 200]
        
        context_features = backbone_features.detach() 
        
        # 注意:这里必须使用 .detach()。
        # 这样一来,Action Expert 的 Loss 对 context_features 的导数为 0,
        # 梯度就不会继续回传到 self.vlm_backbone 的权重中。

        # 维度对齐投影 (如果需要)
        context_features = self.expert_proj(context_features)

        # =========================================================
        # 3. Action Expert Forward (Flow Matching)
        # =========================================================
        # Action Expert 接收 Noisy Actions 作为输入 Query,
        # 并将 detached 的 backbone features 作为 Key/Value 进行 Cross-Attention
        # 或者拼接在序列前方进行 Masked Self-Attention
        
        # [cite_start]论文 Appendix B [cite: 678] 提到: 
        # "Embeddings from the action expert attend to the prefix (backbone)..."
        
        flow_prediction = self.action_expert(
            query_states=noisy_actions,   # Q_a
            timesteps=action_timesteps,
            encoder_hidden_states=context_features # K_b, V_b (Detached!)
        )

        # [cite_start]计算 Flow Matching Loss [cite: 126]
        # 这个 Loss 的梯度只会更新 action_expert,会在 context_features 处停止
        loss_flow = F.mse_loss(flow_prediction, target_flow)

        # =========================================================
        # 4. Total Loss
        # =========================================================
        # [cite_start]联合训练 [cite: 177]
        total_loss = loss_discrete + alpha * loss_flow
        
        return total_loss

    def compute_discrete_loss(self, logits, targets):
        # 标准的 Cross Entropy Loss 实现
        pass
相关推荐
几道之旅21 小时前
Isaac Sim机器人基本操作及关键词汇英中文对照
机器人·具身智能
datamonday1 天前
[EAI-037] π0.6* 基于RECAP方法与优势调节的自进化VLA机器人模型
人工智能·深度学习·机器人·具身智能·vla
BFT白芙堂1 天前
基于 GPU 并行加速的 pRRTC 算法:赋能 Franka 机械臂的高效、稳定运动规划
人工智能·深度学习·算法·机器学习·gpu·具身智能·frankaresearch3
GitCode官方2 天前
具身智能时代,从“白虎”开始:白虎数据集构建通用机器人数据底座
机器人·具身智能·atomgit
具身智能之心3 天前
让机器人“舞得更好”的全身运控的方案还有哪些进化空间?
rl·vla·3dgs·realsim2real
深蓝学院3 天前
完全端到端闭环导航!仅需相机,LoGoPlanner实现感知定位规划一体化
机器人·导航·端到端·具身智能
传说故事3 天前
【论文自动阅读】GR-Dexter Technical Report
深度学习·具身智能
滴啦嘟啦哒3 天前
【机械臂】【视觉】一、加入摄像机并实现世界坐标与像素坐标的互相转换
python·深度学习·vla
RockHopper20254 天前
闭环与世界模型:具身智能系统中的多对多关系
具身智能·世界模型·具身机械主义·具身认知