模型简介
模型特点
模型能力
使用案例
许可证:apache-2.0
语言:
- 英文
- 中文
任务标签:图像转视频
库名称:diffusers
标签: - 视频
- 视频生成
万2.1
💜 万    |    🖥️ GitHub    |   🤗 Hugging Face   |   🤖 ModelScope   |    📑 论文(即将发布)    |    📑 博客    |   💬 微信群   |    📖 Discord  
在本仓库中,我们推出了万2.1,这是一套全面开放的视频基础模型,旨在突破视频生成的边界。万2.1具有以下核心特点:
- 👍 顶尖性能:万2.1在多个基准测试中持续超越现有开源模型和商业解决方案。
- 👍 支持消费级GPU:T2V-1.3B模型仅需8.19GB显存,兼容几乎所有消费级GPU。在RTX 4090上生成5秒480P视频仅需约4分钟(未使用量化等优化技术),性能媲美部分闭源模型。
- 👍 多任务支持:万2.1在文本转视频、图像转视频、视频编辑、文本转图像及视频转音频等任务中表现卓越。
- 👍 视觉文本生成:万2.1是首个支持中英文文本生成的视频模型,具备强大的文本生成能力,增强了实际应用价值。
- 👍 高效视频VAE:万-VAE在编码和解码任意长度的1080P视频时保持时间信息完整,成为视频与图像生成的理想基础。
本仓库包含我们的I2V-14B模型,可生成720P高清视频。经过数千轮人工评估,该模型在闭源和开源方案中均表现优异,达到业界领先水平。
视频演示
🔥 最新动态!!
- 2025年2月25日:👋 我们发布了万2.1的推理代码和权重。
📑 待办清单
- 万2.1文本转视频
- [x] 14B和1.3B模型的多GPU推理代码
- [x] 14B和1.3B模型的检查点
- [x] Gradio演示
- [x] Diffusers集成
- [ ] ComfyUI集成
- 万2.1图像转视频
- [x] 14B模型的多GPU推理代码
- [x] 14B模型的检查点
- [x] Gradio演示
- [x] Diffusers集成
- [ ] ComfyUI集成
快速开始
安装
克隆仓库:
git clone https://github.com/Wan-Video/Wan2.1.git
cd Wan2.1
安装依赖:
# 确保torch >= 2.4.0
pip install -r requirements.txt
模型下载
模型 | 下载链接 | 备注 |
---|---|---|
T2V-14B | 🤗 Huggingface 🤖 ModelScope | 支持480P和720P |
I2V-14B-720P | 🤗 Huggingface 🤖 ModelScope | 支持720P |
I2V-14B-480P | 🤗 Huggingface 🤖 ModelScope | 支持480P |
T2V-1.3B | 🤗 Huggingface 🤖 ModelScope | 支持480P |
💡提示:1.3B模型可生成720P视频,但由于该分辨率训练数据有限,效果稳定性通常不如480P。建议优先使用480P分辨率。
使用🤗 huggingface-cli下载模型:
pip install "huggingface_hub[cli]"
huggingface-cli download Wan-AI/Wan2.1-I2V-14B-720P-Diffusers --local-dir ./Wan2.1-I2V-14B-720P-Diffusers
使用🤖 modelscope-cli下载模型:
pip install modelscope
modelscope download Wan-AI/Wan2.1-I2V-14B-720P-Diffusers --local_dir ./Wan2.1-I2V-14B-720P-Diffusers
运行图像转视频生成
与文本转视频类似,图像转视频也分为带提示扩展和不带提示扩展的流程。具体参数及对应设置如下:
任务 | 分辨率 | 模型 | |
---|---|---|---|
480P | 720P | ||
i2v-14B | ❌ | ✔️ | 万2.1-I2V-14B-720P |
i2v-14B | ✔️ | ❌ | 万2.1-T2V-14B-480P |
(1) 不带提示扩展
- 单GPU推理
python generate.py --task i2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-I2V-14B-720P --image examples/i2v_input.JPG --prompt "夏日海滩度假风格,一只戴太阳镜的白猫坐在冲浪板上。这只毛茸茸的猫咪以放松的表情直视镜头。模糊的海滩背景展现了清澈的海水、远处的青山和点缀着白云的蓝天。猫咪自然放松的姿态仿佛在享受海风和温暖的阳光。特写镜头突出了猫咪的精致细节和海边的清新氛围。"
💡对于图像转视频任务,
size
参数代表生成视频的区域面积,宽高比遵循原始输入图像的比例。
- 使用FSDP + xDiT USP进行多GPU推理
pip install "xfuser>=0.4.1"
torchrun --nproc_per_node=8 generate.py --task i2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-I2V-14B-720P --image examples/i2v_input.JPG --dit_fsdp --t5_fsdp --ulysses_size 8 --prompt "夏日海滩度假风格,一只戴太阳镜的白猫坐在冲浪板上。这只毛茸茸的猫咪以放松的表情直视镜头。模糊的海滩背景展现了清澈的海水、远处的青山和点缀着白云的蓝天。猫咪自然放松的姿态仿佛在享受海风和温暖的阳光。特写镜头突出了猫咪的精致细节和海边的清新氛围。"
万模型也可直接通过🤗 Diffusers运行!
import torch
import numpy as np
from diffusers import AutoencoderKLWan, WanImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
from transformers import CLIPVisionModel
# 可用模型:Wan-AI/Wan2.1-I2V-14B-480P-Diffusers, Wan-AI/Wan2.1-I2V-14B-720P-Diffusers
model_id = "Wan-AI/Wan2.1-I2V-14B-720P-Diffusers"
image_encoder = CLIPVisionModel.from_pretrained(model_id, subfolder="image_encoder", torch_dtype=torch.float32)
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
pipe = WanImageToVideoPipeline.from_pretrained(model_id, vae=vae, image_encoder=image_encoder, torch_dtype=torch.bfloat16)
pipe.to("cuda")
image = load_image(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
)
max_area = 720 * 1280
aspect_ratio = image.height / image.width
mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
image = image.resize((width, height))
prompt = (
"宇航员从蛋中孵化,月球表面,深邃黑暗的太空作为背景。高质量、超现实细节,令人惊叹的电影级镜头。"
)
negative_prompt = "明亮色调、过曝、静态、模糊细节、字幕、风格化作品、绘画、图像、静态、整体灰暗、最差质量、低质量、JPEG压缩痕迹、丑陋、不完整、多余手指、手部绘制差、面部绘制差、变形、畸形、肢体扭曲、手指融合、静止画面、杂乱背景、三条腿、背景多人、倒走"
output = pipe(
image=image, prompt=prompt, negative_prompt=negative_prompt, height=height, width=width, num_frames=81, guidance_scale=5.0
).frames[0]
export_to_video(output, "output.mp4", fps=16)
(2) 使用提示扩展
使用Qwen/Qwen2.5-VL-7B-Instruct
运行本地提示扩展:
python generate.py --task i2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-I2V-14B-720P --image examples/i2v_input.JPG --use_prompt_extend --prompt_extend_model Qwen/Qwen2.5-VL-7B-Instruct --prompt "夏日海滩度假风格,一只戴太阳镜的白猫坐在冲浪板上。这只毛茸茸的猫咪以放松的表情直视镜头。模糊的海滩背景展现了清澈的海水、远处的青山和点缀着白云的蓝天。猫咪自然放松的姿态仿佛在享受海风和温暖的阳光。特写镜头突出了猫咪的精致细节和海边的清新氛围。"
使用dashscope
运行远程提示扩展:
DASH_API_KEY=your_key python generate.py --task i2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-I2V-14B-720P --image examples/i2v_input.JPG --use_prompt_extend --prompt_extend_method 'dashscope' --prompt "夏日海滩度假风格,一只戴太阳镜的白猫坐在冲浪板上。这只毛茸茸的猫咪以放松的表情直视镜头。模糊的海滩背景展现了清澈的海水、远处的青山和点缀着白云的蓝天。猫咪自然放松的姿态仿佛在享受海风和温暖的阳光。特写镜头突出了猫咪的精致细节和海边的清新氛围。"
(3) 运行本地gradio
cd gradio
# 如果仅使用480P模型
DASH_API_KEY=your_key python i2v_14B_singleGPU.py --prompt_extend_method 'dashscope' --ckpt_dir_480p ./Wan2.1-I2V-14B-480P
# 如果仅使用720P模型
DASH_API_KEY=your_key python i2v_14B_singleGPU.py --prompt_extend_method 'dashscope' --ckpt_dir_720p ./Wan2.1-I2V-14B-720P
# 如果同时使用480P和720P模型
DASH_API_KEY=your_key python i2v_14B_singleGPU.py --prompt_extend_method 'dashscope' --ckpt_dir_480p ./Wan2.1-I2V-14B-480P --ckpt_dir_720p ./Wan2.1-I2V-14B-720P
人工评估
我们进行了广泛的人工评估来衡量图像转视频模型的性能,结果如下表所示。数据清晰表明万2.1在闭源和开源模型中均表现最优。

