Diffusers documentation
CMStochasticIterativeScheduler
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
< source >( 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ılanTrue) — Gürültüden arındırılmış çıktıların(-1, 1)aralığına kırpılıp kırpılmayacağı. - timesteps (
listveyanp.ndarrayveyatorch.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
< source >( 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
< source >( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]
Tutarlılık modeli çıktısı için ölçekleme faktörlerini hesaplar.
get_scalings_for_boundary_condition
< source >( sigma: Tensor ) → tuple[torch.Tensor, torch.Tensor]
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_skipvec_outdenklemlerindekiepsilon,sigma_minolarak ayarlanır.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int
Parametreler
- timestep (
floatveyatorch.Tensor) — Zamanlamada (schedule) bulunacak timestep değeri. - schedule_timesteps (
torch.Tensor, isteğe bağlı) — Aranacak timestep zaman çizelgesi.Noneiseself.timestepskullanı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
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
Tutarlılık modeli girdisini (sigma**2 + sigma_data**2) ** 0.5 ile ölçekler.
set_begin_index
< source >( begin_index: int = 0 )
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
< source >( 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 (
strveyatorch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz.Noneise 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.Noneise, timesteps arasında eşit aralıklı varsayılan timestep aralıklandırma stratejisi kullanılır.timestepsgeçirilirse,num_inference_stepsNoneolmalı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
< source >( sigmas: float | numpy.ndarray ) → np.ndarray
Tutarlılık modeline girdi olarak Karras sigmaları için ölçeklenmiş zaman adımlarını alır.
adım
< source >( 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 (
floatveyatorch.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ılanTrue) — CMStochasticIterativeSchedulerOutput mu yoksatuplemu 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
< source >( prev_sample: Tensor )
Zamanlayıcının step işlevi için çıktı sınıfı.