Wan — Open and Advanced Large-Scale Video Generative Models (Wan2.1)

DeepLearning-Paper-with-Code · Video Generation · arXiv(2025) · Wan Team, Alibaba Group
核心论点 关键概念 实证证据 让步/反驳 方法论

🎮 费曼一分钟(通俗速读)

通俗速读 · 先建立模糊认知,再读正文

开源文生视频(HunyuanVideo、CogVideoX、Mochi)与闭源 Sora 仍有性能/能力/效率差距。Wan2.1 = 阿里 Wan 团队全栈技术报告 + 开源:Wan-VAE(3D 因果、4×8×8 压缩、127M 参数 + feature cache 流式编解码)+ DiT + Flow Matching(umT5 文本、3D RoPE 全时空注意力、共享 timestep MLP 省 25% 参)+ 十亿级图文视频预训练(256→480→720 分辨率课程)+ Wan-Bench 自动评测。提供 1.3B(8.19GB VRAM 消费级)与 14B 两档;覆盖 T2V/I2V/编辑/个性化/相机/实时/音频等 8+ 下游。首个能在视频里生成中英文视觉文字的开源模型。

📄 原文:与 SOTA 开源/闭源模型对比

Wan benchmark comparison
Abstract 前对比图:Wan 在 benchmark 与人类评估中优于多数开源模型,与闭源方案具竞争力。点击放大。

Abstract

原文翻译解析

This report presents Wan, a comprehensive open suite of video foundation models on the diffusion transformer + flow matching paradigm.

Four features: Leading Performance — 14B trained on billions of images/videos, scaling laws, beats open & many commercial models on Wan-Bench; Comprehensiveness — 1.3B & 14B, 8+ tasks including I2V, editing, personalization; first model generating Chinese & English visual text in video; Consumer Efficiency — 1.3B needs only 8.19 GB VRAM; Openness — full code & weights at github.com/Wan-Video/Wan2.1.

本报告发布开源视频基础模型套件 Wan,基于扩散 Transformer + Flow Matching。

四特点:领先性能(14B、千亿 token 级数据、Wan-Bench 超开源与部分商业模型);全面(1.3B/14B、8+ 任务、视频内中英文视觉文字);消费级效率(1.3B 仅需 8.19GB 显存);开放(代码权重全开源)。

概括主张

段落功能

定位「开源 Sora 级」技术报告:不只 T2V,而是 VAE+DiT+数据+评测+应用全链路公开。

1. Introduction

原文翻译解析

Since Sora, video generation advanced rapidly; open models (HunyuanVideo, Mochi, CogVideoX) narrowed the gap but three gaps remain: suboptimal performance, limited capabilities (mostly T2V only), insufficient efficiency for creators with limited GPUs.

Sora 之后视频生成快速进步;HunyuanVideo、Mochi、CogVideoX 等开源缩小差距,但仍有:性能不足能力单一(多仅 T2V)、效率不够(算力门槛高)。

引出问题

三重 gap → Wan 用 scaling + 多任务 + 小模型三条线同时回应。

Wan follows DiT + Flow Matching (like SD3/HunyuanVideo): cross-attention for text, full spatio-temporal attention, scaled to 14B on $\mathcal{O}(1)$ trillion tokens from billions of images/videos.

Downstream: I2V, instruction editing, zero-shot personalization, real-time generation, audio, etc. A 1.3B model runs on consumer GPUs (8.19G VRAM) while beating many larger open models.

Wan 走 DiT + Flow Matching 路线:文本 cross-attn、全时空注意力、14B 规模 + 万亿级 token 训练。

扩展 I2V、编辑、个性化、实时、音频等;1.3B 仅需 8.19G 显存且超多数更大开源模型。

提出论点

与 CogVideoX 同属 DiT 视频线,但 Wan 强调全栈透明(数据流水线、Wan-Bench、8 任务)+ 双规格开源

📄 原文 Figure:Wan 生成样例(大动作 / 中英文文字 / 多任务)

Wan video generation examples
Intro Fig.2:大运动、高保真、视频内中英文文字、T2V/I2V/编辑等能力展示。点击放大。

2. Model Design — Wan-VAE & DiT

原文翻译解析

Wan-VAE: 3D causal VAE compresses $V \in \mathbb{R}^{(1+T)\times H \times W \times 3}$ to latent $[1{+}T/4,\; H/8,\; W/8]$ with 16 channels — total 4×8×8 spatiotemporal compression. First frame spatial-only (MagViT-v2 style). RMSNorm replaces GroupNorm for causality + feature cache.

