FAR: Long-Context Autoregressive Video Modeling with Next-Frame Prediction

Authors: Yuchao Gu, Weijia Mao, Mike Zheng Shou Affiliations: National University of Singapore (Show Lab) GitHub: showlab/FAR Year: 2025

1. Motivation (研究动机)

1.1 问题背景

当前视频生成模型(如 Wan、Cosmos)主要在短视频片段(约 5 秒)上训练,能捕捉短期时序一致性(物体运动、人体动作),但无法维持长期一致性(环境记忆、场景持续性)。要实现真正的 world simulator,模型需要在长视频上直接训练以捕捉长程依赖关系。

核心挑战:

  • 视觉 token 数量随上下文长度爆炸式增长(128 帧 > 8K tokens),训练成本极高
  • Test-time extrapolation(滑窗、RoPE 外推等)效果远不如直接在长视频上训练
  • 已有 AR-Diffusion 混合模型存在 training-inference gap

1.2 核心贡献

  1. FAR (Frame AutoRegressive) 基线模型:帧级自回归 + 逐帧 flow matching,收敛速度快于 Video DiT,生成质量优于 Token-AR 模型
  2. Context Redundancy 发现:视频自回归中邻近帧对时序一致性至关重要,远端帧主要作为记忆,存在大量冗余
  3. Long Short-Term Context Modeling + Asymmetric Patchify Kernels:对远端上下文用大 patchify kernel 压缩 token,近端保持标准分辨率,训练成本降低约 5 倍、显存降低约 6 倍
  4. Stochastic Clean Context:解决 AR-Diffusion 模型的 training-inference gap
  5. Multi-Level KV Cache:加速长视频推理

1.3 个人思考与总结

FAR 的本质洞察:视频自回归中的 context redundancy。这是一个非常自然且有力的观察——远端帧主要提供“在哪个场景”的记忆信息,不需要像素级细节,而近端帧需要精确的运动信息来保持时序一致性。Asymmetric patchify 是对这一观察最直接的工程实现。

Stochastic Clean Context 的优雅之处:通过引入特殊时间步 和随机替换策略,以零额外计算成本解决了 AR-Diffusion 模型的 training-inference gap。相比 ACDIT/MAGI 需要 double training cost 的方案,SCC 更加高效。

  • vs Video DiT (Latte):FAR 帧级独立噪声 + 因果注意力 > Latte 统一噪声 + full attention,收敛更快(Fig.5)
  • vs Token-AR (MAGViT, TATS):连续 latent space 避免了 VQ 信息损失,生成质量显著更高
  • vs MAGI/ACDIT:同为 Frame-AR 范式,但 FAR 不需要 double training cost,且有 long short-term context 优势
  • vs TECO:TECO 对所有帧统一使用 aggressive downscaling,牺牲了近端帧的预测精度;FAR 通过非对称策略保留了近端细节
  1. 缺少大规模 text-to-video 实验:目前仅在 UCF-101、BAIR、Minecraft、DMLab 上验证,未在大规模 T2V 数据上训练

  2. 视频长度有限:最长 300 帧(约 20 秒),未验证分钟级视频的能力

  3. 未来方向

    • Scale up 到大规模 T2V 数据,与 Wan/Cosmos 等直接对比
    • 分钟级长视频数据集构建与评测
    • 探索 video-level in-context learning(利用长上下文能力)
  4. 对 RL for Video Generation 的启示

  • 每帧生成可视为一个 decision step,reward 可以逐帧或逐段给出
  • KV Cache 机制使得 rollout 高效,适合 online RL
  • Long short-term context 可以作为 RL agent 的 memory mechanism
  • Stochastic Clean Context 的思想可以迁移到 RL 中的 teacher forcing 策略

2. Idea (核心思想)

2.1 FAR 框架总览

Figure 2 解读:FAR 的训练和推理流程。左侧为短视频训练:输入视频帧序列经 VAE 编码到 latent space,每帧独立采样时间步 ,通过 flow matching 学习去噪。部分帧随机替换为 clean context(时间步标记为 -1)。右侧为长视频训练:引入 long-term context window(使用大 patchify kernel,每帧仅 4 tokens)和 short-term context window(标准 patchify,每帧 64 tokens),实现非对称 token 压缩。推理时采用自回归方式逐帧生成。

架构核心设计:

  • 基于 DiT/SiT 架构,采用 causal spatiotemporal attention
  • 帧内 full attention,帧间 causal attention(每帧只能看到之前的帧)
  • 与 Latte 的区别:不使用交替的 spatial/temporal attention,而是统一的因果时空注意力

