Official implementation of CA-ToMe for stable diffusion models
Project description
Cached Adaptive Token Merging for Stable Diffusion 🎨✨
This is the official implementation of Cached Adaptive Token Merging: Dynamic Token Reduction and Redundant Computation Elimination in Diffusion Model
Omid Saghatchian, Atiyeh Gh. Moghadam, Ahmad Nickabadi
CA-ToMe for Stable Diffusion 🚀🎨
Cached Adaptive Token Merging (CA-ToMe) combines two techniques to reduce spatial and temporal redundancy in diffusion models. 🌟
- Adaptive Token Merging: Merges redundant tokens based on their similarity at each step, controlled by a threshold. 🔗
- Caching Mechanism: Leverages temporal redundancy by storing similar pairs across adjacent steps. 🔐
This training-free method achieves a speedup factor of 1.24x during the denoising process while maintaining the same FID scores as existing approaches. 💡
It can be applied to any diffusion model with transformer blocks, including Stable Diffusion models from the Diffusers library. 🛠️
Results 📊
Performance without Caching ⚡
Here are the results of time (seconds) and FID for different thresholds using Stable Diffusion v1.5 on a V100 GPU with 50 PLMS steps:
| Method | T | FID ↓ | Time (s/im) ↓ |
|---|---|---|---|
| Baseline (Original Model) | 1.0 | 34.23 | 7.51 |
| (w/Adaptive Merging) | 0.9 | 33.42 | 6.92 (1.08x faster) |
| 0.8 | 33.80 | 6.58 (1.14x faster) | |
| 0.7 | 34.30 | 6.23 (1.20x faster) | |
| 0.6 | 35.56 | 6.10 (1.23x faster) | |
| 0.5 | 35.46 | 6.07 (1.23x faster) | |
| 0.4 | 35.28 | 6.07 (1.23x faster) |
Performance with Caching 🔐⚡
| Method | T | Caching Config | FID ↓ | Time (s/im) ↓ |
|---|---|---|---|---|
| Baseline (Original Model) | - | - | 33.66 | 7.61 |
| CA-ToMe | 0.7 | [0, 1, 2, 3, 5, 10, 15, 25, 35] | 36.14 | 6.18 (1.23x faster) |
| 0.7 | [0, 10, 11, 12, 15, 20, 25, 30, 35, 45] | 34.33 | 6.13 (1.24x faster) | |
| 0.7 | [0, 8, 11, 13, 20, 25, 30, 35, 45, 46, 47, 48, 49] | 34.05 | 6.09 (1.25x faster) | |
| 0.7 | [0, 9, 13, 14, 15, 28, 29, 32, 36, 45] | 34.82 | 6.12 (1.24x faster) | |
| 0.7 | [0, 1, 5, 7, 10, 12, 15, 35, 40, 45, 46-51] | 35.56 | 6.19 (1.22x faster) | |
| 0.7 | [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50] | 35.20 | 6.14 (1.23x faster) |
Installation 🛠️
pip install ca-tome
Usage 🚀
from diffusers import StableDiffusionPipeline
from ca_tome import apply_CA_ToMe, CacheConf
pipe = StableDiffusionPipeline.from_pretrained(
"stable-diffusion-v1-5/stable-diffusion-v1-5",
cache_dir="model"
).to("cuda")
apply_CA_ToMe(pipe=pipe, cache_conf=CacheConf.CONFIG_3, r=0.8)
image = pipe.call("A high quality photograph of a cat").images[0]
image.save("cat.png")
🔔 Note: All experiments were conducted on the runwayml/stable-diffusion-v1-5 model, which is no longer supported on Hugging Face. Instead, we are using a mirror of the deprecated runwayml/stable-diffusion-v1-5 model.
Citation
If you use CA-ToMe or this codebase in your work, please cite:
@article{saghatchian2025cachedadaptivetokenmerging,
title={Cached Adaptive Token Merging: Dynamic Token Reduction and Redundant Computation Elimination in Diffusion Model},
author={Omid Saghatchian and Atiyeh Gh. Moghadam and Ahmad Nickabadi},
year={2025},
eprint={2501.00946},
archivePrefix={arXiv},
primaryClass={cs.CV},
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ca_tome-0.1.3.tar.gz.
File metadata
- Download URL: ca_tome-0.1.3.tar.gz
- Upload date:
- Size: 597.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.0.0 CPython/3.12.3 Linux/6.8.0-51-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c51050fd9eddbc77436b6471f82bf1612c55a20096e386ea6c7f45f5989fbf38
|
|
| MD5 |
94694e3b389712a69b55880b6d6bdb84
|
|
| BLAKE2b-256 |
326c3e4cedb9c4b72a2edc1c3e7860146701374f09ab908dd429207044afdb3d
|
File details
Details for the file ca_tome-0.1.3-py3-none-any.whl.
File metadata
- Download URL: ca_tome-0.1.3-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.0.0 CPython/3.12.3 Linux/6.8.0-51-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0feae3c3da9c336fdf220903e3952aca6f5d1c540ce12c1ab5bd3875335d4502
|
|
| MD5 |
02216ba57528e3d24a26ca82a4b788da
|
|
| BLAKE2b-256 |
3a679c3a634bd4dd266dd0fc842a4ffb21ad9152691c7a8adc71567c4a50c100
|