127M params; 3-stage training: 2D image VAE → inflate to 3D on low-res 5-frame video → GAN fine-tune on HQ video. Reconstruction PSNR competitive; 2.5× faster than HunyuanVideo VAE at same hardware.

Wan-VAE:3D 因果 VAE,视频 $V$ 压到 $[1{+}T/4, H/8, W/8]$、16 通道,总压缩 4×8×8。首帧仅空间压缩。RMSNorm + feature cache 保因果与效率。

127M 参数;三阶段训练(2D 图 VAE → 3D 低分短视频 → GAN 微调)。重建质量 competitive;同硬件比 HunyuanVideo VAE 快 2.5 倍

Wan-VAE

与 CogVideoX / HunyuanVideo VAE

压缩率同为 16 通道 · 4×8×8(Wan 记法:时间×高×宽;CogVideoX 记法 8×8×4 为空间×空间×时间,数值等价)。差异在工程化与推理,见下表与 §Feature Cache。

Wan-VAE vs CogVideoX 3D VAE — 异同对照

维度CogVideoX(ICLR 2025)Wan-VAE(Wan2.1 报告 §4.1)
时空压缩8×8×4,16 latent 通道;$T'=\lfloor(T{-}1)/4\rfloor{+}1$4×8×8(同率);输入格式 1+T 帧 → latent 1+T/4
因果性3D 因果卷积,仅向过去 padding;防 future leak同;且为 feature cache 前置条件
首帧处理论文强调 3D 统一编码;训练帧数 4k+1首帧仅空间压缩(MagViT-v2),利于 T2I / 单帧 I2V 与图数据 inflate
归一化典型 3D VAE 用 GroupNorm(跨帧统计)GroupNorm → RMSNorm:不混未来帧统计,与 chunk 推理兼容(报告明确动机)
模型体量未强调极小 VAE;训练用 Context Parallel 扩长视频127M 参;上采样层输入通道减半 → 推理显存 −33%
训练策略两阶段:256²×17 帧 → CP 161 帧 + GAN(SAT 开源)三阶段:2D 图 VAE → inflate 3D(128²×5 帧)→ 多分辨率 + 3D GAN
长视频推理训练侧 temporal Context Parallel(多卡切时间维)推理侧 feature cache:单卡 chunk 编解码,每 chunk ≤4 帧,$O(1)$ 历史缓存
相对指标WebVid 17 帧 flicker 85.5 / PSNR 29.1(自报)720×720×25 帧:PSNR competitive;同硬件重建 2.5× 快于 HunyuanVideo(报告 Fig. vae_psnr)

改进归纳(相对 CogVideoX 一代开源 VAE):① 不提高压缩率的前提下把 VAE 做更小更快(127M + cache),把算力让给 14B DiT;② RMSNorm + cache 使任意长视频单卡流式编解码可行(CogVideoX 论文侧重多卡 CP 训练,未描述同等 cache);③ 2D→3D inflate + 首帧空间特化,降低视频 VAE 冷启动成本;④ 重建在文字/高运动场景上报告定性优于同级 VAE(Fig. vae_visual)。

注意:二者 latent 网格可对接同类 DiT(patch (1,2,2));Wan 选 Flow Matching + cross-attn DiT,CogVideoX 选 Expert AdaLN + 3D full attention —— VAE 层改进独立於 DiT 设计

📄 原文 Figure:Wan-VAE 框架(4×8×8 压缩)

Wan-VAE architecture
Fig VAE:橙=2×时空压缩,绿=2×空间压缩;总 4×8×8。点击放大。

📄 原文 Figure:Feature Cache 机制

Wan-VAE feature cache
Fig vae_cache:(a) 普通因果卷积层 — 跨 chunk 保留 2 帧特征;(b) 2× 时间下采样 — 非首 chunk 保留 1 帧。点击放大。

Feature Cache 机制详解

问题:3D 因果卷积核大小为 3(时间维),计算第 $t$ 帧输出需要 $t{-}2,t{-}1,t$ 三帧特征。若一次 encode 全长视频,显存 $\propto T$;若按 chunk 切分但无缓存,chunk 边界处缺少历史帧 → 与整段编码不一致,出现接缝伪影。

