Diffusers documentation

EDMDPMSolverMultistepScheduler

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

EDMDPMSolverMultistepScheduler

EDMDPMSolverMultistepScheduler, Cheng Lu, Yuhao Zhou, Fan Bao, Jianfei Chen, Chongxuan Li ve Jun Zhu tarafından geliştirilen DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps ve DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models makalelerindeki çok adımlı zamanlayıcı olan DPMSolverMultistepScheduler'ın Karras formülasyonudur.

DPMSolver (ve geliştirilmiş sürümü DPMSolver++), yakınsama derecesi garantisi olan difüzyon ODE'leri için hızlı, özel bir yüksek dereceli çözücüdür. Deneysel olarak, yalnızca 20 adımla DPMSolver örneklemesi yüksek kaliteli örnekler üretebilir ve 10 adımda bile oldukça iyi örnekler üretebilir.

EDMDPMSolverMultistepScheduler

sınıf diffusers.EDMDPMSolverMultistepScheduler

< >

( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'sample', 'v_prediction'] = 'epsilon'rho: float = 7.0solver_order: int = 2thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0algorithm_type: typing.Literal['dpmsolver++', 'sde-dpmsolver++'] = 'dpmsolver++'solver_type: typing.Literal['midpoint', 'heun'] = 'midpoint'lower_order_final: bool = Trueeuler_at_final: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

Parametreler

  • sigma_min (float, isteğe bağlı, varsayılan 0.002) — Sigma zamanlamasındaki minimum gürültü büyüklüğü. Bu değer EDM makalesinde [1] 0.002 olarak ayarlanmıştır; makul bir aralık [0, 10]'dur.
  • sigma_max (float, isteğe bağlı, varsayılan 80.0) — Sigma zamanlamasındaki maksimum gürültü büyüklüğü. Bu değer EDM makalesinde [1] 80.0 olarak ayarlanmıştır; makul aralık [0.2, 80.0]'dir.
  • sigma_data (float, isteğe bağlı, varsayılan 0.5) — Veri dağılımının standart sapması. Bu değer, EDM makalesinde [1] 0.5 olarak ayarlanmıştır.
  • sigma_schedule (str, isteğe bağlı, varsayılan karras) — sigmas değerlerini hesaplamak için kullanılacak sigma zamanlaması. Varsayılan olarak, EDM makalesinde tanıtılan zamanlama kullanılır (https://huggingface.co/papers/2206.00364). Kabul edilen diğer değer “exponential”dır. Üstel zamanlama bu modele dahil edilmiştir: https://huggingface.co/stabilityai/cosxl.
  • num_train_timesteps (int, varsayılan 1000) — Modelin eğitileceği difüzyon adım sayısı.
  • prediction_type (str, defaults to epsilon, optional) — Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).
  • rho (float, isteğe bağlı, varsayılan 7.0) — Karras sigma zamanlamasındaki rho parametresi. Bu değer, EDM makalesinde [1] 7.0 olarak ayarlanmıştır.
  • solver_order (int, varsayılan 2) — 1 veya 2 veya 3 olabilecek DPMSolver derecesi. Rehberli örneklemeler için solver_order=2, koşulsuz örneklemeler için solver_order=3 kullanılması önerilir.
  • thresholding (bool, varsayılan False) — “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ılan 0.995) — Dinik eşikleme yöntemi için oran. Yalnızca thresholding=True olduğunda geçerlidir.
  • sample_max_value (float, varsayılan 1.0) — Dinik eşikleme için eşik değeri. Yalnızca thresholding=True ve algorithm_type="dpmsolver++" olduğunda geçerlidir.
  • algorithm_type (str, varsayılan dpmsolver++) — Çözücü için algoritma türü; dpmsolver++ veya sde-dpmsolver++ olabilir. dpmsolver++ türü, DPMSolver++ makalesindeki algoritmaları uygular. Stable Diffusion'daki gibi yönlendirilmiş örneklemeler için dpmsolver++ veya sde-dpmsolver++'in solver_order=2 ile kullanılması önerilir.
  • solver_type (str, varsayılan midpoint) — İkinci mertebeden çözücü için çözücü türü; midpoint veya heun olabilir. Çözücü türü, özellikle adım sayısı az olduğunda örnek kalitesini hafifçe etkiler. midpoint çözücülerinin kullanılması önerilir.
  • lower_order_final (bool, varsayılan True) — Son adımlarda düşük dereceli çözücülerin kullanılıp kullanılmayacağı. Yalnızca 15'ten az çıkarım adımı için geçerlidir. Bu, özellikle 10 ve altı adımlar için DPMSolver'ın 15'ten az adımlarda örneklemesini kararlı hale getirebilir.
  • euler_at_final (bool, varsayılan False) — Son adımda Euler yönteminin kullanılıp kullanılmayacağı. Sayısal kararlılık ile detay zenginliği arasında bir denge noktasıdır. Bu, DPMSolver'ın SDE varyantının düşük sayıda çıkarım adımıyla örneklenmesini kararlı hale getirebilir, ancak bazen bulanıklığa yol açabilir.
  • final_sigmas_type (str, varsayılan "zero") — Örnekleme sürecindeki gürültü zamanlaması için son sigma değeri. "sigma_min" ise, son sigma, eğitim zamanlamasındaki son sigma ile aynıdır. zero ise, son sigma 0 olarak ayarlanır.

Karras et al. 2022 [1]'de sunulan EDM formülasyonunda DPMSolverMultistepScheduler'ı uygular. EDMDPMSolverMultistepScheduler, difüzyon ODE'leri için hızlı, özel bir yüksek dereceli çözücüdür.

