7.3 KiB
Wan2.2 TI2V 5B — A100 80GB
Single-GPU, native 720p text-to-video and image-to-video serving
Summary
- Vendor: Wan-AI
- Model:
Wan-AI/Wan2.2-TI2V-5B-Diffusers - Task: Unified text-to-video (T2V) and image-to-video (I2V) generation
- Mode: Online serving with the OpenAI-compatible Videos API
- Hardware: 1x NVIDIA A100-SXM4-80GB
- Maintainer: Community
When to use this recipe
Use this recipe to serve both T2V and I2V from one dense 5B checkpoint on one A100 80GB. It qualifies the model's native 720p profile without CPU offload or multi-GPU parallelism. The synchronous endpoint is used below because it returns the MP4 and request timing in one response; the asynchronous Videos API uses the same server and sampling parameters.
Supported model contract
| Task | Required input | Qualified output | Endpoint |
|---|---|---|---|
| T2V | Text prompt; omit input_reference |
1280x704, 121 frames, 24 fps | POST /v1/videos/sync |
| I2V | Text prompt plus one image uploaded as input_reference |
1280x704, 121 frames, 24 fps | POST /v1/videos/sync |
The upstream checkpoint supports both tasks at 720p and 24 fps. For native
landscape 720p, use 1280x704; portrait generation uses 704x1280. Wan video
lengths follow the temporal VAE contract (4k+1 frames). This recipe validates
one output per request with 50 denoising steps and seed 42.
References
- Upstream model card: https://huggingface.co/Wan-AI/Wan2.2-TI2V-5B-Diffusers
- Online T2V example:
examples/online_serving/text_to_video - Online I2V example:
examples/online_serving/image_to_video - Offline I2V example:
examples/offline_inference/image_to_video - Community recipe tracker: vllm-project/vllm-omni#2645
Hardware
- Accelerator model and per-device memory: NVIDIA A100-SXM4-80GB, 81,920 MiB
- Number of devices: 1
- Device interconnect: not applicable to this single-GPU profile
- Host memory: 1 TiB installed on the qualification host; CPU offload was not used
- Qualification scope: BF16, batch size 1, native FlashAttention, eager mode, VAE tiling, T2V and I2V at 1280x704 / 121 frames / 24 fps
Software environment
- OS: Ubuntu 24.04.3 LTS, Linux 6.8.0
- Python: 3.12.3
- NVIDIA driver / host toolkit: 550.127.05 / CUDA 12.8
- PyTorch: 2.13.0+cu129
- Transformers / Diffusers: 5.14.1 / 0.40.0
- vLLM: 0.28.0+cu129
- vLLM-Omni: commit
ff6e906a25de1ca3122c0d0d5250fde5a0ddbc7b
The default vLLM 0.28.0 wheel targets CUDA 13.0. Driver 550 cannot run that variant, so this qualification used the official CUDA 12.9 wheel:
uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install \
'https://github.com/vllm-project/vllm/releases/download/v0.28.0/vllm-0.28.0%2Bcu129-cp38-abi3-manylinux_2_28_x86_64.whl' \
--torch-backend=auto
uv pip install -e .
Command
Start the server from the repository root:
vllm serve Wan-AI/Wan2.2-TI2V-5B-Diffusers \
--omni \
--port 8092 \
--vae-use-tiling \
--enforce-eager
In another terminal, download the public reference image:
wget -O cherry_blossom.jpg \
https://vllm-public-assets.s3.us-west-2.amazonaws.com/vision_model_images/cherry_blossom.jpg
Generate a text-only video:
curl --fail-with-body -D t2v-headers.txt \
-X POST http://127.0.0.1:8092/v1/videos/sync \
-F "prompt=Two anthropomorphic cats in comfortable boxing gear and bright gloves fight intensely on a spotlighted stage, cinematic lighting, smooth motion." \
-F "negative_prompt=blurry, low quality, static, distorted, artifacts, watermark, text" \
-F "width=1280" -F "height=704" \
-F "num_frames=121" -F "fps=24" \
-F "num_inference_steps=50" -F "guidance_scale=5.0" \
-F "flow_shift=5.0" -F "seed=42" \
--output wan22-ti2v-5b-t2v.mp4
Generate an image-conditioned video from the same server:
curl --fail-with-body -D i2v-headers.txt \
-X POST http://127.0.0.1:8092/v1/videos/sync \
-F "input_reference=@cherry_blossom.jpg" \
-F "prompt=Cherry blossoms sway gently in the breeze while petals drift across the path, cinematic, smooth natural motion." \
-F "negative_prompt=blurry, low quality, static, distorted, artifacts, watermark, text" \
-F "width=1280" -F "height=704" \
-F "num_frames=121" -F "fps=24" \
-F "num_inference_steps=50" -F "guidance_scale=5.0" \
-F "flow_shift=5.0" -F "seed=42" \
--output wan22-ti2v-5b-i2v.mp4
Verification
Check both MP4 files with ffprobe:
for video in wan22-ti2v-5b-t2v.mp4 wan22-ti2v-5b-i2v.mp4; do
ffprobe -v error -select_streams v:0 -count_frames \
-show_entries stream=codec_name,width,height,r_frame_rate,nb_read_frames,duration \
-of default=noprint_wrappers=1 "$video"
done
Each file reported:
codec_name=h264
width=1280
height=704
r_frame_rate=24/1
duration=5.041667
nb_read_frames=121
The synchronous response headers and an independent 200 ms nvidia-smi
sampler produced these steady-state results after server warmup:
| Task | HTTP | X-Inference-Time-S |
Server peak | Observed device peak | MP4 size |
|---|---|---|---|---|---|
| T2V | 200 | 288.267 s | 26,546 MB | 27,533 MiB | 7,321,179 bytes |
| I2V | 200 | 299.439 s | 29,766 MB | 30,333 MiB | 15,667,146 bytes |
Both outputs were decoded in full and visually inspected. The T2V output contained the prompted boxing cats. The I2V first frame preserved the uploaded cherry-blossom scene (5.81 mean absolute pixel error after resize and H.264 encoding), and later frames showed motion.
Notes
- Memory usage: model loading used 21.2239 GiB. The measured I2V device peak was 30,333 MiB, leaving more than 50 GiB free on this A100.
--vae-use-tilingis retained in the known-good command even though this profile has ample headroom; it bounds decode memory at 720p.--enforce-eagerremoves graph-compilation variability from the measured profile. Remove it only after separately warming and measuring compiled mode.flow_shift=5.0is the 720p setting. The shared 480p examples use 12.0.- The generated MP4 contains video only; this checkpoint does not generate audio.
- The first request includes neither model-load time nor the server's startup warmup. Server initialization took approximately 26 seconds with a warm cache.
Supported features
| Feature | Status for this profile | Shared guide |
|---|---|---|
| OpenAI-compatible Videos API | Qualified for synchronous T2V and I2V | Videos API |
| VAE tiling | Enabled and qualified on one A100 | VAE parallelism and tiling |
| Cache-DiT / TaylorSeer | Available but not enabled in the measurements above | Cache-DiT |
| TeaCache | Available but not qualified in this recipe | TeaCache |
| CPU or layerwise offload | Not needed for the qualified 80GB profile | CPU offload |
| TP / SP / CFG parallelism | Not applicable to this single-GPU profile | Parallelism overview |