Diffusers documentation
DiscreteDDIMScheduler
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
< source >( 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
< source >( 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 (
intveyatorch.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 kimliklerix_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
< source >( 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 (
intveyatorch.Tensor) — Tamamlanan tahminci adım indeksi; düzeltici, bir sonraki ızgara noktasındasç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
< source >( 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 tokenlarx0. - 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ı.