结论前置:vLLM-Omni 原生内置 Wan2.2-TI2V-5B 专属推理管线,原生兼容官方 Diffusers 格式权重 + Kijai 社区 FP8 量化版权重,支持文生视频 (T2V)+ 图生视频 (I2V) 双模式,自带 Cache-DiT 缓存加速、分层卸载、多卡 TP 并行,推理速度远快于原生 Diffusers,FP8 可把显存压到10~14GB,16G 显卡无压力跑 720P 视频DeepWiki。
一、环境硬性依赖
1. 版本要求
- CUDA ≥ 12.1
- PyTorch ≥ 2.4
- vLLM ≥ 0.12.0
- vllm-omni 拉取最新 main 分支
2. 一键安装环境
bash
运行
# 新建纯净虚拟环境
conda create -n vllm-omni python=3.12 -y
conda activate vllm-omni
# 安装基础vLLM
pip install vllm==0.12.0 torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# 安装vllm-omni主项目
pip install git+https://github.com/vllm-project/vllm-omni.git
二、两种权重部署方案(原版 FP16 / FP8 量化)
方案 A:直接拉取 HuggingFace 在线权重(最简单)
模型 ID 直接填写:
plaintext
Wan-AI/Wan2.2-TI2V-5B-Diffusers
vLLM-Omni 会自动拉取transformer、text_encoder、vae全套官方权重,无需手动拆分文件。
方案 B:本地 FP8 量化权重部署(推荐,省显存)
1. 下载 FP8 三套文件放到同目录
plaintext
./wan2.2-ti2v-5b-fp8/
├─ transformer/
│ └─ wan2.2_ti2v_5b_fp8_scaled.safetensors
├─ text_encoder/
│ └─ umt5_xxl_fp8_e4m3fn_scaled.safetensors
├─ vae/
│ └─ wan2.2_vae.safetensors
└─ model_index.json # 从官方仓库复制即可
FP8 权重源:kijai/Wan2.2-TI2V-5B-FP8
2. 启动时指定本地文件夹路径作为model参数即可。
三、离线推理基础调用(Python API)
① 纯文生视频 T2V
python
运行
from vllm_omni import Omni
# 加载模型,本地FP8文件夹填路径,在线直接填HF模型名
omni = Omni(
model="./wan2.2-ti2v-5b-fp8",
# 单卡显存不足开启分层卸载
enable_layerwise_offload=True,
# 开启Cache-DiT大幅提速
enable_cache_dit=True,
# FP8权重自动识别加载,无需额外参数
)
prompt = "雨天城市街道,镜头缓慢推进,电影质感,细腻光影"
negative_prompt = "模糊、扭曲、水印、低画质、画面闪烁"
frames = omni.generate(
prompt=prompt,
negative_prompt=negative_prompt,
height=704,
width=1280,
num_frames=120, # 24fps × 5秒
num_inference_steps=30,
guidance_scale=6.0,
fps=24
)
# 导出MP4
from diffusers.utils import export_to_video
export_to_video(frames, "t2v_fp8_out.mp4", fps=24)
② 图生视频 I2V(TI2V 原生支持)
python
运行
from vllm_omni import Omni
from PIL import Image
omni = Omni(model="./wan2.2-ti2v-5b-fp8")
img = Image.open("input.jpg").convert("RGB")
frames = omni.generate(
prompt="画面花朵随风缓缓摆动,花瓣飘落",
image=img,
height=704,
width=1280,
num_frames=120,
num_inference_steps=30
)
export_to_video(frames, "i2v_fp8_out.mp4", fps=24)
四、命令行一键运行脚本(仓库自带)
进入 vllm-omni 根目录,使用官方示例脚本:
文生视频命令
bash
运行
python examples/offline_inference/text_to_video/text_to_video.py \
--model Wan-AI/Wan2.2-TI2V-5B-Diffusers \
--prompt "A cat walking on grass" \
--height 704 --width 1280 \
--num-frames 120 --num-inference-steps 30 \
--fps 24 --output t2v.mp4
图生视频命令
bash
运行
python examples/offline_inference/image_to_video/image_to_video.py \
--model ./wan2.2-ti2v-5b-fp8 \
--image test.jpg \
--prompt "object slowly rotate" \
--height 704 --width 1280 \
--num-frames 120 --output i2v.mp4
五、FP8 关键显存优化参数(必开)
表格
| 参数 | 作用 |
|---|---|
enable_cache_dit=True |
Cache-DiT 缓存去冗余计算,速度提升 2~4 倍 |
enable_layerwise_offload=True |
显存不够时分层 CPU 卸载,12G 显卡可运行 |
dtype="auto" |
自动识别文件夹内 FP8 权重并以 FP8 加载 |
tensor_parallel_size=2 |
双卡 4090 开启 TP 并行,均分权重与显存 |
双卡并行示例
python
运行
omni = Omni(
model="./wan2.2-ti2v-5b-fp8",
tensor_parallel_size=2,
enable_cache_dit=True
)
六、HTTP API 服务化部署(对外接口)
vLLM-Omni 支持启动 OpenAI 兼容接口服务:
bash
运行
python -m vllm_omni.entrypoints.api_server \
--model ./wan2.2-ti2v-5b-fp8 \
--port 8000 \
--host 0.0.0.0
之后可通过 POST 请求http://ip:8000/v1/generate传入提示词、图片、分辨率生成视频。
七、常见坑与排查
- FP8 加载报错类型不匹配 务必使用Kijai 标准化 scaled FP8 权重,原生 torchao 未缩放 FP8 vLLM-Omni 无法兼容。
- VAE 花屏 必须使用官方原版
wan2.2_vae.safetensors,不能混用 14B 模型 VAE。 - CUDA out of memory 开启
enable_layerwise_offload;降低分辨率 / 帧数;启用 TP 多卡拆分。 - 版本过旧找不到 Wan2.2 管线 删除旧 vllm-omni,重新
pip install git+xxx拉取最新代码。
八、硬件显存参考(704×1280 120 帧)
- FP16 原版:21~24GB → 仅 24G 显卡可裸跑
- FP8 量化 + Cache-DiT:11~15GB → 16G 4080S/4070Ti Super 稳定运行
- FP8 + 分层卸载:9~12GB → 12G 3090/4070 可勉强运行
正文完
可以使用微信扫码关注公众号(ID:xzluomor)