不同GPU上的计算效率
我们在下表中测试了不同万2.1模型在不同GPU上的计算效率。结果以**总耗时(秒)/峰值GPU内存(GB)**的格式呈现。

本表测试的参数设置如下: (1) 对于8GPU上的1.3B模型,设置
--ring_size 8
和--ulysses_size 1
; (2) 对于1GPU上的14B模型,使用--offload_model True
; (3) 对于单块4090 GPU上的1.3B模型,设置--offload_model True --t5_cpu
; (4) 所有测试均未启用提示扩展功能,即未设置--use_prompt_extend
。
万2.1技术解析
万2.1基于主流扩散Transformer范式设计,通过一系列创新实现了生成能力的重大突破。这些创新包括新颖的时空变分自编码器(VAE)、可扩展训练策略、大规模数据构建和自动化评估指标。这些贡献共同提升了模型的性能和多功能性。
(1) 3D变分自编码器
我们提出了一种专为视频生成设计的3D因果VAE架构——万-VAE。通过结合多种策略,我们改进了时空压缩效率,降低了内存占用,并确保时间因果性。与其他开源VAE相比,万-VAE在性能效率上展现出显著优势。此外,我们的万-VAE能够无损编码和解码无限长度的1080P视频,特别适合视频生成任务。

(2) 视频扩散DiT
万2.1采用主流扩散Transformer范式中的流匹配框架设计。模型架构使用T5编码器处理多语言文本输入,通过每个Transformer块中的交叉注意力将文本嵌入模型结构。此外,我们采用带有线性层和SiLU层的MLP单独处理输入时间嵌入并预测六个调制参数。该MLP在所有Transformer块间共享,每个块学习独特的偏置集。实验表明,这种方法在相同参数规模下能显著提升性能。

模型 | 维度 | 输入维度 | 输出维度 | 前馈维度 | 频率维度 | 头数 | 层数 |
---|---|---|---|---|---|---|---|
1.3B | 1536 | 16 | 16 | 8960 | 256 | 12 | 30 |
14B | 5120 | 16 | 16 | 13824 | 256 | 40 | 40 |





