FLARE: Robot Learning with Implicit World Modeling

Authors: Ruijie Zheng, Jing Wang, Scott Reed, Johan Bjorck, Yu Fang, Fengyuan Hu, Joel Jang, Kaushil Kundalia, Zongyu Lin, Loic Magne, Avnish Narayan, You Liang Tan, Guanzhi Wang, Qi Wang, Jiannan Xiang, Yinzhen Xu, Seonghyeon Ye, Jan Kautz, Furong Huang, Yuke Zhu, Linxi Fan Affiliations: NVIDIA, University of Maryland (College Park), Nanyang Technological University, University of Texas (Austin) arXiv: 2505.15659 Project Page: research.nvidia.com/labs/gear/flare

1. Motivation (研究动机)

  • 现有 World Model 方法的问题: 近期工作(如 GR-1, GR-2, UWM)尝试联合学习 World Model 和 Policy,通过预测未来视频帧来辅助策略学习。但这种像素级预测存在根本性问题:

    1. 需要大规模生成模型,计算开销和延迟巨大
    2. 像素级重建和动作预测对模型容量的需求相互冲突 —— 视频生成强调空间细节和纹理合成,而动作建模需要紧凑的、任务相关的抽象表征
    3. 同时优化两个目标导致学习效率降低
  • 核心问题: 能否在不进行昂贵的像素级预测的情况下,让 Policy 具备对未来状态的推理能力?

  • 为什么值得研究: 人类的运动控制本质上是隐式预测未来的 —— 我们在抓取咖啡杯时不需要”想象”完整的未来画面,而是在紧凑的内部表征空间中推理。如果能在 Latent Space 而非 Pixel Space 中实现世界建模,就能以极小的代价获得显著的性能提升。


2. Idea (核心思想)

核心洞察: 将世界建模从”预测像素”转变为”预测 Embedding” —— 在 Diffusion Transformer 的中间层提取 Future Token 的表征,对齐到未来观测的 Latent Embedding,从而实现隐式世界建模。

关键创新:

  1. 只需在标准 VLA 模型的输入序列中添加少量可学习的 Future Token,通过辅助 Cosine Similarity Loss 将它们与未来观测的 Embedding 对齐
  2. 预训练一个 Action-Aware 的 Vision-Language Embedding 模型作为对齐目标,确保 Latent Space 是任务相关的
  3. 推理时不需要计算未来的 Vision-Language Embedding,零额外开销

与现有方法的根本区别: UWM 等方法需要解码 VAE Latent 来预测未来帧,属于显式重建;FLARE 则在紧凑的 Latent Space 中通过 Alignment Loss 隐式建模世界动态,完全避免了像素级生成。


3. Method (方法)

3.1 整体框架

FLARE 采用两阶段训练流程:

  1. Stage 1: 预训练 Action-Aware Vision-Language Embedding 模型
  2. Stage 2: 联合训练 Policy(Flow Matching Loss + Future Latent Alignment Loss)

Figure 1 解读: 上半部分是传统 Flow Matching / Diffusion Policy,只接收当前和历史观测,输出动作。下半部分是 FLARE:同样接收历史观测,但额外输出 Future Embeddings ,并与未来观测 的真实 Embedding 进行对齐。关键在于:有 Action Label 的 Robot 数据同时训练 Action Loss 和 Alignment Loss;没有 Action Label 的人类视频数据只训练 Alignment Loss,从而实现无标注视频的利用。

Figure 2 解读: FLARE 的详细架构图。左侧为 DiT(Diffusion Transformer)主体,输入序列由三部分拼接而成:State Token 、Noised Action Tokens 、以及 Future Tokens。DiT 包含多层交替的 Self-Attention 和 Cross-Attention(条件为当前观测的 Vision-Language Embedding)。在第 层(默认第 6 层),提取 Future Token 对应的中间表征,通过 MLP 投影后与冻结的 Target Embedding(未来观测 的 Vision-Language Embedding)计算 Cosine Similarity Loss。Action Token 对应的输出则经过 Action Decoder 计算 Flow Matching Loss。

3.2 背景: Flow Matching

为机器人当前观测(含图像和语言指令), 为本体感知状态, 为 Action Chunk。 为 Vision-Language Embedding。

给定 Flow Matching 时间步 和噪声 ,构造 Noised Action Chunk:

Flow Matching Loss:

时间步 从 Beta 分布采样:

推理时使用 步 Euler 积分去噪:

3.3 Future Latent Representation Alignment

FLARE 的核心贡献:在 DiT 输入序列中添加 个可学习的 Future Token,在第 层提取其表征并对齐到未来观测的 Embedding。

