TeaCache4Wan2.1
TeaCache can speedup Wan2.1 2x without much visual quality degradation, in a training-free manner. The following video shows the results generated by TeaCache-Wan2.1 with various teacache_thresh values. The corresponding teacache_thresh values are shown in the following table.
https://github.com/user-attachments/assets/5ae5d6dd-bf87-4f8f-91b8-ccc5980c56ad
https://github.com/user-attachments/assets/dfd047a9-e3ca-4a73-a282-4dadda8dbd43
https://github.com/user-attachments/assets/7c20bd54-96a8-4bd7-b4fa-ea4c9da81562
https://github.com/user-attachments/assets/72085f45-6b78-4fae-b58f-492360a6e55e
📈 Inference Latency Comparisons on a Single A800
| Wan2.1 t2v 1.3B | TeaCache (0.05) | TeaCache (0.07) | TeaCache (0.08) |
|---|---|---|---|
| ~175 s | ~117 s | ~110 s | ~88 s |
| Wan2.1 t2v 14B | TeaCache (0.14) | TeaCache (0.15) | TeaCache (0.2) |
|---|---|---|---|
| ~55 min | ~38 min | ~30 min | ~27 min |
| Wan2.1 i2v 480P | TeaCache (0.13) | TeaCache (0.19) | TeaCache (0.26) |
|---|---|---|---|
| ~735 s | ~464 s | ~372 s | ~300 s |
| Wan2.1 i2v 720P | TeaCache (0.18) | TeaCache (0.2) | TeaCache (0.3) |
|---|---|---|---|
| ~29 min | ~17 min | ~15 min | ~12 min |
Usage
Follow Wan2.1 to clone the repo and finish the installation, then copy 'teacache_generate.py' in this repo to the Wan2.1 repo.
For T2V with 1.3B model, you can use the following command:
python teacache_generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage." --base_seed 42 --offload_model True --t5_cpu --teacache_thresh 0.08
For T2V with 14B model, you can use the following command:
python teacache_generate.py --task t2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-T2V-14B --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage." --base_seed 42 --offload_model True --t5_cpu --teacache_thresh 0.2
For I2V with 480P resolution, you can use the following command:
python teacache_generate.py --task i2v-14B --size 832*480 --ckpt_dir ./Wan2.1-I2V-14B-480P --image examples/i2v_input.JPG --prompt "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside." --base_seed 42 --offload_model True --t5_cpu --teacache_thresh 0.26
For I2V with 720P resolution, you can use the following command:
python teacache_generate.py --task i2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-I2V-14B-720P --image examples/i2v_input.JPG --prompt "Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside." --base_seed 42 --offload_model True --t5_cpu --frame_num 61 --teacache_thresh 0.3
Faster Video Generation Using the use_ret_steps Parameter
Using Retention Steps will result in faster generation speed and better generation quality (except for t2v-1.3B).
https://github.com/user-attachments/assets/f241b5f5-1044-4223-b2a4-449dc6dc1ad7
https://github.com/user-attachments/assets/01db60f9-4aaf-43c4-8f1b-6e050cfa1180
https://github.com/user-attachments/assets/e03621f2-1085-4571-8eca-51889f47ce18
https://github.com/user-attachments/assets/d1340197-20c1-4f9e-a780-31f789af0893
| use_ref_steps | Wan2.1 t2v 1.3B (thresh) | Slow (thresh) | Fast (thresh) |
|---|---|---|---|
| False | ~97 s (0.00) | ~64 s (0.05) | ~49 s (0.08) |
| True | ~97 s (0.00) | ~61 s (0.05) | ~41 s (0.10) |
| use_ref_steps | Wan2.1 t2v 14B (thresh) | Slow (thresh) | Fast (thresh) |
|---|---|---|---|
| False | ~1829 s (0.00) | ~1234 s (0.14) | ~909 s (0.20) |
| True | ~1829 s (0.00) | ~915 s (0.10) | ~578 s (0.20) |
| use_ref_steps | Wan2.1 i2v 480p (thresh) | Slow (thresh) | Fast (thresh) |
|---|---|---|---|
| False | ~385 s (0.00) | ~241 s (0.13) | ~156 s (0.26) |
| True | ~385 s (0.00) | ~212 s (0.20) | ~164 s (0.30) |
| use_ref_steps | Wan2.1 i2v 720p (thresh) | Slow (thresh) | Fast (thresh) |
|---|---|---|---|
| False | ~903 s (0.00) | ~476 s (0.20) | ~363 s (0.30) |
| True | ~903 s (0.00) | ~430 s (0.20) | ~340 s (0.30) |
You can refer to the previous video generation instructions and use the use_ret_steps parameter to speed up the video generation process, achieving results closer to Wan2.1. Simply add the --use_ret_steps parameter to the original command and adjust the --teacache_thresh parameter to achieve more efficient video generation. The value of the --teacache_thresh parameter can be referenced from the table, allowing you to choose the appropriate value based on different models and settings.
Example Command:
python teacache_generate.py --task t2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-T2V-14B --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage." --base_seed 42 --offload_model True --t5_cpu --teacache_thresh 0.3 --use_ret_steps
Acknowledgements
We would like to thank the contributors to the Wan2.1.