license: apache-2.0
language:
- 英文
- 中文
pipeline_tag: 文本生成视频
library_name: diffusers
tags:
- 视频
- 视频生成
万2.1
💜 万    |    🖥️ GitHub    |   🤗 Hugging Face   |   🤖 ModelScope   |    📑 论文(即将发布)    |    📑 博客    |   💬 微信群   |    📖 Discord  
万:开放且先进的大规模视频生成模型
在本仓库中,我们推出了万2.1,这是一套全面开放的视频基础模型,旨在突破视频生成的边界。万2.1具备以下核心特点:
- 👍 顶尖性能:万2.1在多项基准测试中持续超越现有开源模型及商业解决方案。
- 👍 支持消费级GPU:T2V-1.3B模型仅需8.19GB显存,兼容几乎所有消费级显卡。在RTX 4090上(未使用量化等优化技术)约4分钟可生成一段5秒480P视频,性能媲美部分闭源模型。
- 👍 多任务支持:万2.1在文本生成视频、图像生成视频、视频编辑、文本生成图像及视频生成音频等领域表现卓越。
- 👍 视觉文本生成:万2.1是首个支持中英双语文本生成的视频模型,强大的文本生成能力显著提升实用价值。
- 👍 高效视频VAE:万-VAE在编码解码任意长度1080P视频时保持时序信息完整,成为视频/图像生成的理想基础。
本仓库提供T2V-1.3B模型,这款适配消费级GPU的通用视频生成方案,希望成为创意团队的便捷工具,同时为算力有限的学术团队提供高质量基础模型,加速视频创作生态与技术发展。
视频演示
🔥 最新动态!!
- 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
模型下载
💡提示:1.3B模型可生成720P视频,但因该分辨率训练数据有限,效果稳定性不如480P,推荐优先使用480P分辨率。
通过🤗 huggingface-cli下载模型:
pip install "huggingface_hub[cli]"
huggingface-cli download Wan-AI/Wan2.1-T2V-1.3B-Diffusers --local-dir ./Wan2.1-T2V-1.3B-Diffusers
通过🤖 modelscope-cli下载模型:
pip install modelscope
modelscope download Wan-AI/Wan2.1-T2V-1.3B-Diffusers --local_dir ./Wan2.1-T2V-1.3B-Diffusers
运行文本生成视频
本仓库支持两款文本生成视频模型(1.3B与14B)及两种分辨率(480P与720P),参数配置如下:
任务 |
分辨率 |
模型 |
480P |
720P |
t2v-14B |
✔️ |
✔️ |
万2.1-T2V-14B |
t2v-1.3B |
✔️ |
❌ |
万2.1-T2V-1.3B |
(1) 基础版(无提示词扩展)
为简化实现,我们先跳过提示词扩展步骤进行基础推理。
python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --sample_shift 8 --sample_guide_scale 6 --prompt "两只拟人化猫咪穿着舒适拳击装备,戴着鲜艳手套,在聚光灯舞台上激烈搏斗。"
若遇显存不足,可使用--offload_model True
和--t5_cpu
选项降低显存占用。例如在RTX 4090上:
python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --offload_model True --t5_cpu --sample_shift 8 --sample_guide_scale 6 --prompt "两只拟人化猫咪穿着舒适拳击装备,戴着鲜艳手套,在聚光灯舞台上激烈搏斗。"
💡提示:使用T2V-1.3B
模型时,建议设置--sample_guide_scale 6
,--sample_shift
参数可在8至12间调整。
pip install "xfuser>=0.4.1"
torchrun --nproc_per_node=8 generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./万2.1-T2V-1.3B --dit_fsdp --t5_fsdp --ulysses_size 8 --sample_shift 8 --sample_guide_scale 6 --prompt "两只拟人化猫咪穿着舒适拳击装备,戴着鲜艳手套,在聚光灯舞台上激烈搏斗。"
也可直接通过🤗 Diffusers运行万模型!
import torch
from diffusers import AutoencoderKLWan, WanPipeline
from diffusers.utils import export_to_video
model_id = "Wan-AI/Wan2.1-T2V-1.3B-Diffusers"
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
pipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
pipe.to("cuda")
prompt = "一只猫在草地上行走,逼真"
negative_prompt = "明亮色调,过曝,静态,细节模糊,字幕,风格化,作品,绘画,图像,静态,整体发灰,最差质量,低质量,JPEG压缩痕迹,丑陋,不完整,多余手指,手部绘制差,面部绘制差,畸形,变形,肢体错位,手指粘连,静止画面,背景杂乱,三条腿,背景多人,倒走"
output = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
height=480,
width=832,
num_frames=81,
guidance_scale=5.0
).frames[0]
export_to_video(output, "output.mp4", fps=15)
(2) 使用提示词扩展
扩展提示词能有效丰富生成视频细节,进一步提升质量,因此推荐启用。我们提供以下两种扩展方式:
- 使用Dashscope API扩展。
- 提前申请
dashscope.api_key
(英文 | 中文)。
- 通过环境变量
DASH_API_KEY
配置API密钥。国际站用户需额外设置DASH_API_URL
为'https://dashscope-intl.aliyuncs.com/api/v1',详见dashscope文档。
- 文本生成视频任务使用
qwen-plus
模型,图像生成视频任务使用qwen-vl-max
。
- 可通过
--prompt_extend_model
参数修改扩展模型。例如:
DASH_API_KEY=您的密钥 python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./万2.1-T2V-1.3B --prompt "两只拟人化猫咪穿着舒适拳击装备,戴着鲜艳手套,在聚光灯舞台上激烈搏斗" --use_prompt_extend --prompt_extend_method 'dashscope' --prompt_extend_target_lang 'ch'
- 使用本地模型扩展。
- 默认使用HuggingFace上的Qwen模型,用户可根据显存选择。
- 文本生成视频任务可选
Qwen/Qwen2.5-14B-Instruct
、Qwen/Qwen2.5-7B-Instruct
及Qwen/Qwen2.5-3B-Instruct
。
- 图像生成视频任务可选
Qwen/Qwen2.5-VL-7B-Instruct
与Qwen/Qwen2.5-VL-3B-Instruct
。
- 模型越大扩展效果通常越好,但需更多显存。
- 通过
--prompt_extend_model
参数可指定本地模型路径或Hugging Face模型。例如:
python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./万2.1-T2V-1.3B --prompt "两只拟人化猫咪穿着舒适拳击装备,戴着鲜艳手套,在聚光灯舞台上激烈搏斗" --use_prompt_extend --prompt_extend_method 'local_qwen' --prompt_extend_target_lang 'ch'
(3) 运行本地gradio
cd gradio
# 使用Dashscope API扩展提示词
DASH_API_KEY=您的密钥 python t2v_1.3B_singleGPU.py --prompt_extend_method 'dashscope' --ckpt_dir ./万2.1-T2V-1.3B
# 使用本地模型扩展提示词
python t2v_1.3B_singleGPU.py --prompt_extend_method 'local_qwen' --ckpt_dir ./万2.1-T2V-1.3B