Diffusers documentation

CMStochasticIterativeScheduler

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

CMStochasticIterativeScheduler

Yang Song, Prafulla Dhariwal, Mark Chen ve Ilya Sutskever tarafından yazılan Consistency Models makalesi, iyi örnekler üretme yeteneğine sahip çok adımlı ve tek adımlı bir zamanlayıcı (Algorithm 1) tanıttı.

Makalenin özeti şudur:

Diffüzyon modelleri, görüntü, ses ve video üretimi alanlarında önemli ilerlemeler sağlamış olsa da, yavaş üretime neden olan iteratif bir örneklemleme sürecine bağımlıdırlar. Bu sınırlamayı aşmak için, gürültüyü doğrudan veriye eşleyerek yüksek kaliteli örnekler üreten yeni bir model ailesi olan tutarlılık modellerini öneriyoruz. Tasarım gereği hızlı tek adımlı üretimi desteklerken, hesaplama gücünü örnek kalitesiyle takas etmek için çok adımlı örneklemlemeye de izin verirler. Ayrıca, bu görevler üzerinde açık bir eğitim gerektirmeden, görüntü doldurma (inpainting), renklendirme ve süper çözünürlük gibi sıfır atışlı (zero-shot) veri düzenlemelerini de desteklerler. Tutarlılık modelleri, önceden eğitilmiş diffüzyon modellerinden damıtılarak (distillation) veya tamamen bağımsız üretken modeller olarak eğitilebilir. Kapsamlı deneyler yoluyla, tek ve az adımlı örneklemlemede mevcut diffüzyon modeli damıtma tekniklerinden daha iyi performans gösterdiklerini, tek adımlı üretimde CIFAR-10 üzerinde 3,55 ve ImageNet 64x64 üzerinde 6,20 ile yeni en iyi FID değerlerine ulaştıklarını gösteriyoruz. İzole olarak eğitildiğinde, tutarlılık modelleri; CIFAR-10, ImageNet 64x64 ve LSUN 256x256 gibi standart ölçütlerde mevcut tek adımlı, advers olmayan üretken modellerden daha iyi performans gösterebilen yeni bir üretken model ailesi haline gelir.

Orijinal kod tabanı openai/consistency_models adresinde bulunabilir.

CMStochasticIterativeScheduler

sınıf diffusers.CMStochasticIterativeScheduler

< >

( num_train_timesteps: int = 40sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5s_noise: float = 1.0rho: float = 7.0clip_denoised: bool = True )

Parametreler

  • num_train_timesteps (int, varsayılan 40) — Modelin eğitileceği difüzyon adım sayısı.
  • sigma_min (float, varsayılan 0.002) — Sigma zamanlamasındaki minimum gürültü büyüklüğü. Orijinal uygulamadan varsayılan olarak 0.002'dir.
  • sigma_max (float, varsayılan 80.0) — Sigma zamanlamasındaki maksimum gürültü büyüklüğü. Orijinal uygulamadan varsayılan olarak 80.0'dır.
  • sigma_data (float, varsayılan 0.5) — EDM makalesindeki veri dağılımının standart sapması. Orijinal uygulamadan varsayılan olarak 0.5'tir.
  • s_noise (float, varsayılan 1.0) — Örnekleme sırasında detay kaybını dengelemek için eklenen gürültü miktarı. Makul aralık [1.000, 1.011]'dir. Orijinal uygulamadan varsayılan olarak 1.0'dır.
  • rho (float, varsayılan 7.0) — EDM makalesinden Karras sigma zamanlamasını hesaplamak için kullanılan parametre. Orijinal uygulamadan 7.0 varsayılan değerine sahiptir.
  • clip_denoised (bool, varsayılan True) — Gürültüden arındırılmış çıktıların (-1, 1) aralığına kırpılıp kırpılmayacağı.
  • timesteps (list veya np.ndarray veya torch.Tensor, isteğe bağlı) — İsteğe bağlı olarak belirtilebilen açık bir timestep zamanlaması. Timestep'lerin artan sırada olması beklenir.

Tutarlılık modelleri için çok adımlı ve tek adımlı örneklemeler.

Bu model SchedulerMixin ve ConfigMixin sınıflarından devralır. Kütüphanenin tüm zamanlayıcılar için yükleme ve kaydetme gibi genel yöntemleri uyguladığı üst sınıf belgelendirmesini kontrol edin.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

Parametreler

  • original_samples (torch.Tensor) — Gürültü eklenecek orijinal örnekler.
  • noise (torch.Tensor) — Orijinal örneklerin üzerine eklenecek gürültü tensörü.
  • timesteps (torch.Tensor) — Gürültü eklenmesi gereken zaman adımları, zaman çizelgesinden gürültü seviyesini belirler.

Dönüş değeri

torch.Tensor

Zaman adımı zamanlamasına göre ölçeklendirilen eklenen gürültüye sahip gürültülü örnekler.

Belirtilen zaman adımlarındaki gürültü planına göre orijinal örneklerin gürültü ekleyin.

get_scalings

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

