Diffusers documentation

CacheDiT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 DiT hatlarının çoğunu 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

Update on GitHub