Diffusers documentation
Latent Consistency Model Çok Adımlı Zamanlayıcı
Latent Consistency Model Çok Adımlı Zamanlayıcı
Genel Bakış
Simian Luo, Yiqin Tan, Longbo Huang, Jian Li ve Hang Zhao'nun Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference makalesinde latent tutarlılık modelleriyle birlikte tanıtılan çok adımlı ve tek adımlı zamanlayıcı (Algoritma 3). Bu zamanlayıcı, LatentConsistencyModelPipeline üzerinden 1-8 adımda iyi örnekler üretebilmelidir.
LCMScheduler
sınıf diffusers.LCMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'scaled_linear'trained_betas: numpy.ndarray | list[float] | None = Noneoriginal_inference_steps: int = 50clip_sample: bool = Falseclip_sample_range: float = 1.0set_alpha_to_one: bool = Truesteps_offset: int = 0prediction_type: str = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0timestep_spacing: str = 'leading'timestep_scaling: float = 10.0rescale_betas_zero_snr: bool = False )
Parametreler
- num_train_timesteps (
int, varsayılan1000) — Modelin eğitileceği difüzyon adım sayısı. - beta_start (
float, varsayılan0.00085) — Çıkarımın başlangıçbetadeğeri. - beta_end (
float, varsayılan0.012) — Sonbetadeğeri. - beta_schedule (
str, varsayılan"scaled_linear") — Beta zamanlaması, modelin adım atması için beta aralığını beta dizisine eşleyen bir haritadır. Seçenekler:linear,scaled_linearveyasquaredcos_cap_v2. - trained_betas (
np.ndarrayveyalist[float], isteğe bağlı) —beta_startvebeta_endparametrelerini atlamak için beta dizisini doğrudan yapılandırıcıya iletin. - original_inference_steps (
int, varsayılan50) — Doğrusal aralıklı bir zaman adımı zaman çizelgesi oluşturmak için kullanılan varsayılan çıkarım adımı sayısıdır. Bu çizelgeden, nihai zaman adımı zaman çizelgesini oluşturmak içinnum_inference_stepseşit aralıklı zaman adımı alınacaktır. - clip_sample (
bool, varsayılanFalse) — Sayısal kararlılık için tahmin edilen örneği kırpın. - clip_sample_range (
float, varsayılan1.0) — Örnek kırpma için maksimum büyüklük. Yalnızcaclip_sample=Trueolduğunda geçerlidir. - set_alpha_to_one (
bool, varsayılanTrue) — Her difüzyon adımı, o adımdaki ve bir önceki adımdaki alfa çarpım değerini kullanır. Son adım için bir önceki alfa yoktur. Bu seçenekTrueolduğunda bir önceki alfa çarpımı1olarak sabitlenir, aksi halde 0. adımdaki alfa değeri kullanılır. - steps_offset (
int, varsayılan0) — Bazı model ailelerinin gerektirdiği gibi, çıkarım adımlarına eklenen bir ofset. - prediction_type (
str, defaults to"epsilon") — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - thresholding (
bool, varsayılanFalse) — “Dinamik eşikleme” yönteminin kullanılıp kullanılmayacağı. Bu, Stable Diffusion gibi gizli uzay difüzyon modelleri için uygun değildir. - dynamic_thresholding_ratio (
float, varsayılan0.995) — Dinik eşikleme yöntemi için oran. Yalnızcathresholding=Trueolduğunda geçerlidir. - sample_max_value (
float, varsayılan1.0) — Dinik eşikleme için eşik değeri. Yalnızcathresholding=Trueolduğunda geçerlidir. - timestep_spacing (
str, varsayılan"leading") — Adımların ölçeklendirilme biçimi. Daha fazla bilgi için Common Diffusion Noise Schedules and Sample Steps are Flawed makalesindeki Tablo 2'ye bakın. - timestep_scaling (
float, varsayılan10.0) — Tutarlılık modelinin sınır koşulları olanc_skipvec_outhesaplanırken timestep'lerin çarpılacağı katsayı. Bu değeri artırmak, yaklaşık hatayı azaltır (ancak varsayılan10.0değeri için yaklaşık hata zaten oldukça küçüktür). - rescale_betas_zero_snr (
bool, varsayılanFalse) — Betalara sıfır son SNR değerine sahip olacak şekilde yeniden ölçeklendirme uygulanıp uygulanmayacağı. Bu, modelin orta parlaklıktaki örneklerle sınırlı kalmak yerine çok parlak ve çok karanlık örnekler üretmesini sağlar.--offset_noiseile gevşek bir şekilde ilişkilidir.
LCMScheduler, gürültü azaltma difüzyon olasılıksal modellerinde (DDPM) tanıtılan gürültü azaltma işlemini, Markov olmayan yönlendirme ile genişletir.
Bu model SchedulerMixin ve ConfigMixin sınıflarından devralır. ~ConfigMixin, zamanlayıcının __init__ fonksiyonuna iletilen num_train_timesteps gibi tüm yapılandırma özniteliklerini saklamaktan sorumludur. Bunlara scheduler.config.num_train_timesteps yoluyla erişilebilir. SchedulerMixin, SchedulerMixin.save_pretrained() ve from_pretrained() fonksiyonları aracılığıyla genel yükleme ve kaydetme işlevselliği sağlar.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Her zaman adımındaki gürültü büyüklüğüne göre orijinal örneklerin gürültü ekleyin (bu, ileri difüzyon sürecidir).
get_scalings_for_boundary_condition_discrete
< source >( timestep: int ) → tuple[float, float]
Latent Consistency Model'de kullanılan, verilen ayrık zaman adımı için sınır koşulu ölçeklemelerini (c_skip ve c_out) hesaplar.
get_velocity
< source >( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Hız formülüne göre örnek ve gürültüden hız tahminini hesaplayın.
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.
önceki_adım
< source >( timestep ) → int or torch.Tensor
Difüzyon zincirindeki bir önceki zaman adımını hesaplayın.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
Gürültüden arındırma modelinin girdisinin mevcut zaman adımına bağlı olarak ölçeklenmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar.
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, NoneType] = Noneoriginal_inference_steps: int | None = Nonetimesteps: list[int] | None = Nonestrength: float = 1.0 ) → 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ı. Kullanılırsa,timestepsNoneolmalıdır. - device (
strveyatorch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz.Noneise adımlar taşınmaz. - original_inference_steps (
int, isteğe bağlı) — Doğrusal aralıklı bir zaman adımı zaman çizelgesi oluşturmak için kullanılacak olan orijinal çıkarım adımı sayısıdır (standartdiffusersuygulamasından farklıdır). Ardından bu zaman çizelgesinden, indeksler açısından eşit aralıklı olacak şekildenum_inference_stepszaman adımı alınır ve bu, nihai zaman adımı zaman çizelgemiz olarak kullanılır. Ayarlanmazsa, bu değeroriginal_inference_stepsözniteliğine varsayılan olarak ayarlanır. - timesteps (
list[int], isteğe bağlı) — Timesteps arasında keyfi aralıklara destek sağlamak için kullanılan özel timesteps.Noneise, eğitim/distillasyon timestep zaman çizelgesinde timesteps arasında eşit aralıklı varsayılan timestep aralıklandırma stratejisi kullanılır.timestepsgeçirilirse,num_inference_stepsNoneolmalıdır. - strength (
float, varsayılan1.0) — Kısmi zaman adımı zaman çizelgesi oluşturmak için kullanılan güç katsayısı (ör. görüntüden görüntüye).1.0değeri tam zaman çizelgesini kullanır.
Dönüş değeri
None
Difüzyon zinciri için kullanılan ayrık zaman adımlarını ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır).
adım
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → LCMSchedulerOutput or tuple
Parametreler
- model_output (
torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı. - timestep (
int) — Difüzyon zincirindeki mevcut ayrık 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ı) — Tekrarlanabilir örneklemeler için rastgele sayı üreteci. - return_dict (
bool, varsayılanTrue) —LCMSchedulerOutputveyatupledöndürülüp döndürülmemeye karar verir.
Dönüş değeri
LCMSchedulerOutput veya tuple
return_dict True ise LCMSchedulerOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülü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.