[1] Karras, Tero, ve diğerleri. “Elucidating the Design Space of Diffusion-Based Generative Models.” https://huggingface.co/papers/2206.00364

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.

convert_model_output

< >

( model_output: Tensorsample: Tensor ) → torch.Tensor

Parametreler

  • model_output (torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı.
  • sample (torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.

Dönüş değeri

torch.Tensor

Dönüştürülen model çıktısı.

Model çıktısını, DPMSolver/DPMSolver++ algoritmasının gerektirdiği ilgili tipe dönüştürün. DPM-Solver, gürültü tahmin modelinin bir integralini ayrıklaştırmak için tasarlanmıştır ve DPM-Solver++, veri tahmin modelinin bir integralini ayrıklaştırmak için tasarlanmıştır.

> Algoritma ve model tipi birbirinden bağımsızdır. Hem noise > prediction hem de data prediction modelleri için DPMSolver veya DPMSolver++ kullanabilirsiniz.

dpm_solver_first_order_update

< >

( model_output: Tensorsample: Tensornoise: typing.Optional[torch.Tensor] = None ) → torch.Tensor

Parametreler

  • model_output (torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı.
  • sample (torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.
  • noise (torch.Tensor, isteğe bağlı) — Orijinal örneklerin üzerine eklenecek gürültü tensörü.

Dönüş değeri

torch.Tensor

Önceki zaman adımındaki örnek tensör.

Birinci dereceden DPMSolver için tek adım (DDIM ile eşdeğer).

index_for_timestep

< >

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

Parametreler

  • timestep (int veya torch.Tensor) — Dizininin bulunacağı timestep.
  • 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.

Zamanlamadaki (schedule) belirli bir zaman adımının (timestep) indeksini bulun.

multistep_dpm_solver_second_order_update

< >

( model_output_list: typing.List[torch.Tensor]sample: Tensornoise: typing.Optional[torch.Tensor] = None ) → torch.Tensor

Parametreler

  • model_output_list (list[torch.Tensor]) — Öğrenmiş difüzyon modelinin mevcut ve sonraki zaman adımlarındaki doğrudan çıktıları.
  • sample (torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.
  • noise (torch.Tensor, isteğe bağlı) — Orijinal örneklerin üzerine eklenecek gürültü tensörü.

Dönüş değeri

torch.Tensor

Önceki zaman adımındaki örnek tensör.

İkinci mertebeden çok adımlı DPMSolver için tek adım.

multistep_dpm_solver_third_order_update

< >

( model_output_list: listsample: Tensor ) → torch.Tensor

Parametreler

  • model_output_list (list[torch.Tensor]) — Öğrenmiş difüzyon modelinin mevcut ve sonraki zaman adımlarındaki doğrudan çıktıları.
  • sample (torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.

Dönüş değeri

torch.Tensor

Önceki zaman adımındaki örnek tensör.

Üçüncü dereceden çok adımlı DPMSolver için tek adım.

precondition_inputs

< >

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

Parametreler

  • sample (torch.Tensor) — Ön koşullandırılacak girdi örnek tensörü.
  • sigma (float veya torch.Tensor) — Güncel sigma (gürültü seviyesi) değeri.

Dönüş değeri

torch.Tensor

Ölçeklendirilmiş giriş örneği.

Giriş örneğini, EDM formülasyonuna göre ölçekleyerek ön koşullandırın.

precondition_noise

< >

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

Parametreler

  • sigma (float veya torch.Tensor) — Ön koşullandırılacak sigma (gürültü seviyesi) değeri.

Dönüş değeri

torch.Tensor

0.25 * log(sigma) olarak hesaplanan ön koşullandırılmış gürültü değeri.

Gürültü seviyesini, logaritmik bir dönüşüm uygulayarak ön koşullandırın.

precondition_outputs

< >

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

Parametreler

  • sample (torch.Tensor) — Girdi örnek tensörü.
  • model_output (torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı.
  • sigma (float veya torch.Tensor) — Güncel sigma (gürültü seviyesi) değeri.

Dönüş değeri

torch.Tensor

Atlamalı bağlantı ve çıktı ölçeklendirmesini birleştirerek hesaplanan gürültüden arındırılmış örnek.

Model çıktılarını EDM formülasyonuna göre ön koşullandırın.

scale_model_input

< >

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

Parametreler

  • sample (torch.Tensor) — Girdi örnek tensörü.
  • timestep (float veya torch.Tensor) — Difüzyon zincirindeki mevcut zaman adımı.

Dönüş değeri

torch.Tensor

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

Euler algoritmasıyla eşleşmesi için gürültü azaltma modelinin girdisini ölçeklendirir. Mevcut zaman adımına bağlı olarak gürültü azaltma modelinin girdisini ölçeklendirmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar.

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 = Nonedevice: typing.Union[str, torch.device, NoneType] = None )

Parametreler

  • num_inference_steps (int) — Ö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.

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

< >

( model_output: Tensortimestep: typing.Union[int, torch.Tensor]sample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput 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ı) — Rastgele sayı üreteci.
  • return_dict (bool) — SchedulerOutput veya tuple döndürülüp döndürülmemeye karar verir.

Dönüş değeri

SchedulerOutput veya tuple

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

Önceki zaman adımından örneklemeyi SDE'yi tersine çevirerek tahmin edin. Bu fonksiyon, örneklemeyi çok adımlı DPMSolver ile ilerletir.

SchedulerOutput

sınıf diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( 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.

Bir zamanlayıcının step işlevinin çıktısı için temel sınıf.

Update on GitHub