Parametreler

  • sigma (torch.Tensor) — Gürültü zamanlamasındaki mevcut sigma değeri.

Dönüş değeri

tuple[torch.Tensor, torch.Tensor]

c_skip (girdi örneği için ölçekleme) ve c_out (model çıktısı için ölçekleme) içeren bir demet.

Tutarlılık modeli çıktısı için ölçekleme faktörlerini hesaplar.

get_scalings_for_boundary_condition

< >

( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]

Parametreler

  • sigma (torch.Tensor) — Karras sigma zamanlamasındaki mevcut sigma.

Dönüş değeri

tuple[torch.Tensor, torch.Tensor]

İlk öğesi c_skip (mevcut örneği ağırlıklandırır) ve ikinci öğesi c_out (tutarlılık modeli çıktısını ağırlıklandırır) olan iki öğeli bir demet.

Tutarlılık modeli parametrelendirmesinde (makalenin ek C bölümünden) sınır koşulunu uygulamak için kullanılan ölçeklemeleri alır.

> c_skip ve c_out denklemlerindeki epsilon, sigma_min olarak ayarlanır.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Parametreler

  • timestep (float veya torch.Tensor) — Zamanlamada (schedule) bulunacak timestep değeri.
  • schedule_timesteps (torch.Tensor, isteğe bağlı) — Aranacak timestep zaman çizelgesi. None ise self.timesteps kullanılır.

Dönüş değeri

int

Zaman adımı planındaki zaman adımının indeksi. Çok eşleşme varsa, planın ortasından başlanırken bir sigmanın atlanmaması için (örneğin, görüntüden görüntüye) ikinci indeksi döndürür.

Verilen zaman adımının zaman adımı zaman çizelgesindeki indeksini bulun.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Parametreler

  • sample (torch.Tensor) — Girdi örneği.
  • timestep (float veya torch.Tensor) — Difüzyon zincirindeki mevcut zaman adımı.

Dönüş değeri

torch.Tensor

Ölçeklendirilmiş bir girdi örneği.

Tutarlılık modeli girdisini (sigma**2 + sigma_data**2) ** 0.5 ile ölçekler.

set_begin_index

< >

( begin_index: int = 0 )

Parametreler

  • begin_index (int, varsayılan 0) — Zamanlayıcı için başlangıç indeksi.

Zamanlayıcının başlangıç indeksini ayarlar. Bu işlev, çıkarım (inference) öncesinde pipeline'dan çalıştırılmalıdır.

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = None )

Parametreler

  • num_inference_steps (int, isteğe bağlı) — Önceden eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı.
  • device (str veya torch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz. None ise adımlar taşınmaz.
  • timesteps (list[int], isteğe bağlı) — Timesteps arasında keyfi aralıklara destek sağlamak için kullanılan özel timesteps. None ise, timesteps arasında eşit aralıklı varsayılan timestep aralıklandırma stratejisi kullanılır. timesteps geçirilirse, num_inference_steps None olmalıdır.

Difüzyon zinciri için kullanılan zaman adımlarını ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır).

sigma_to_t

< >

( sigmas: float | numpy.ndarray ) → np.ndarray

Parametreler

  • sigmas (float veya np.ndarray) — Tek bir Karras sigma veya Karras sigmaları dizisi.

Dönüş değeri

np.ndarray

Ölçeklendirilmiş giriş zaman adımı dizisi.

Tutarlılık modeline girdi olarak Karras sigmaları için ölçeklenmiş zaman adımlarını alır.

adım

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → CMStochasticIterativeSchedulerOutput or tuple

Parametreler

  • model_output (torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı.
  • timestep (float veya torch.Tensor) — Difüzyon zincirindeki mevcut zaman adımı.
  • sample (torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.
  • generator (torch.Generator, isteğe bağlı) — Rastgele sayı üreteci.
  • return_dict (bool, varsayılan True) — CMStochasticIterativeSchedulerOutput mu yoksa tuple mu döndürüleceğini belirtir.

Dönüş değeri

CMStochasticIterativeSchedulerOutput veya tuple

return_dict True ise, CMStochasticIterativeSchedulerOutput döndürülür, aksi halde bir tuple döndürülür ve bunun ilk öğesi örnek tensörüdür.

Önceki zaman adımındaki örneği SDE'yi tersine çevirerek tahmin edin. Bu işlev, öğrenilen model çıktılarını (en sık tahmin edilen gürültüyü) kullanarak difüzyon sürecini ilerletir.

CMStochasticIterativeSchedulerOutput

sınıf diffusers.schedulers.scheduling_consistency_models.CMStochasticIterativeSchedulerOutput

< >

( prev_sample: Tensor )

Parametreler

  • prev_sample (görseller için torch.Tensor, şekli (batch_size, num_channels, height, width)) — Önceki zaman adımının hesaplanan örneği (x_{t-1}). prev_sample, gürültü azaltma döngüsünde bir sonraki model girdisi olarak kullanılmalıdır.

Zamanlayıcının step işlevi için çıktı sınıfı.

Update on GitHub