Buckets:
CacheDiT
CacheDiT, transformer blok çıktıları gürültü azaltma adımları arasında yeniden kullanılarak DiT hatlarını hızlandırır. Eğitim gerektirmez ve Flux, Qwen-Image, Wan ve HunyuanVideo dahil olmak üzere Diffusers'ın çoğu DiT hattını destekler. Diffusers ayrıca ek bir bağımlılık gerektirmeyen yerleşik önbellekleme özelliğine de sahiptir.
CacheDiT'yi PyPI'den yükleyin.
pip install -U cache-dit
CacheDiT'in desteklediği pipeline ailelerini listelemek için cache_dit.supported_pipelines() çağrısını yapın.
import cache_dit
cache_dit.supported_pipelines()
Önbellekleme etkinleştir
Bir pipeline üzerinde cache_dit.enable_cache çağrısı yaparak varsayılan ayarlarla önbelleğe alın, ardından pipeline'ı normal şekilde çalıştırın.
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, torch.compile ile de çalışır. enable_cache çağrısından sonra transformer'ı derleyin. Dinamik giriş şekillerinde yeniden derlemeyi önleyen ayarlar için compile belgelerine bakın.
pipeline.transformer = torch.compile(pipeline.transformer)
Çıkarım işleminden sonra cache_dit.summary çağrılarak kaç adımın önbelleğe alındığı ve adımlar arasındaki kalan farkların günlüğe kaydedilmesi sağlanır.
stats = cache_dit.summary(pipeline)
Orijinal hattı geri yüklemek için cache_dit.disable_cache çağrısını yapın.
cache_dit.disable_cache(pipeline)
Önbelleği yapılandır
DBCache (Dual Block Cache), her adımda ilk n bloğu (Fn) hesaplar. Çıktıları bir önceki adımdan neredeyse değişmediğinde, kalan bloklar için önbellekteki çıktıyı yeniden kullanır ve düzeltme yapmak için son n bloğu (Bn) yeniden hesaplayabilir. TaylorSeer kalibratörü, önbellekteki çıktıyı olduğu gibi yeniden kullanmak yerine önceki adımlardan tahmin eder.
enable_cache varsayılan olarak DBCache kullanır; ilk 8 blok her zaman hesaplanır (F8B0) ve 8 önbelleğe alınmamış ısınma adımı yapılır. Hızı kalite pahasına artırmak için Fn_compute_blocks değerini artırın veya residual_diff_threshold değerini düşürün (varsayılan 0.08). Yüksek önbellek oranlarında en iyi kalite için TaylorSeer kalibratörünü ekleyin.
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),
)
Desteklenen pipeline'lar için CacheDiT, CFG'nin ayrı bir ileri geçiş olarak çalışıp çalışmadığını zaten bilir. Diğer modeller için, model koşullu ve koşulsuz geçişleri ayrı çalıştırıyorsa DBCacheConfig içinde enable_separate_cfg=True olarak ayarlayın; bunları birleştiriyorsa veya CFG kullanmıyorsa False olarak ayarlayın.
Fn ve Bn bloklarının nasıl çalıştığını görmek için DBCache tasarımı belgelerine, hız ve kalite değerleri için ise önbellek kıyaslamalarına bakın.
Sonraki adımlar
- CacheDiT'in henüz desteklemediği pipeline'lar için BlockAdapter belgelerine bakın.
- CacheDiT ayrıca bağlam paralelliğini ve kantizasyonu destekler.
Xet Storage Details
- Size:
- 4.22 kB
- Xet hash:
- eb58a81e3f93c27cdfca77e99f2c0381848df1b8f4b15ab1e19b256858473456
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.