2.2 Context Redundancy

核心思想——Context Redundancy:

  • 当前帧的生成主要依赖邻近帧(局部运动一致性)
  • 远端帧主要提供场景记忆,不需要 fine-grained 细节
  • 因此可以对远端帧使用更大的 patchify kernel 压缩 token 数量

2.3 Stochastic Clean Context

训练策略:

  • 随机将一部分加噪帧替换为对应的 clean latent
  • 给 clean context 帧分配特殊的时间步嵌入 (超出 flow matching 的 范围)
  • Clean context 帧不参与 loss 计算
  • 推理时所有上下文帧都使用 clean latent(),与训练分布一致

量化效果(Table 6, UCF-101):

方法SSIM↑PSNR↑LPIPS↓FVD↓
w/o SCC0.54016.420.211399
w/ SCC0.59618.460.187347

2.4 Long Short-Term Context Modeling

Figure 6 解读:Token 上下文长度与视觉上下文长度的关系。(a) 使用 long short-term context modeling 后,token 数量随帧数增长的速度远慢于 uniform context modeling,因为远端帧被压缩。(b) 训练时间对比:FAR-Long 相比 Video DiT 训练时间降低约 5 倍。(c) 训练显存对比:FAR-Long 显存降低约 6 倍。

Asymmetric Patchify Kernels:

  • Short-term context window(如最近 16 帧):标准 patchify kernel,每帧 64 tokens
  • Long-term context window(更早的帧):大 patchify kernel(如 ),每帧仅 4 tokens
  • 两个 window 使用独立的 projection layers(受 MM-DiT 启发)

Patchify Kernel 选择准则:

其中 为 patchify kernel 大小, 为 latent 维度(32), 为模型 hidden dimension。例如 ,信息基本无损。

Patchify Kernel 消融实验(Table 7):

Patchify KernelSSIM↑PSNR↑LPIPS↓FVD↓训练显存
[1,1]----OOM
[2,2]0.57019.10.1563838.9 G
[4,4]0.57619.30.1533415.3 G
[8,8]0.55818.60.171330.9 G

kernel 在性能和效率之间取得最佳平衡。

3. Method (方法)

3.1 训练目标:Flow Matching

给定数据样本 和噪声 ,构建线性插值轨迹:

对应的常数速度场:

训练目标为逐帧 flow matching loss:

关键区别:FAR 对每帧独立采样时间步(diffusion forcing),而非 Video DiT 的统一时间步。这使得帧级自回归成为可能。

3.2 自回归建模

Figure 3 解读:注意力掩码可视化。(a) 短视频训练:标准帧级因果注意力,每帧可以看到自身及之前所有帧的全部 token。(b) 长视频训练:远端帧(long-term context)使用更少的 token(aggressive patchification),近端帧(short-term context)保持完整 token 数。

FAR 将视频建模分解为帧级自回归:

每个 通过 flow matching 实现(条件去噪)。

3.3 Inference-Time KV Cache

Figure 7 解读:短视频模型的 KV Cache 机制。自回归生成时,对每帧先用 flow matching schedule 去噪得到 clean latent,再执行 caching step()将 clean frame 编码进 KV cache。后续帧的生成直接复用已缓存的 KV,避免重复计算。

Figure 8 解读:长视频模型的 Multi-Level KV Cache。分为三步:(Step 1) 当一帧离开 short-term window 时,用大 patchify kernel 编码为 L2 cache(4 tokens/frame);(Step 2) 重新编码 short-term window 中所有帧的 L1 cache;(Step 3) 基于 L1+L2 cache 去噪当前帧。实际实现中三步可合并为单次 forward pass。

