Diffusers Pipeline 调用 Wan2.2:几行代码集成到你的项目
安装最新版 Diffusers
Diffusers 对 Wan2.2 的支持是在新版本里加的,先升级:
pip install diffusers --upgrade
pip install accelerate transformers safetensors sentencepiece
TI2V-5B 文生视频最简示例
TI2V-5B 是 Diffusers 里最容易上手的 Wan2.2 模型:
import torch
from diffusers import WanPipeline
from diffusers.utils.export_utils import export_to_video
device = "cuda"
dtype = torch.bfloat16
pipe = WanPipeline.from_pretrained(
"Wan-AI/Wan2.2-TI2V-5B-Diffusers",
torch_dtype=dtype
).to(device)
prompt = "Two anthropomorphic cats in boxing gear fight on a spotlighted stage."
video = pipe(prompt=prompt, num_inference_steps=50).frames[0]
export_to_video(video, "output.mp4", fps=24)
I2V 图像条件生成
同一个 Pipeline 也支持图生——只要传 image 参数:
from diffusers import WanImageToVideoPipeline
from diffusers.utils import load_image
pipe = WanImageToVideoPipeline.from_pretrained(
"Wan-AI/Wan2.2-TI2V-5B-Diffusers",
torch_dtype=torch.bfloat16
).to(device)
image = load_image("参考图.jpg")
video = pipe(
prompt="A cat wearing sunglasses sits on a surfboard.",
image=image,
num_inference_steps=50
).frames[0]
export_to_video(video, "i2v_output.mp4", fps=24)
A14B MoE 模型的 Diffusers 版本
MoE 模型在 Diffusers 里同样需要加载两份专家权重,但 Pipeline 会自动处理切换逻辑——你只需要加载对的 Diffusers 后缀的权重仓库:
# 这是 MoE 版本
pipe = WanPipeline.from_pretrained(
"Wan-AI/Wan2.2-T2V-A14B-Diffusers", # 注意 A14B + Diffusers 后缀
torch_dtype=torch.bfloat16
).to(device)
Pipeline 内部会自动处理高噪/低噪专家的加载和 SNR 切换。
Animate-14B 的 Diffusers Pipeline
Animate-14B 相对特殊,它的 Pipeline 是 WanAnimatePipeline,需要 mode 参数区分动画/替换:
from diffusers import WanAnimatePipeline
from diffusers.utils import load_image, load_video
pipe = WanAnimatePipeline.from_pretrained(
"Wan-AI/Wan2.2-Animate-14B-Diffusers",
torch_dtype=torch.bfloat16
).to(device)
# Animation 模式:角色图 + 动作参考视频 → 新角色复现动作
animate_video = pipe(
image=load_image("角色.png"),
pose_video=load_video("参考动作.mp4"),
face_video=load_video("面部参考.mp4"),
prompt="People in the video are doing actions.",
mode="animate",
segment_frame_length=77,
prev_segment_conditioning_frames=1,
guidance_scale=1.0,
num_inference_steps=20,
).frames[0]
export_to_video(animate_video, "animate.mp4", fps=30)
显存管理小技巧
enable_model_cpu_offload():把不活跃的组件卸载到 CPU,显存不够时必开enable_vae_slicing():VAE 解码时分块处理,降显存torch.compile():PyTorch 2.x 可用,加速推理(需要 Linux + Triton)num_inference_steps:降到 20~25 步通常质量损失不大,但速度翻倍
pipe.enable_model_cpu_offload()
pipe.enable_vae_slicing()