Diffusers documentation

DiscreteDDIMScheduler

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