Diffusers documentation

DiscreteDDIMScheduler

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

DiscreteDDIMScheduler

DiscreteDDIMScheduler, Structured Denoising Diffusion Models in Discrete State-Spaces makalesinde belirtildiği üzere, her tuval konumunu, uniform bozulma sürecinin (D3PM) kesin ayrık posterior dağılımından örnekler. Parametresizdir ve son adım, tahmin edilen tokenları deterministik olarak sabitler. İsteğe bağlı predictor-corrector modu, Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation makalesindeki leave-one-out Gibbs taramalarını corrector_steps üzerinden ekler.

Bu zamanlayıcı DiffusionGemmaPipeline tarafından kullanılır.

DiscreteDDIMScheduler

sınıf diffusers.DiscreteDDIMScheduler

< >

( num_inference_steps: int = 32corrector_steps: int = 0corrector_k: int = 1corrector_selection: str = 'lowest_log_margin'corrector_selection_tau: float = 1.0 )

Parametreler

  • num_inference_steps (int, varsayılan 32) — Gürültü azaltma adım sayısı, posteriorun değerlendirildiği doğrusal zaman ızgarasını tanımlar.
  • corrector_steps (int, varsayılan 0) — Her tahminci adımından sonra çalıştırılan Gibbs düzeltici taramalarının sayısı. 0, düz atal DDIM örneklemeyi geri getirir.
  • corrector_k (int, varsayılan 1) — Her düzeltme taramasında yeniden örneklenen konum sayısı.
  • corrector_selection (str, varsayılan "lowest_log_margin") — Yeniden örneklenen konumların nasıl seçileceği: "lowest_log_margin", "lowest_maxprob", "lowest_current_prob" veya "random".
  • corrector_selection_tau (float, varsayılan 1.0) — Gumbel-top-k konum seçiminin sıcaklığı (düşük değerler daha açgözlüdür).

D3PM (https://huggingface.co/papers/2107.03006) makalesindeki “Structured Denoising Diffusion Models in Discrete State-Spaces” çalışmasına dayanan, uniform bozma süreci için ayrık DDIM zamanlayıcısı.

Doğrusal zaman çizelgesinde, t anında temiz bir token'ın hayatta kalma olasılığı alpha(t) = 1 - t'dir. t anından s < t anına giden tek bir gürültü azaltma adımı, her blok konumunu tam posterior dağılımdan q(x_s | x_t, x0) örnekler; bu dağılım, uniform çekirdek için üç yola ayrılır: tahmin edilen temiz token'a x0 atlamak, mevcut token'da kalmak veya uniform olarak rastgele bir token'a atlamak. Masked diffusion'dan farklı olarak, mask token'ı yoktur; taahhüt edilmemiş konumlar rastgele token'lar taşır.

İsteğe bağlı bir öngörücü-düzeltici modu, leave-one-out (LOO) gürültü azaltıcı aracılığıyla “Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation” makalesini izler (https://huggingface.co/papers/2605.22765). corrector_steps > 0 olduğunda, pipeline her öngörücü adımından sonra bu kadar Gibbs düzeltici taraması çalıştırır (bkz. step_correct()), kalanları sabit tutarak en az güvenilen konumları tek koordinat koşullu dağılımdan Cat(alpha_s * x0_loo + (1 - alpha_s) / K) yeniden örnekler; bu işlem kenar dağılımı p_s değişmez bırakır ve eğitim maliyeti olmadan üretimi iyileştirir.

adım

< >

( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensortemperature: float = 0.0generator: torch.Generator | None = Nonereturn_dict: bool = True )

Parametreler

  • model_output (torch.Tensor, şekli (batch_size, block_length, vocab_size)) — Mevcut blok için modelden gelen ham logitler.
  • timestep (int veya torch.Tensor) — Gürültü azaltma zaman çizelgesindeki mevcut adım indeksi, [0, num_inference_steps - 1] aralığında.
  • sample (torch.LongTensor, şekli (batch_size, block_length)) — Güncel blok token kimlikleri x_t.
  • temperature (float) — x0 örneklenirken logitlere uygulanan örneklem sıcaklığı.
  • generator (torch.Generator, isteğe bağlı) — Örnekleme için RNG.
  • return_dict (bool) — Bir DiscreteDDIMSchedulerOutput mu yoksa düz bir tuple mı döndürüleceğini belirtir.

Düz bozulma sürecinin posterior dağılımı q(x_s | x_t, x0)'den sonraki bloğu örnekleyin.

a = alpha_t / alpha_s (s'den t'ye hayatta kalma olasılığı) ve b = alpha_s olmak üzere, her bir yolun posterior kütlesi

temiz: b * (1 - a) / K + a * b * 1[x_t = x0], kal: a * (1 - b) / K, gürültü: (1 - a) * (1 - b) / K,

son adım (b = 1) tahmin edilen temiz tokenları deterministik olarak onaylar.

step_correct

< >

( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensorgenerator: torch.Generator | None = Nonereturn_dict: bool = True )

Parametreler

  • model_output (torch.Tensor, şekli (batch_size, block_length, vocab_size)) — Güncel (predictor sonrası) sample üzerinde yeniden hesaplanan modelin ham logit'leri.
  • timestep (int veya torch.Tensor) — Tamamlanan tahminci adım indeksi; düzeltici, bir sonraki ızgara noktasında s çalışır.
  • sample (torch.LongTensor, şekli (batch_size, block_length)) — İncelenecek mevcut blok token kimlikleri.
  • generator (torch.Generator, isteğe bağlı) — Örnekleme için RNG.
  • return_dict (bool) — Bir DiscreteDDIMSchedulerOutput mu yoksa düz bir tuple mı döndürüleceğini belirtir.

Öngörücü sonrası zaman s'inde, https://huggingface.co/papers/2605.22765'deki leave-one-out öngörücü-düzeltici yöntemine uygun olarak tek bir Gibbs düzeltici taraması çalıştırın.

Model logit'leri (mevcut sample üzerinde yeniden hesaplanır) LOO gürültü azaltıcıya dönüştürülür, tek koordinat koşullu p_s(x^l | x^{-l}) = Cat(alpha_s * x0_loo + (1 - alpha_s) / K) oluşturulur, en az güvenilen corrector_k konumları seçilir ve bu konumlar yeniden örneklenirken diğerleri sabit tutulur. Tarama p_s'yi koruduğundan, örneklemeyi marjinalini değiştirmeden rafine eder ve ek eğitim gerektirmez.

DiscreteDDIMSchedulerOutput

sınıf diffusers.DiscreteDDIMSchedulerOutput

< >

( prev_sample: torch.LongTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )

Parametreler

  • prev_sample (torch.LongTensor, şekli (batch_size, block_length)) — Güncel gürültü azaltma adımından sonra güncellenmiş blok jetonları.
  • sampled_tokens (torch.LongTensor, şekli (batch_size, block_length)) — Model logit'lerinden örneklenen token kimlikleri, yani tahmin edilen temiz tokenlar x0.
  • sampled_probs (torch.Tensor, şekli (batch_size, block_length)) — Örnekleme yapılan tokenların olasılıkları.
  • pred_logits (torch.Tensor, şekli (batch_size, block_length, vocab_size)) — Sonraki adım için kendine koşullandırma (self-conditioning) amacıyla geçirilen gürültü azaltıcı (denoiser) logitleri.

Ayrık DDIM zamanlayıcısı için çıktı sınıfı.

Update on GitHub