为 DiT 第 层 Future Token 的激活(经 MLP 投影), 为未来观测 的 Encoder 输出。

Latent Alignment Loss:

总体训练目标:

其中 (最优值)。

关键设计选择:

  • 对齐层: 选择第 6 层(共 8 层),在更深层应用让更多参数受益于未来预测监督
  • 推理时: Future Token 仍参与 Self-Attention 计算,但不需要计算 Target Embedding,无额外开销

3.4 Action-Aware Future Embedding Model

Figure 10 解读: Q-former 架构详细图。左侧分支:SigLIP-2 Vision Model 输出 256 个 Patch Token,SigLIP-2 Text Model 输出 32 个 Language Token,拼接后通过 4 层 Self-Attention Transformer 得到 288 个 Fused Token。右侧分支:32 个随机初始化的 Learnable Query Token 通过交替的 Self-Attention 和 Cross-Attention 层(Cross-Attend 到 288 个 Fused Token),最终压缩为 32 个紧凑的 Vision-Language Embedding Token。

设计目标: 紧凑性 (Compactness) + 动作感知 (Action-Awareness)

架构细节:

  • Backbone: siglip2-large-patch16-256,处理 256x256 分辨率图像
  • Vision Tokens: 256 个 SigLIP-2 Patch Token
  • Language Tokens: 32 个 Language Token
  • Fusion: 4 层 Self-Attention Transformer → 288 个 Fused Token
  • Compression: Q-former 将 288 → 32 个 Learnable Query Token(
  • 训练: 端到端使用 Action Flow-Matching 目标训练,附加 8 个 DiT blocks

为什么需要 Action-Aware Embedding 而非通用 Encoder: 实验证明(Table 2),使用针对动作预测优化的 Embedding 比直接用 SigLIP-2 特征好 5-6 个百分点,因为它能过滤掉与任务无关的视觉信息。

3.5 EMA 更新 Target Embedding

为了缓解预训练 Embedding 和下游任务之间的分布偏移,采用 EMA 更新 Target Embedding:

最优 EMA 系数

Figure 9 解读: EMA 系数消融实验。Baseline(无 FLARE Loss)为 60.1%, 时 63.5%(更新过快导致不稳定), 时 66.4%(最优), 时 65.7%,(完全冻结)时 64.6%。说明适度的 EMA 更新优于完全冻结。

3.6 利用无标注人类视频

FLARE 的独特优势:对于没有 Action Label 的人类第一视角视频,只应用 (不计算 ),让模型从人类演示中学习任务动态的 Latent 表征。

Figure 7 解读: 左侧展示实验设置 —— 选取 5 个训练集中未见过的新物体,收集 150 个 GoPro 人类演示 + 少量(1 或 10 个)机器人遥操作演示。右侧柱状图:仅 1 个 Robot Demo 时,FLARE(37.5%)vs FLARE + Human Ego Videos(60%);10 个 Robot Demo 时,FLARE(42.5%)vs FLARE + Human Ego Videos(80%)。人类视频约使性能翻倍。

3.7 伪代码

论文附录 D 提供了官方伪代码:

Algorithm: FLARE Training Loop

# Key components:
# target_vl_embedding: pretrained action-aware vision language embedding
# vl_embedding:        vision language embedding of the current policy
# dit:                 diffusion transformer of the current policy
# action_embedding:    2-layer MLP to embed noisy actions
# state_embedding:     2-layer MLP to embed proprioceptive state
# action_decode:       2-layer MLP to decode robot's actions
# embedding_decode:    2-layer MLP to decode predicted embeddings
# M: Number of tokens in VL embedding (32)
# lambda: coefficient of FLARE loss (default 0.2)
 
### Initialization
future_tokens = nn.Embedding(M, hidden_dim)
vl_embedding.load_state_dict(vl_embedding.state_dict())
target_vl_embedding.requires_grad = False
 
for n in range(N):
    obs, proprio, actions, future_obs = dataset.next()
 
    ### Prepare noisy action inputs
    noise = gaussian.sample()
    timestep = beta.sample()   # sample flowmatching timestep
    noisy_action = timestep * actions + (1 - timestep) * noise
    velocity = actions - noise
 
    ### Get state, action, and observation embedding tokens
    action_tokens = action_embed(noisy_action, timestep)
    state_token   = state_embed(state)
    vl_tokens     = vl_embedding(obs)
 
    ### Pass through DiT layers
    sa_tokens     = torch.concat([state_token, action_tokens, future_tokens], dim=1)
    policy_outputs = dit(sa_tokens, vl_tokens)
 
    ### Calculate action flowmatching loss
    action_outputs = action_decoder(policy_outputs[:, 1:1 + action_tokens.shape[1]])
    action_loss = MSE(action_outputs, velocity)
 
    ### Calculate FLARE loss
    with torch.no_grad():
        embedding_to_align = target_vl_embedding(future_obs)
    predict_embedding = decode_embedding(policy_outputs[:, -M:])
    flare_loss = 1 - COSINE_SIMILARITY(predict_embedding, embedding_to_align)
 
    ### Optimize the combined loss
    loss = action_loss + lambda * flare_loss
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

Algorithm: Action-Aware Embedding Pretraining

# Pretrain the Q-former based VL embedding with flow-matching objective
# siglip2_vision: SigLIP-2 vision encoder (256 patch tokens)
# siglip2_text:   SigLIP-2 text encoder (32 language tokens)
# fusion_layers:  4-layer self-attention transformer
# qformer:        Q-former with 32 learnable query tokens
# dit_pretrain:   8-layer DiT for action prediction
 
for n in range(150000):
    obs, text, proprio, actions = dataset.next()  # diverse robot data
 
    # Encode vision and language
    vision_tokens = siglip2_vision(obs)       # [B, 256, D]
    lang_tokens = siglip2_text(text)           # [B, 32, D]
 
    # Fuse and compress
    fused = fusion_layers(concat(vision_tokens, lang_tokens))  # [B, 288, D]
    vl_embedding = qformer(fused)              # [B, 32, D]
 
    # Flow-matching action prediction
    noise = gaussian.sample()
    timestep = beta.sample()
    noisy_action = timestep * actions + (1 - timestep) * noise
    velocity = actions - noise
 
    action_tokens = action_embed(noisy_action, timestep)
    state_token = state_embed(proprio)
    sa_tokens = concat(state_token, action_tokens)
    pred = dit_pretrain(sa_tokens, vl_embedding)
    loss = MSE(action_decoder(pred), velocity)
 
    loss.backward()
    optimizer.step()

Algorithm: FLARE Inference (K-step Euler Denoising)

# K = 4 denoising steps
# No need to compute future VL embedding at inference time
 
def flare_inference(obs, proprio):
    vl_tokens = vl_embedding(obs)
    state_token = state_embed(proprio)
 
    # Initialize from noise
    A_0 = gaussian.sample()  # [B, H, action_dim]
 
    for k in range(K):
        tau = k / K
        action_tokens = action_embed(A_0, tau)
        sa_tokens = concat(state_token, action_tokens, future_tokens)
        outputs = dit(sa_tokens, vl_tokens)
        velocity = action_decoder(outputs[:, 1:1+H])
        A_0 = A_0 + (1/K) * velocity
 
    return A_0  # predicted action chunk

3.8 代码-论文映射表

Paper ConceptSource Location说明
代码搜索github.com/nvidia/flare (coming soon)代码尚未开源,伪代码来自论文附录 D
Q-former VL Embedding论文 Section 3.2 + Appendix ASigLIP-2 + 4-layer Fusion + Q-former
DiT Policy论文 Section 28-layer DiT with Cross/Self-Attention
FLARE Alignment Loss论文 Section 3.1, Eq. (2)Cosine Similarity at Layer 6
EMA Update论文 Section 4.4 for target embedding

3.9 预训练数据混合

Figure 3 解读: Action-Aware Embedding 预训练数据饼图。总计约 2,989.5 小时,其中 GR-1 Simulation 占比最大(1,742.6 小时,~58%),其次是 DROID/OXE(428.3 小时)、RT-1/OXE(338.4 小时)、Language Table/OXE(195.7 小时)等。真实 GR-1 数据仅 88.4 小时(~3%),说明模型主要依赖仿真和多源数据进行预训练。


4. 实验设置 (Experimental Setup)

数据集与规模

数据集帧数时长 (hr)FPS视角类别
GR-1 In-house (real)6.4M88.420EgocentricReal robot
DROID (OXE)23.1M428.315Left, Right, WristReal robot
RT-1 (OXE)3.7M338.43EgocentricReal robot
Language Table (OXE)7.0M195.710Front-facingReal robot
Bridge-v2 (OXE)2.0M111.15Shoulder, left, right, wristReal robot
MUTEX (OXE)362K5.020WristReal robot
Plex (OXE)77K1.120WristReal robot
RoboSet (OXE)1.4M78.95Left, Right, WristReal robot
GR-1 Simulation125.5M1,742.620EgocentricSimulation
Total169.5M2,989.5---

评估 Benchmark

  1. RoboCasa: 24 个单臂操作任务(Panda Arm),模拟厨房环境,包含 pick-and-place、开关门、水龙头操作等
  2. GR-1 Humanoid Simulation: 24 个双手操作任务,包含 18 个物体重排和 6 个铰接物体交互
  3. Real GR-1: 4 个真实世界 pick-and-place 任务,每任务 100 条轨迹
  4. Novel Object Generalization: 5 个训练中未见过的新物体,测试泛化能力

Baseline 方法

  1. Diffusion Policy: U-Net 架构,基于 Diffusion 的动作生成
  2. UWM (Unified World Model): 联合预测 Image VAE Latent 和 Action,训练 400k steps(5x 其他方法)
  3. GR00T N1 (Scratch): 相同架构但 DiT 从头训练,仅加载预训练 Eagle VLM
  4. FLARE Policy Only: 与 FLARE 完全相同的架构,但不使用 Latent Alignment Loss

训练配置

配置项Embedding 预训练Policy 训练
GPU256x H10032x H100
Batch Size81921024
Gradient Steps150,00080,000
OptimizerAdamW (=0.95, =0.999, =1e-8)同左
Weight Decay1e-51e-5
LR ScheduleCosine, warmup ratio 0.05同左
DiT Layers88
Denoising Steps (推理)-K=4

5. 实验结果 (Experimental Results)

5.1 Multitask Benchmark 主要结果

Figure 4 解读: 展示 RoboCasa(24 个 Panda Arm 任务)和 GR-1 Humanoid(24 个双手操作任务)的示例任务截图。

MethodsFLAREPolicy OnlyUWMGR00T N1 (Scratch)Diffusion Policy
RoboCasa
Pick and Place53.2%43.8%35.6%44.1%29.2%
Open & Close Doors/Drawers88.8%78.7%82.0%80.0%78.7%
Others80.0%75.2%74.2%69.6%61.3%
24 RoboCasa Average70.1%61.9%60.8%60.6%51.7%
GR-1 Humanoid
Pick and Place Tasks58.2%46.6%30.1%51.8%40.4%
Articulated Tasks51.3%47.4%38.4%42.8%50.1%
24 GR-1 Average55.0%44.0%29.5%45.1%40.9%

关键发现: FLARE 在所有类别上一致性地超越所有 Baseline,RoboCasa 上领先 Policy Only 8.2%,GR-1 上领先 11%。值得注意的是,UWM 使用了 5 倍训练步数(400k vs 80k)仍然大幅落后。

5.2 Data-Efficient Post-training

Figure 6 解读: 左图为 RoboCasa 24 个任务的 Post-training 结果(使用预训练 Embedding)。随数据量增加(100/300/1000 trajectories per task),FLARE 始终领先 Policy Only,且在 100 条时优势最明显(约 10% 差距)。右图为真实 GR-1 的 4 个任务:FLARE 平均 95.1% vs Policy Only 81.2%,提升 14%。

真实 GR-1 任务Policy OnlyFLARE
Tray to Plate87.5%100%
Cutting Board to Basket62.5%87.5%
Cutting Board to Pan87.5%87.5%
Placemat to Basket87.5%87.5%
Average81.2%95.1%

5.3 Human Egocentric Video Co-training

设置1 Robot Demo/Object10 Robot Demos/Object
FLARE (action-only)37.5%42.5%
FLARE + Human Ego Videos60.0%80.0%

人类视频 co-training 使性能几乎翻倍(1 demo: 37.5% → 60%;10 demo: 42.5% → 80%)。

5.4 Ablation Studies

Embedding 模型消融 (Table 2):

MethodSuccess Rate
No FLARE loss43.9%
SigLIP2 (raw, 256 tokens)49.6%
SigLIP2 (Average Pooled, 64 tokens)50.9%
Action-aware Embedding (32 tokens)55.0%

Figure 8 解读: 左图为 DiT Layer 选择消融 —— Layer 4 表现最差(约 52.5%),Layer 6 最优(约 55%),Layer 7-8 略有下降。右图为 系数消融 —— 时约 52%, 最优(约 55%),- 仍保持稳定(53-55%)。红色虚线为 Policy Only baseline(43.9%)。

5.5 局限性

  1. 主要关注桌面 Pick-and-Place 的 Imitation Learning
  2. 尚未整合 Reinforcement Learning
  3. 依赖少量专家示范,在难以收集数据的场景中可能受限
  4. 人类视频仅限受控环境下 GoPro 拍摄,尚未扩展到大规模自然场景

5.6 总体结论

FLARE 提出了一种简单而有效的隐式世界建模方案:通过在 DiT 中添加 Future Token 并对齐到未来观测的 Latent Embedding,以极小的架构修改获得了高达 26% 的性能提升。该方法还开辟了利用无标注人类视频增强机器人策略的新途径,展示了 Latent World Model 在机器人学习中的巨大潜力。