KV Cache 推理加速效果(Figure 11):

  • 无 KV Cache + 无 Long Short-Term:256 帧约 1341 秒
  • 加 KV Cache:约 171 秒(7.8x 加速
  • 加 Long Short-Term + Multi-Level KV Cache:约 104 秒(12.9x 加速

3.4 训练伪代码

# FAR Training Pipeline (Short-Video)
def train_step(video_frames, vae, model):
    # 1. Encode to latent space
    Z = vae.encode(video_frames)  # Z: [B, T, H, W, C]
 
    # 2. Sample independent timestep per frame
    t = torch.rand(B, T)  # t[b,i] ~ U(0,1), independent per frame
 
    # 3. Stochastic Clean Context: randomly replace some frames
    clean_mask = torch.rand(B, T) < scc_ratio  # e.g., ratio=0.1
    t[clean_mask] = -1  # special timestep for clean context
 
    # 4. Add noise via linear interpolation (flow matching)
    noise = torch.randn_like(Z)
    Z_noisy = (1 - t) * Z + t * noise  # per-frame interpolation
    Z_noisy[clean_mask] = Z[clean_mask]  # clean frames unchanged
 
    # 5. Forward pass with causal spatiotemporal attention
    v_pred = model(Z_noisy, t, causal_mask=True)
 
    # 6. Compute loss only on non-clean frames
    v_target = noise - Z  # target velocity
    loss_mask = ~clean_mask
    loss = ((v_pred - v_target) ** 2 * loss_mask).mean()
    return loss
 
# FAR Long-Video Training with Asymmetric Patchify
def train_step_long(video_frames, vae, model):
    Z = vae.encode(video_frames)  # Z: [B, T, H, W, C]
 
    # Split into long-term and short-term context
    Z_long = Z[:, :T-n]   # distant frames
    Z_short = Z[:, T-n:]  # recent n frames (e.g., n=16)
 
    # Asymmetric patchification
    tokens_long = large_patchify(Z_long, kernel=4)   # 4 tokens/frame
    tokens_short = standard_patchify(Z_short, kernel=1)  # 64 tokens/frame
 
    # Separate projection layers
    tokens_long = proj_long(tokens_long)
    tokens_short = proj_short(tokens_short)
 
    # Concatenate and apply causal attention + flow matching loss
    tokens = concat(tokens_long, tokens_short)
    # ... (same flow matching loss as above)

4. Experimental Setup (实验设置)

4.1 模型配置

Model Variants(Table 1):

模型LayersHidden SizeMLPHeadsParams
FAR-B12768307212130M
FAR-M121024409616230M
FAR-L241024409616457M
FAR-XL281152460818674M
FAR-B-Long12768307212158M
FAR-M-Long121024409616280M

Long 版本增加了独立的 long-term projection layers,参数略多。

4.2 训练配置

训练配置(Table 8 精选):

  • VAE: DC-AE (8x8 压缩),latent dim = 32
  • 短视频生成(UCF-101): 16 帧序列,400K steps,LR ,batch 32,SCC ratio 0.1
  • 长视频预测(Minecraft/DMLab): 300 帧序列,short-term window 16 帧,patchify kernel [4,4],1M steps

4.3 代码结构与论文对应

论文内容代码路径 (showlab/FAR)说明
FAR 模型架构 (Table 1)far/models/DiT/SiT 基础架构 + causal spatiotemporal attention
Causal Attention Mask (Fig.3)far/models/帧级因果注意力掩码实现
Flow Matching Loss (Eq.3)far/losses/逐帧 flow matching 训练目标
Stochastic Clean Contextfar/pipelines/随机替换帧为 clean latent (t=-1)
Asymmetric Patchify Kernelsfar/models/Long/Short-term 独立 projection layers
KV Cache & Multi-Level Cachefar/models/推理时 KV 缓存 + L1/L2 分级缓存
DC-AE Encodertrain_dcae.py图像 VAE 训练(8x8 压缩,latent dim=32)
训练入口train.py主训练脚本,支持 accelerate 分布式
评测入口test.pyFVD/SSIM/PSNR/LPIPS 评测
数据加载far/data/UCF-101, BAIR, Minecraft, DMLab 数据处理
训练配置options/各实验的超参数配置文件
评测指标far/metrics/FVD, SSIM, PSNR, LPIPS 计算
训练循环far/trainers/分布式训练 trainer
工具函数far/utils/通用工具

4.4 可用 Checkpoints

模型分辨率任务FVDHuggingFace
FAR-L (457M)128x128Uncond Gen280±11.7guyuchao/FAR_Models
FAR-L (457M)256x256Uncond Gen303±13.5guyuchao/FAR_Models
FAR-XL (674M)256x256Uncond Gen279±9.2guyuchao/FAR_Models
FAR-B (130M)64x64Prediction194.1guyuchao/FAR_Models

5. Experimental Results (实验结果)

5.1 短视频生成(UCF-101)

Figure 5 解读:FAR-L 与 Video DiT-L 在 UCF-101 无条件视频生成上的 FVD 收敛曲线对比。FAR 在整个训练过程中始终优于 Video DiT,收敛更快且最终 FVD 更低,证明了帧级自回归 + flow matching 的优越性。

UCF-101 定量结果(Table 3):

方法类型ParamsCond. FVD↓Uncond. FVD↓
MAGViTv2-MLMNon-AR307M58†-
MAGViTv2-ARToken-AR840M109†-
TATSToken-AR331M332420
LatteVideo-DiT674M-478
OmniTokenizerToken-AR650M191-
MAGIFrame-AR850M-421
FAR-L (Ours)Frame-AR457M99 (57†)280
FAR-XL (Ours)Frame-AR674M108279

FAR 以更少参数实现 SOTA,无需额外的 double training cost。

5.2 短视频预测(UCF-101, BAIR)

Table 4 精选(UCF-101, c=4, p=12):

方法SSIM↑PSNR↑LPIPS↓FVD↓
MCVD-cp0.65821.820.088468.1
ExtDM-K20.75423.890.056394.1
FAR-B (Ours)0.81825.640.037194.1

FAR 在所有指标上大幅领先,无需复杂的多尺度融合或光流设计。

5.3 长视频预测(Minecraft, DMLab)

Figure 1 解读:长视频预测(Minecraft 300帧)各方法的 FVD vs LPIPS 散点图。FAR 位于左下角(低 FVD + 低 LPIPS),显著优于所有对比方法(FitVid、CW-VAE、Latent FDM、TECO、Perceiver AR),证明了 FAR 在长程视频建模上的优势。

Test-Time Extrapolation vs Long-Video Training(Table 2):

方法SSIM↑PSNR↑LPIPS↓FVD↓
Sliding Window0.36512.30.415161
Naive RoPE Ext.0.37212.20.397396
RIFLEx0.37212.20.398391
FAR-B-Long0.57619.30.15334

直接在长视频上训练的效果远超任何 test-time extrapolation 方法,FVD 从 161 降至 34。

长视频预测定量结果(Table 5, c=144, p=156):

方法DMLab LPIPS↓DMLab FVD↓Minecraft LPIPS↓Minecraft FVD↓
TECO0.157480.340116
Latent FDM0.2221810.429167
FitVid0.4911760.519956
FAR-B-Long0.104640.25139

FAR 在 Minecraft 上 FVD=39(TECO=116),LPIPS=0.251(TECO=0.340),展现出卓越的长程一致性。

Figure 9/12 解读:DMLab 数据集上长视频预测的定性对比。给定 144 帧上下文,预测 156 帧。FAR 的预测在整个 300 帧序列中保持了与 GT 最接近的场景结构和颜色一致性,而 TECO、Latent FDM 等方法在后期帧中出现严重的场景漂移和模糊。

Figure 13 解读:Minecraft 数据集上的长视频预测定性对比。FAR 在预测帧中成功保持了地形结构、天空颜色和树木纹理的一致性,而其他方法(特别是 FitVid、CW-VAE)在远期帧中出现严重退化。

5.4 消融实验

Short-Term Context Window Size(Figure 10):

Figure 10 解读:短期上下文窗口大小的消融实验。随着局部上下文长度从 1 增加到 8 帧,FVD 和 PSNR 持续改善。但超过 8 帧后性能趋于饱和,验证了 context redundancy 假设——更多近端帧并不能持续提升性能。因此选择 8 帧作为最优短期窗口大小。

KV Cache 消融(Figure 11):

Figure 11 解读:KV Cache 对推理速度的影响。四条曲线分别对应:无 KV Cache 的 FAR(最慢,256帧约 1341s)、带 KV Cache 的 FAR(约 171s)、无 Multi-Level Cache 的 FAR-Long(约 200s+)、带 Multi-Level KV Cache 的 FAR-Long(最快,约 104s)。Multi-Level KV Cache 对长视频推理加速效果最显著。

5.5 关键数字速查

指标数值
FAR-L UCF-101 Cond. FVD99 (57†)
FAR-XL UCF-101 Uncond. FVD279
FAR-B UCF-101 Prediction FVD194.1
FAR-B-Long Minecraft FVD (300帧)39
FAR-B-Long DMLab FVD (300帧)64
Long-term vs Test-time FVD34 vs 161 (Sliding Window)
训练时间节省~5x (vs Video DiT, 256帧)
训练显存节省~6x (vs Video DiT, 256帧)
KV Cache 推理加速~12.9x (256帧, with Multi-Level)
Short-term window 最优大小8 帧
Long-term patchify kernel[4,4] (4 tokens/frame vs 64)
SCC ratio0.1