Buckets:

mishig's picture
|
download
raw
3.98 kB
# CacheDiT
[CacheDiT](https://github.com/vipshop/cache-dit) mempercepat pipeline DiT dengan menggunakan ulang output blok transformer di antara langkah-langkah denoising. Metode ini tidak memerlukan pelatihan dan mendukung sebagian besar pipeline DiDiffusers, termasuk Flux, Qwen-Image, Wan, dan HunyuanVideo. Diffusers juga memiliki [penyimpanan cache bawaan](./cache) yang tidak memerlukan dependensi tambahan.
Install CacheDiT dari PyPI.
```bash
pip install -U cache-dit
```
Panggil `cache_dit.supported_pipelines()` untuk menampilkan daftar keluarga pipeline yang didukung oleh CacheDiT.
```py
import cache_dit
cache_dit.supported_pipelines()
```
## Aktifkan penyangga
Panggil `cache_dit.enable_cache` pada pipeline untuk meng-cache-nya dengan pengaturan default, lalu jalankan pipeline seperti biasa.
```py
import torch
import cache_dit
from diffusers import FluxPipeline
pipeline = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16
).to("cuda")
cache_dit.enable_cache(pipeline)
image = pipeline(
"A cat holding a sign that says hello world", num_inference_steps=28
).images[0]
```
CacheDiT juga berfungsi dengan `torch.compile`. Kompilasi transformer setelah Anda memanggil `enable_cache`. Lihat dokumentasi [compile](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/COMPILE.md) untuk pengaturan yang menghindari kompilasi ulang dengan bentuk input dinamis.
```py
pipeline.transformer = torch.compile(pipeline.transformer)
```
Panggil `cache_dit.summary` setelah inferensi untuk mencatat berapa banyak langkah yang di-cache dan perbedaan residual antar langkah.
```py
stats = cache_dit.summary(pipeline)
```
Panggil `cache_dit.disable_cache` untuk memulihkan pipeline asli.
```py
cache_dit.disable_cache(pipeline)
```
## Konfigurasi cache
DBCache (Dual Block Cache) menghitung n blok pertama (Fn) pada setiap langkah. Ketika output mereka nyaris tidak berubah dari langkah sebelumnya, output yang di-cache untuk blok-blok sisanya digunakan kembali, dan n blok terakhir (Bn) dapat dihitung ulang untuk memperbaikinya. Kalibrator TaylorSeer memprediksi output yang di-cache dari langkah-langkah sebelumnya alih-alih menggunakannya apa adanya.
`enable_cache` secara default menggunakan DBCache dengan 8 blok pertama yang selalu dihitung (F8B0) dan 8 langkah pemanasan tanpa cache. Untuk mengorbankan kecepatan demi kualitas, naikkan `Fn_compute_blocks` atau turunkan `residual_diff_threshold` (default `0.08`). Untuk kualitas terbaik pada tingkat cache tinggi, tambahkan kalibrator TaylorSeer.
```py
from cache_dit import DBCacheConfig, TaylorSeerCalibratorConfig
cache_dit.enable_cache(
pipeline,
cache_config=DBCacheConfig(
max_warmup_steps=8,
Fn_compute_blocks=8,
Bn_compute_blocks=0,
residual_diff_threshold=0.12,
),
calibrator_config=TaylorSeerCalibratorConfig(taylorseer_order=1),
)
```
Untuk pipeline yang didukung, CacheDiT sudah mengetahui apakah CFG dijalankan sebagai forward pass terpisah. Untuk model lain, atur `enable_separate_cfg=True` di `DBCacheConfig` jika model menjalankan jalur kondisional dan non-kondisional secara terpisah, atau `False` jika model menggabungkannya atau tidak menggunakan CFG.
Lihat dokumen [desain DBCache](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/DBCACHE_DESIGN.md) untuk memahami cara kerja blok Fn dan Bn, serta [benchmark cache](https://github.com/vipshop/cache-dit/blob/main/bench/cache/README.md) untuk angka kecepatan dan kualitas.
## Langkah selanjutnya
- Untuk pipeline yang belum didukung oleh CacheDiT, lihat dokumentasi [BlockAdapter](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/CACHE_API.md#automatic-block-adapter).
- CacheDiT juga mendukung [paralelisme konteks](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/CONTEXT_PARALLEL.md) dan [kuantisasi](https://github.com/vipshop/cache-dit/blob/main/docs/user_guide/QUANTIZATION.md).

Xet Storage Details

Size:
3.98 kB
·
Xet hash:
88e74dd3f3fde889b0856f50ff28a23b6dd1b80059b34871dcbd5525951730c8

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.