思路:按 latent 时间步切 chunk。像素侧每 chunk 最多 4 帧(首 chunk 1 帧,后续各 4 帧),与 4× 时间压缩对齐,得 $1{+}T/4$ 个 latent 帧。每个 chunk 前向时,把上一 chunk 末尾的特征图写入 cache,拼到当前 chunk 时间维前面,再喂给 CausalConv3d —— 等价于「全序列一次卷积」,但峰值显存只与 chunk 大小相关。

常见误解:chunk 为什么是 4 帧,不是 3 帧?

核大小 3chunk 大小 4 是两件独立的事,不要混为一谈:

概念数值由什么决定
因果 Conv3d 时间核 $k_t$3输出第 $t$ 帧需 $t{-}2,t{-}1,t$ → feature cache 存 2 帧(CACHE_T=2
像素 chunk 大小1, 4, 4, …VAE 时间维 4× 压缩 + 首帧仅空间压 → 每个 latent 步对应 1 或 4 像素帧

chunk=4 来自压缩拓扑(一个 $z_i$ 吃掉 4 像素帧);cache=2 来自卷积感受野(跨 chunk 衔接)。chunk 内 4 帧足够完成该 latent 步的全部因果卷积与时间下采样;若只切 3 帧会少算 1 帧,latent 与整段 encode 不一致。

图例 A — 像素 chunk ↔ latent 时间步(4× 时间压缩)
像素帧 0 1 2 3 4 5 6 7 8 chunk₀ · 1帧 chunk₁ · 4帧 → 产出 z₁ chunk₂ · 4帧 → 产出 z₂ latent z₀ z₁ z₂ … 共 1+T/4 iter = 1 + (T−1)//4  |  首帧只空间压(MagViT-v2) |  后续每 4 像素帧 → 1 latent 步(encoder 两次 2× 时间下采样)
例:9 像素帧 (0–8) → 3 个 latent (z₀,z₁,z₂)。chunk 边界由压缩率决定,不是 $k_t{=}3$。
图例 B — 跨 chunk 因果卷积:$k_t{=}3$ 只需 cache 2 帧(与 chunk 内 4 帧并存)
chunk₁ 输入时间轴(encoder 某层特征,示意) cache 2帧历史 1 2 3 4 CausalConv3d k_t=3:算帧1输出时窗口 = cache末2帧 + 帧1 cat(cache, chunk) 若无 cache(错误): pad 1 ← 零 pad 替代真实历史 → chunk 边界伪影 有 cache(正确):chunk 内仍 4 帧;仅边界用 2 帧历史特征,与整段 encode 一致
图例 B 对应论文 Fig. vae_cache (a):CACHE_T=2 来自 $k_t{-}1$,与 chunk 含 4 像素帧不矛盾。
flowchart LR
  subgraph why4["chunk=4 来自 4× 时间压缩"]
    P1["像素 1–4"] --> Z1["latent z₁"]
    P2["像素 5–8"] --> Z2["latent z₂"]
  end
  subgraph why2["cache=2 来自 k_t=3"]
    C["上一 chunk 末 2 帧特征"] --> CONV["CausalConv3d"]
    CH["当前 chunk 首帧"] --> CONV
  end

两路逻辑正交:左 = 压缩拓扑决定一次 forward 吃几帧像素;右 = 卷积核决定跨 chunk 带几帧历史

Feature Cache 的作用与优势

一句话:分块流式跑 Wan-VAE 时,用 $O(1)$ 大小的历史特征缓存,换数值等价于整段 encode + 峰值显存与视频长度解耦

作用(解决什么)

  • 跨 chunk 因果连续:因果 Conv3d 在 chunk 边界需要「过去帧」;cache 保存上一 chunk 末 1–2 帧中间特征(非原始像素),拼进当前 chunk,避免用零 pad 伪造历史。
  • 数值一致:chunk-wise + cache 的输出应与一次性喂入全长视频 bitwise 级一致(理想实现下),无 chunk 接缝 flicker / latent 跳变。
  • 显存有界:每次 encoder 只处理 ≤4 像素帧(首 chunk 1 帧),激活峰值 $\approx O(HW)$,不随总帧数 $T$ 线性涨 → 长视频 / 高分辨率 decode 不 OOM。
  • 配合 RMSNorm:归一化不跨未来帧聚合统计;chunk 切分 + cache 与 RMSNorm 兼容(GroupNorm 跨帧统计会破坏因果 chunk 语义,报告因此替换)。

优势(相对其它做法)

方案显存长视频与整段 encode 一致单卡推理
整段一次 encode/decode$\propto T$ · 易 OOM受 GPU 上限✓ 基准长片困难
chunk 切分、 cache有界可分段✗ 边界伪影
Wan feature cache有界(≤4 帧/chunk + 小 cache)报告称可稳定任意长✓ 等价整段✓ 127M VAE 单卡
训练侧 Context Parallel(CogVideoX 等)多卡分摊 $T$训练用推理未必实现同等 cache

工程收益(报告 §4.1)

  • 吞吐:同硬件 VAE 重建比 HunyuanVideo 2.5× 快(小模型 127M + cache 减峰值显存,高分辨率优势更大)。
  • DiT 训练友好:VAE encode 更快 → 同样 GPU·hour 可过更多 latent,后续 14B DiT 数据吞吐受益。
  • 流式场景:实时生成 / 逐段 decode 时,可边生成边解码,不必等全长 latent 落盘。
  • 存储开销极小:每层 CausalConv3d 仅 cache 1–2 帧特征图(`feat_cache` 数组长度 = 层数),相对整段激活可忽略。
flowchart TB
  subgraph pain["无 cache 的痛点"]
    A1["长视频整段 encode"] --> OOM["显存 ∝ T"]
    A2["chunk 无历史"] --> SEAM["边界伪影 / latent 不一致"]
  end
  subgraph gain["feature cache 收益"]
    B1["chunk ≤4 帧"] --> MEM["峰值显存有界"]
    B2["cache 1–2 帧特征"] --> EQ["≈ 整段 encode"]
    B1 --> STREAM["任意长视频流式编解码"]
    B2 --> STREAM
  end

论文结论(§4.1 Efficient Inference):*optimizes memory utilization, preserves feature coherence across chunk boundaries, supporting stable inference for infinite-length videos*。

场景(论文 Fig. vae_cache)缓存内容首 chunk后续 chunk
(a) 普通因果 Conv3d,$k_t{=}3$,stride 1保存最后 2 帧中间特征(CACHE_T=2时间维零填充 2 帧 dummyconv(cat(cache, chunk)),再更新 cache
(b) 时间下采样 Conv3d,stride 2保存最后 1 帧特征无额外 pad仅非首 chunk 在卷积前 cat 1 帧 cache,保证输出长度严格 ÷2

chunk 划分(与代码一致):输入 $T$ 帧($1{+}T$ 格式),iter = 1 + (T-1)//4;第 0 次取帧 [:, :, 0:1],第 $i$ 次取 [:, :, 1+4*(i-1) : 1+4*i],encoder 输出沿时间 concat → 完整 latent。

# 伪代码 — WanVAE_.encode + CausalConv3d(对应 wan/modules/vae.py) CACHE_T = 2 # 时间核 k=3 时需 2 帧历史 feat_cache = [None] * num_causal_conv_layers # 每层 CausalConv3d 一个槽位 def causal_conv3d(x_chunk, cache): # x_chunk: [B,C,t_chunk,H,W];cache: 上一 chunk 末 CACHE_T 帧特征 if cache is None: x = zero_pad_time(x_chunk, pad=2) # 首 chunk else: x = concat_time(cache, x_chunk) # 用历史特征替代零 pad y = Conv3d(x) new_cache = x[:, :, -CACHE_T:, :, :].clone() # 供下一 chunk return y, new_cache def encode_video(x): # x: [B,3,T,H,W];按 1,4,4,4… 切分 chunks = [x[:,:,:1], x[:,:, 1:5], x[:,:, 5:9], ...] latent_parts = [] for i, chunk in enumerate(chunks): clear_or_reuse_feat_cache(feat_cache, i) # 层间共享 cache 数组,按 conv 下标更新 z_i = encoder(chunk, feat_cache=feat_cache) latent_parts.append(z_i) return concat_time(latent_parts) # → [B,16,1+T/4,H/8,W/8]

decode 同理:按每个 latent 时间步逐块解码(每步 1 个 latent 帧),复用同一套 feat_cache。效果:显存 bounded、chunk 边界连续、理论上可无限长视频 —— 报告 §4.1 称 "infinite-length videos"。完整实现见 #code §②

DiT backbone: 3D patch embed $(1,2,2)$ → sequence length $L=(1{+}T/4)\cdot H/16 \cdot W/16$. Cross-attention embeds umT5 text; shared MLP predicts 6 AdaLN modulation params per block (≈25% param savings vs per-block MLP).

umT5-XXL chosen for multilingual (CN/EN + visual text), composition quality, faster convergence vs unidirectional LLMs.

DiT:3D patch $(1,2,2)$,序列长 $L=(1{+}T/4)\cdot H/16 \cdot W/16$。Cross-attention 注入 umT5 文本;共享 timestep MLP 预测 6 组 AdaLN 参数(省约 25% 参数)。

umT5-XXL:多语(含视觉文字)、构图更好、收敛更快。

DiT 块

自注意力 + cross-attn + FFN;3D RoPE 在代码侧实现时空位置编码(见 #code)。

📄 原文 Figure:Wan 整体架构

Wan overall architecture
Wan-VAE + umT5 + DiT 扩散 Transformer 总览。点击放大。
Wan DiT block
DiT Block:patchify → self-attn + cross-attn + FFN,timestep AdaLN 调制。点击放大。

💻 代码对照 — Wan-VAE · WanModel · Flow 采样 · I2V

官方推理仓库:github.com/Wan-Video/Wan2.1仅推理,无训练代码)。核心在 wan/modules/wan/text2video.py

论文代码
Wan-VAE 4×8×8、16 通道wan/modules/vae.py · WanVAE · CausalConv3d
DiT + cross-attnwan/modules/model.py · WanModel · WanAttentionBlock
umT5 文本wan/modules/t5.py · T5EncoderModel
Flow Matching 采样wan/utils/fm_solvers_unipc.py · FlowUniPCMultistepScheduler
I2V 条件拼接 + CLIPWanI2V · WanI2VCrossAttention · wan/image2video.py
1.3B / 14B 配置wan/configs/wan_t2v_1_3B.py · wan_t2v_14B.py

① Wan-VAE vs CogVideoX — 压缩率相同,工程路径不同

二者 DiT 侧都消费 shape $\approx [16,\;1{+}T/4,\;H/8,\;W/8]$ 的 latent;CogVideoX SAT 里 temporal_compress_times: 4z_channels: 16 与 Wan z_dim=16、stride $(4,8,8)$ 对齐。Wan 的增量在127M 小模型 + RMSNorm + feature cache 流式推理,而非更高压缩比。

能力CogVideoX ContextParallelEncoder3DWan WanVAE_
长视频训练多卡 Context Parallel,rank 间传 $k{-}1$ 帧 halo报告未强调 CP;三阶段 inflate 训练
长视频推理通常整段 latent 一次过 DiT;VAE 整段或按实现encode 显式 1+4+4… chunk + 每层 conv cache
单帧 / T2IT=1 同一 wrapper首 chunk 仅 1 帧,与 MagViT-v2 首帧空间特化一致

② Feature Cache — chunk 划分与 CausalConv3d

仓库常量 CACHE_T = 2wan/modules/vae.py)。每个 CausalConv3d 在 encoder/decoder 中各占用 cache 数组的一个槽位;chunk 切换时 cache 在层间传递,chunk 内按层顺序更新。

# wan/modules/vae.py — CausalConv3d.forward(核心) def forward(self, x, cache_x=None): # 时间维只在左侧 pad;cache_x 来自上一 chunk 末 2 帧 if cache_x is not None: x = torch.cat([cache_x, x], dim=2) # 时间维 concat x = F.pad(x, causal_padding) # 首 chunk 等价零 pad return Conv3d(x) # WanVAE_.encode — chunk 循环(注释原文:1、4、4、4…) t = x.shape[2] iter_ = 1 + (t - 1) // 4 for i in range(iter_): if i == 0: chunk = x[:, :, :1, :, :] else: chunk = x[:, :, 1+4*(i-1) : 1+4*i, :, :] out_i = encoder(chunk, feat_cache=_enc_feat_map, feat_idx=_enc_conv_idx) out = concat_time(out, out_i) # ResidualBlock 内:每层 conv 后 feat_cache[idx] = x[:,:,-CACHE_T:].clone()

时间下采样 downsample3d 分支:cache 仅保留末 1 帧,且 time_conv(cat(cache_last_frame, x)) —— 对应论文 Fig.(b)。上采样 upsample3d 对称维护 cache,解码时时间维逐 latent 步展开。

③ WanVAE 推理 API

# wan/modules/vae.py — WanVAE 封装(简化) class WanVAE: def encode(self, videos): # list of [C, T, H, W] return [self.model.encode(u.unsqueeze(0), self.scale).squeeze(0) for u in videos] def decode(self, zs): return [self.model.decode(u.unsqueeze(0), self.scale).clamp_(-1, 1).squeeze(0) for u in zs] # model.encode 内部:clear_cache() → chunk 循环 → clear_cache()

每次 encode/decode 结束调用 clear_cache() 重置 _enc_feat_map / _feat_map。训练三阶段(2D→3D→GAN)未开源

④ WanModel — T2V / I2V 分支

# wan/modules/model.py — 构造与 I2V forward 要点 cross_attn_type = 't2v_cross_attn' if model_type == 't2v' else 'i2v_cross_attn' if model_type in ('i2v', 'flf2v'): self.img_emb = MLPProj(1280, dim) # CLIP 视觉 token def forward(self, x, t, context, seq_len, clip_fea=None, y=None): if y is not None: x = [torch.cat([u, v], dim=0) for u, v in zip(x, y)] # channel 拼条件 latent+mask if clip_fea is not None: context = torch.concat([self.img_emb(clip_fea), context], dim=1)

对应论文 I2V:$z_t$、$z_c$、mask 沿 channel 拼接;CLIP 特征经 decoupled cross-attn(I2V 双路 attn 再相加)。

⑤ Flow Matching 推理采样

# wan/text2video.py — CFG + UniPC(简化) for t in timesteps: pred_c = model(latents, t=t, context=context, seq_len=seq_len)[0] pred_u = model(latents, t=t, context=context_null, seq_len=seq_len)[0] pred = pred_u + guide_scale * (pred_c - pred_u) latents = [scheduler.step(pred, t, latents[0], ...)[0].squeeze(0)] videos = vae.decode(latents) # x0 = sample - sigma * flow_pred

训练目标 $\mathcal{L}=\mathbb{E}\|u_\theta(x_t,c,t)-v_t\|^2$,$x_t=t x_1+(1-t)x_0$,$v_t=x_1-x_0$(Rectified Flow)——实现未公开,repo 仅有 prediction_type="flow_prediction" 采样侧。

⑥ 1.3B vs 14B 规模(config)

1.3B T2V14B T2V/I2V
dim15365120
num_layers3040
num_heads1240
文本编码UMT5-XXL encoder(512 token)
典型分辨率480×832720×1280 / 480×832
flowchart LR
  T[Prompt] --> T5[UMT5 encode]
  N[Gaussian noise] --> DIT[WanModel DiT]
  T5 --> DIT
  DIT --> Z[Latent x0]
  Z --> VAE[Wan-VAE decode]
  VAE --> V[Video MP4]

3. Training — Flow Matching & Curriculum

原文翻译解析

Flow matching objective (RF): sample $t \sim \text{logit-normal}$, $x_t = t x_1 + (1-t)x_0$, target velocity $v_t = x_1 - x_0$, minimize $\|u_\theta(x_t,c_{\text{txt}},t) - v_t\|^2$ (Eq. rf_loss).

Pre-training: 14B starts with 256px T2I (cross-modal alignment) → joint image-video stages: (1) 256px image + 192px 5s video; (2) 480px; (3) 720px 5s clips. Avoids OOM from 81-frame 720p direct training.

Post-training: same architecture, init from pre-train ckpt, 480/720 on curated post-train set. Optimizer: AdamW, bf16, lr $10^{-4}$ with FID/CLIP plateau decay.

Flow Matching:logit-normal 采样 $t$,线性插值 $x_t$,回归速度场 $v_t=x_1-x_0$,MSE 损失。

预训练:14B 先 256px 文生图 → 三阶段图文联合(256→480→720)。避免直接 81 帧 720p OOM。

后训练:同架构微调高质量数据;AdamW bf16。

训练策略
  • 与 SD3 同族:RF + logit-normal $t$ 采样。
  • 与 CogVideoX 差异:Wan 强调先 T2I 再视频分辨率课程;CogVideoX 用 frame pack + 两阶段 VAE/DiT。
  • 复现:训练细节在报告内,代码未开源 → 见 #code 仅推理路径。

4. Data Processing Pipeline

原文翻译解析

Principles: high quality, diversity, scale — billions of images/videos. Four-step cleaning: fundamental filters (OCR ratio, LAION aesthetic, NSFW, watermark, black border, overexposure, synthetic-image detector, blur, duration/resolution) remove ~50% candidates.

Semantic stage: motion quality, visual text mining, dense captioning (similar spirit to CogVideoX/Hunyuan — report details OCR-for-text-in-video pipeline).

原则:高质量、多样性、规模——十亿级图文视频。四步清洗:OCR 文字占比、美学、NSFW、水印、黑边、过曝、合成图检测、模糊、时长分辨率等,剔除约 50%。

语义阶段:运动质量、视觉文字挖掘、dense caption——与 CogVideoX 同类数据工程。

数据即模型

「视频内中英文文字」能力依赖视觉文字数据挖掘 + umT5 多语编码,不仅是 DiT 架构创新。

5. Experiments — Wan-Bench

原文翻译解析

Wan-Bench: automated metrics aligned with human preferences — dynamic quality, image quality, instruction following (13+ dimensions in Table).

1035 prompts × models; Wan 14B weighted score 0.724 beats open models and CN-TopA (0.693); competitive with Sora (0.700) on reported table. Human eval 700+ tasks: 14B wins on visual/motion/matching dimensions vs commercial baselines.

Wan-Bench:与人偏好对齐的自动评测(动态、画质、指令遵循等 13 维)。

1035 prompt 公平对比;Wan 14B 加权 0.724 超开源与 CN-TopA;与 Sora 0.700 可比。人类评测 700+ 任务:14B 在视觉/运动/匹配维度领先。

实验
模型Weighted Score备注
Sora0.700闭源
CN-TopA0.693商业
Wan 14B0.724报告最优
Wan 1.3B0.689接近 Top 商业
HunyuanVideo0.673开源
Mochi0.639开源

自研 benchmark + 自评存在博弈风险;交叉外部 VBench 读者需自行核对。

📄 原文:Wan-Bench 维度示意

Wan-Bench dimensions
Wan-Bench 多维度评测框架(动态、物理、文字、相机等)。点击放大。

6. Extended Applications

原文翻译解析

I2V: condition image as first frame; zero-padded future frames → VAE latent $z_c$; binary mask $M$; channel-concat $[z_t, z_c, m]$ into DiT; CLIP global context via decoupled cross-attention. Unified mask training for continuation, first-last-frame, interpolation.

Report also covers: video editing (VACE), T2I, personalization, camera motion control, real-time streaming, audio (V2A) — each with dedicated section & figures.

I2V:首帧条件 + 零填充未来帧 → $z_c$;mask $M$ 与 $z_t$ channel 拼接进 DiT;CLIP 全局 context。统一 mask 训练支持续写、首尾帧、插帧。

另含:视频编辑、T2I、个性化、相机控制、实时流式、音频生成等 8+ 任务章节。

多任务

基础 T2V 权重 + 任务特定微调/adapter — 开源 repo 含 WanI2VWanVaceWanFLF2V 等入口。

📄 原文 Figure:Wan-I2V 框架

Wan I2V framework
I2V:mask 机制区分保留帧与生成帧,可扩展至续写/首尾帧。点击放大。

7. Limitation & Conclusion

原文翻译解析

Limitations: large-motion fine detail still hard; 14B inference ~30 min/GPU without optimization; domain-specific (education/medical) weak.

Conclusion: open Wan-VAE + DiT + data + Wan-Bench + 1.3B/14B; plan to scale data & model further.

局限:大运动细节仍难;14B 单卡推理约 30 分钟;垂直领域不足。

结论:全栈开源推动社区;1.3B democratize 创作;持续 scaling。

诚实边界

报告自承效率瓶颈 — 与「消费级 1.3B」叙事形成产品分层:轻量推理 vs 质量旗舰 14B。

符号速查表

符号含义
$V$输入视频 $(1{+}T)\times H\times W\times 3$
$x_1$干净 latent(VAE 编码)
$x_0$标准高斯噪声
$x_t$Flow 插值 $t x_1 + (1-t)x_0$
$v_t$真速度 $x_1 - x_0$
$c_{\text{txt}}$umT5 文本 embedding(512 token)
$u_\theta$DiT 预测速度场
$z_c, M$I2V 条件 latent 与二值 mask

论证结构总览

开源 gap(性能/能力/效率)→ Wan-VAE + DiT + Flow + 数据 + Wan-Bench → 1.3B/14B + 8 任务 → 全栈开源

核心主张(一句话)

在 DiT+Flow 主线上用小 VAE、大 DiT、万亿 token 数据、自动评测把开源视频生成推到可与闭源竞争,并以 1.3B 降低门槛。

论证最强处:全链路透明(VAE 设计/cache、训练课程、Wan-Bench、多任务);1.3B 8.19GB 可复现;视频内中英文文字差异化能力。
论证最弱处:训练未开源;Wan-Bench 自研自评;14B 推理成本仍高;与 Wan2.2 等同系列后续版本需区分。

🧩 结构化十问(AI 解构)

据 arXiv:2503.20314 技术报告回答。

Q1 · 论文试图解决什么问题?
缩小开源视频模型与闭源 Sora 等在性能、多任务能力、推理效率上的差距;提供可复现的全栈基础模型(§1)。
Q2 · 这是否是一个新问题?
T2V 基础模型非新;新在全报告级开源(VAE+DiT+数据流水线+评测+8 任务)+ 视频内中英文视觉文字 + 1.3B 消费级规格并存。
Q3 · 要验证什么科学假设?
DiT+Flow Matching 在十亿级图文视频上存在 scaling law;Wan-VAE 4×8×8 可在质量/速度间优于 Hunyuan/CogVideoX 同级 VAE;umT5 + 数据清洗可提升指令与文字生成(§4, §5)。
Q4 · 相关研究如何归类?
Sora/HunyuanVideo/CogVideoX/Mochi(DiT 视频);SD3(Flow Matching);MagViT/Wan-VAE 因果 3D VAE 线。Wan 定位开源全集而非单点架构突破。
Q5 · 解决方案的关键是什么?
① Wan-VAE(127M、cache、4×8×8);② 14B DiT + RF 训练课程;③ 千亿级数据四步清洗 + dense caption;④ Wan-Bench 对齐人类偏好;⑤ 1.3B 蒸馏式小模型布局(§4–5)。
Q6 · 实验是如何设计的?
Wan-Bench 1035 prompt × 多模型自动打分(13 维加权);700+ 人类评测任务;VAE PSNR/latency 对比 200 视频;消融 adaLN 共享 MLP、文本编码器选择(§4.7, §4.1)。
Q7 · 数据集与代码是否开源?
数据公开原始集;处理流程在报告描述。代码+权重:Wan-Video/Wan2.1(推理);训练代码未开源。
Q8 · 结果是否支持假设?
较好支持:14B Wan-Bench 加权 0.724 领先表内开源与 CN-TopA;1.3B 0.689 仍强。但 benchmark 自研、闭源 Sora 测试协议不透明,需谨慎解读「全面超越」。
Q9 · 主要贡献是什么?
开源 Wan2.1 全系列;Wan-VAE 与训练/数据/评测方法论公开;1.3B 低显存 T2V;视频内中英文文字;I2V/编辑/个性化等扩展验证基础模型泛化。
Q10 · 下一步工作?
作者:继续 scaling 数据与模型、优化 14B 推理、社区垂直领域适配。社区:Wan2.2 已发布同报告 arXiv 线;蒸馏/少步采样、训练复现仍是空白。

🔬 深挖追问

第一性原理 · Flow vs DDPM

Wan 与 SD3/Hunyuan 同选 Rectified Flow:直线路径 $x_t=t x_1+(1-t)x_0$ 比 VP 扩散少步采样退化更慢 — 工程上与 DiT 大规模训练配套。

第一性原理 · 小 VAE 大 DiT

127M VAE 把算力留给 14B DiT;feature cache 解决因果 3D 长序列推理 — 与「把压缩做激进、DiT 吃 token」的 Sora 叙事一致,但参数分配更透明。

第一性原理 · 开源 vs 报告

推理开源 + 训练闭源 = 半复现:可验证生成质量与 I2V 拼接逻辑,难复现 Wan-Bench 分数与 scaling 曲线。

批判性思维 · 盲区

  • Wan-Bench 闭环:自研 prompt + 自研 scorer + 自家模型领先,需第三方 benchmark 交叉验证。
  • 列表混淆:Wan2.1/Wan2.2 共享同一 arXiv PDF — 读 list 时须看 repo 分支与 checkpoint 版本。
  • 30min/14B:与 1.3B「消费级」并存,实际创作仍可能只用小模型或云 API。
  • 数据合规:十亿级内部+公开视频,版权与 opt-out 未展开。
  • 视觉文字:能力突出但 OCR 过滤与文字生成数据比例未量化,难评估泛化边界。

📎 延伸阅读 · 外部解读

社区或第三方对 Wan2.1 的拆解、复现与观点文章。与本文精读(论文 + 官方 repo)互补;链接内容非官方,仅供对照阅读。

有新文章可在本页 #refs-external 追加 <li>;建议标注来源平台与简要说明。