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.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DiscreteDDIMScheduler

Le DiscreteDDIMScheduler échantillonne chaque position du canevas à partir de la postérieure discrète exacte du processus de corruption uniforme (D3PM), conformément à Structured Denoising Diffusion Models in Discrete State-Spaces. Il ne comporte aucun paramètre, et l'étape finale engage de manière déterministe les jetons prédits. Un mode prédicteur-correcteur facultatif ajoute les balayages de Gibbs leave-one-out de Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation via corrector_steps.

Ce planificateur est utilisé par DiffusionGemmaPipeline.

DiscreteDDIMScheduler

classe diffusers.DiscreteDDIMScheduler

< >

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

Paramètres

  • num_inference_steps (int, par défaut 32) — Le nombre d'étapes de débruitage, définissant la grille temporelle linéaire sur laquelle la distribution a posteriori est évaluée.
  • corrector_steps (int, par défaut 0) — Nombre de balayages correcteurs de Gibbs exécutés après chaque étape prédicteur. 0 correspond à l'échantillonnage ancestral DDIM standard.
  • corrector_k (int, par défaut 1) — Nombre de positions rééchantillonnées par balayage du correcteur.
  • corrector_selection (str, par défaut "lowest_log_margin") — Méthode de sélection des positions rééchantillonnées : "lowest_log_margin", "lowest_maxprob", "lowest_current_prob" ou "random".
  • corrector_selection_tau (float, par défaut 1.0) — Température de la sélection de positions Gumbel-top-k (plus la valeur est basse, plus la sélection est gloutonne).

Planificateur DDIM discret pour le processus de corruption uniforme, suivant « Structured Denoising Diffusion Models in Discrete State-Spaces » (D3PM, https://huggingface.co/papers/2107.03006).

Sur le calendrier linéaire, la probabilité de survie d’un jeton propre au temps t est alpha(t) = 1 - t. Une étape de débruitage allant du temps t à s < t échantillonne chaque position de bloc à partir de la postérieure exacte q(x_s | x_t, x0), qui, pour le noyau uniforme, se décompose en trois chemins : sauter vers le jeton propre prédit x0, rester sur le jeton actuel, ou sauter vers un jeton aléatoire uniforme. Contrairement à la diffusion masquée, il n’y a pas de jeton de masque ; les positions non engagées portent des jetons aléatoires.

Un mode prédicteur-correcteur optionnel suit « Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation » via le débruiteur leave-one-out (LOO) (https://huggingface.co/papers/2605.22765). Lorsque corrector_steps > 0, le pipeline exécute ce nombre de balayages correcteurs de Gibbs après chaque étape de prédicteur (voir step_correct()), en rééchantillonnant les positions les moins confiantes à partir de la conditionnelle à une coordonnée Cat(alpha_s * x0_loo + (1 - alpha_s) / K) tout en maintenant les autres fixes, ce qui laisse la marginale p_s invariante et améliore la génération sans coût d'entraînement.

étape

< >

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

Paramètres

  • model_output (torch.Tensor de forme (batch_size, block_length, vocab_size)) — Logits bruts du modèle pour le bloc actuel.
  • timestep (int ou torch.Tensor) — Index de l'étape actuelle dans le calendrier de débruitage, dans [0, num_inference_steps - 1].
  • sample (torch.LongTensor de forme (batch_size, block_length)) — Identifiants des jetons du bloc actuel x_t.
  • temperature (float) — Température d'échantillonnage appliquée aux logits lors du tirage de x0.
  • generator (torch.Generator, facultatif) — Générateur aléatoire pour l'échantillonnage.
  • return_dict (bool) — Indique s'il faut retourner un DiscreteDDIMSchedulerOutput ou un simple tuple.

Échantillonner le bloc suivant à partir de la postérieure q(x_s | x_t, x0) du processus de corruption uniforme.

Avec a = alpha_t / alpha_s (probabilité de survie de s à t) et b = alpha_s, la masse a posteriori de chaque trajet est

propre : b * (1 - a) / K + a * b * 1[x_t = x0], stable : a * (1 - b) / K, bruit : (1 - a) * (1 - b) / K,

la dernière étape (b = 1) engage donc de manière déterministe les jetons propres prédits.

step_correct

< >

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

Paramètres

  • model_output (torch.Tensor de forme (batch_size, block_length, vocab_size)) — Logits bruts du modèle recalculés sur l'sample actuel (post-predictor).
  • timestep (int ou torch.Tensor) — L’indice d’étape du prédicteur vient d’être terminé ; le correcteur s’exécute au point de grille suivant s.
  • sample (torch.LongTensor de forme (batch_size, block_length)) — Identifiants des jetons du bloc actuel à affiner.
  • generator (torch.Generator, facultatif) — Générateur aléatoire pour l'échantillonnage.
  • return_dict (bool) — Indique s'il faut retourner un DiscreteDDIMSchedulerOutput ou un simple tuple.

Effectuer un balayage d'un correcteur de Gibbs au temps post-prédicteur s, en suivant le prédicteur-correcteur leave-one-out de https://huggingface.co/papers/2605.22765.

Les logits du modèle (recalculés sur l'sample actuel) sont convertis en débruiteur LOO, la conditionnelle à une coordonnée p_s(x^l | x^{-l}) = Cat(alpha_s * x0_loo + (1 - alpha_s) / K) est formée, les positions corrector_k les moins confiantes sont sélectionnées, et ces positions sont rééchantillonnées tandis que les autres sont maintenues fixes. Le balayage préserve p_s, il affine donc l'échantillon sans modifier sa marginale et n'exige aucune formation supplémentaire.

DiscreteDDIMSchedulerOutput

classe diffusers.DiscreteDDIMSchedulerOutput

< >

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

Paramètres

  • prev_sample (torch.LongTensor de forme (batch_size, block_length)) — Tokens du bloc mis à jour après l'étape de débruitage actuelle.
  • sampled_tokens (torch.LongTensor de forme (batch_size, block_length)) — Identifiants des jetons échantillonnés à partir des logits du modèle, c'est-à-dire les jetons propres prédits x0.
  • sampled_probs (torch.Tensor de forme (batch_size, block_length)) — Probabilités des jetons échantillonnés.
  • pred_logits (torch.Tensor de forme (batch_size, block_length, vocab_size)) — Les logits du débruiteur, transmis pour l'auto-conditionnement de l'étape suivante.

Classe de sortie pour le planificateur DDIM discret.

Update on GitHub