系列:VLA 解码手记

VLA 解码手记(七):V-JEPA 2——视频自监督世界模型与零样本机器人规划

0. 一句话定位

从 100 万小时无标注视频里学一个「潜在空间世界模型」,再用 62 小时机器人数据做动作条件微调,实现 零样本机器人操控(65–80% 成功率)。

V-JEPA 2(Assran et al., Meta FAIR, 2025-06, arXiv:2506.09985,1.2B 参数)走的是 LeCun 的 JEPA 哲学:智能体应该先在脑内预演「做这件事世界会怎么变」,再去行动——而不是像 RT-2 / OpenVLA / π0 那样靠「互联网图文 + 大量遥操数据」硬训。

1. 核心思想:潜在空间预测,不是像素重建

给定视频帧序列 (x_1, x_2, ..., x_T):

# 1) 编码:把每一帧映射到潜在向量空间
  z_t = Encoder(x_t)                 # Vision Transformer (ViT-L/H/G)

# 2) 预测:用过去潜在向量 + 动作条件 预测未来潜在向量
  z_{t+1} = Predictor(z_{t-k...t}, a_t)   # a_t 可选,无动作时为视频自监督

# 3) 损失:只对「未来帧的潜在表示」做 L2 / Smooth-L1,
#    不重建像素;目标也由 EMA teacher encoder 产生。
  L = || z_{t+1} - stop_grad(Encoder_target(x_{t+1})) ||^2

符号:x_t = t 时刻视频帧;z_t = 潜在向量;Encoder = ViT;a_t = 可选动作;下标 _target = EMA 教师编码器。

2. 架构图:Encoder + Predictor + 规划回环

V-JEPA 2 架构:潜在空间预测 + latent MPC 规划 视频帧 x₁ … x_T Encoder (ViT)

z_t 潜在向量

帧 x_{t+1} EMA Teacher Encoder ẑ (stop_grad) 动作 a_t (可选) Predictor (Transformer) 输入:过去潜在 z + 动作 a_t ẑ_{t+1} L = ‖ ẑ_{t+1} − sg(z) ‖² 规划头:latent MPC 想象 K 步 选最接近「目标图像 embedding」的动作链 动作序列 → 下发机器人

图:V-JEPA 2 的训练闭环(Encoder + Predictor + EMA 教师 + L2 潜在损失)与推理闭环(latent MPC 规划头)。预测目标是潜在空间里的未来帧,而不是像素。

3. 两阶段训练

4. 关键模块

5. PyTorch 风格伪代码

import torch
import torch.nn as nn

class VJEPA2(nn.Module):
    def __init__(self, encoder, predictor):
        super().__init__()
        self.encoder = encoder               # ViT-L/H/G
        self.target_encoder = encoder        # EMA 教师,stop_grad
        self.predictor = predictor           # Transformer
        for p in self.target_encoder.parameters():
            p.requires_grad = False

    def forward(self, frames, actions=None):
        # frames: (B, T, 3, H, W) 视频片段
        B, T = frames.shape[:2]
        feats = self.encoder(frames.flatten(0, 1))        # (B*T, D)
        feats = feats.unflatten(0, (B, T))                # (B, T, D)
        with torch.no_grad():
            targets = self.target_encoder(frames[:, 1:].flatten(0, 1))
            targets = targets.unflatten(0, (B, T - 1))
        preds = self.predictor(feats[:, :-1], actions)   # (B, T-1, D)
        return preds, targets  # L2 / Smooth-L1 在 D 维做

# 规划:Model-Predictive Control in latent space
@torch.no_grad()
def plan(model, obs, goal_embed, action_candidates, horizon=8):
    z = model.encoder(obs)                    # (D,)
    best, best_score = None, -1
    for traj in action_candidates:            # each (T_pred, A_dim)
        z_pred = z
        for a in traj:
            z_pred = model.predictor(z_pred.unsqueeze(0), a.unsqueeze(0)).squeeze(0)
        score = torch.cosine_similarity(z_pred, goal_embed, dim=-1)
        if score > best_score:
            best, best_score = traj, score
    return best  # 下发给机器人的动作序列

6. 训练 / 优化要点

7. 复杂度与消融

8. 总结与影响

V-JEPA 2 把「世界模型」从论文概念推进到可直接挂到真机的工程方案,三层意义:

  1. 路线意义——证明不依赖像素重建、不依赖大规模遥操也能让机器人「看懂」环境;
  2. 数据意义——100 万小时视频成本远低于 62 小时遥操数据的边际成本;
  3. 生态意义——V-JEPA 2 全套权重开源(CC-BY),叠加 NVIDIA Cosmos 闭源 + 30× 速度差,世界模型路线 Meta 已经领跑。

对具身智能主线:利好上游世界模型 / 视频理解 / VLA 三模态(具身「大脑」派)、利好视频-多模态预训练基础设施(视频编码、潜在向量压缩、动作 token 化)。

觉得有用?欢迎点赞、收藏,或请作者喝咖啡 ☕️

支付宝收款码

支付宝

微信收款码

微信

💬 留言

评论由 Giscus 驱动(基于 GitHub Discussions)。 当前仓库 NaphJohn/LLM-blog 尚未启用 Discussions:请在 GitHub 仓库 Settings → General → Features 勾选 Discussions 后刷新本页,评论区即自动显示。