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

El DiscreteDDIMScheduler muestrea cada posición del lienzo de la posterior discreta exacta del proceso de corrupción uniforme (D3PM), siguiendo Structured Denoising Diffusion Models in Discrete State-Spaces. No tiene parámetros, y el paso final compromete de forma determinista los tokens predichos. Un modo opcional de predictor-corrección añade los barridos Gibbs leave-one-out de Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation a través de corrector_steps.

Este programador es utilizado por DiffusionGemmaPipeline.

DiscreteDDIMScheduler

clase diffusers.DiscreteDDIMScheduler

< >

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

Parámetros

  • num_inference_steps (int, por defecto 32) — El número de pasos de desruido, que define la cuadrícula de tiempo lineal sobre la que se evalúa la posterior.
  • corrector_steps (int, valor predeterminado 0) — Número de barridos correctores de Gibbs que se ejecutan después de cada paso del predictor. 0 recupera el muestreo ancestral DDIM simple.
  • corrector_k (int, por defecto 1) — Número de posiciones muestreadas de nuevo por barrido del corrector.
  • corrector_selection (str, por defecto "lowest_log_margin") — Cómo se eligen las posiciones re-muestreadas: "lowest_log_margin", "lowest_maxprob", "lowest_current_prob" o "random".
  • corrector_selection_tau (float, valor predeterminado 1.0) — Temperatura de la selección de posiciones Gumbel-top-k (un valor más bajo es más codicioso).

Programador DDIM discreto para el proceso de corrupción uniforme, siguiendo “Structured Denoising Diffusion Models in Discrete State-Spaces” (D3PM, https://huggingface.co/papers/2107.03006).

En la programación lineal, la probabilidad de supervivencia de un token limpio en el tiempo t es alpha(t) = 1 - t. Un paso de desruido desde el tiempo t hasta s < t muestrea cada posición de bloque de la posterior exacta q(x_s | x_t, x0), que para el kernel uniforme se descompone en tres rutas: saltar al token limpio predicho x0, permanecer en el token actual o saltar a un token aleatorio uniforme. A diferencia de la difusión enmascarada, no hay un token de máscara; las posiciones no comprometidas contienen tokens aleatorios.

Un modo opcional de predictor-corregidor sigue “Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation” mediante el denoiser leave-one-out (LOO) (https://huggingface.co/papers/2605.22765). Cuando corrector_steps > 0, el pipeline ejecuta ese número de barridos correctores de Gibbs después de cada paso del predictor (ver step_correct()), muestreando de nuevo las posiciones de menor confianza desde la condicional de una coordenada Cat(alpha_s * x0_loo + (1 - alpha_s) / K) mientras mantiene el resto fijo, lo que deja la marginal p_s invariante y mejora la generación sin coste de entrenamiento.

paso

< >

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

Parámetros

  • model_output (torch.Tensor de forma (batch_size, block_length, vocab_size)) — Logits crudos del modelo para el bloque actual.
  • timestep (int o torch.Tensor) — Índice del paso actual dentro del programa de desruido, en [0, num_inference_steps - 1].
  • sample (torch.LongTensor de forma (batch_size, block_length)) — IDs de tokens del bloque actual x_t.
  • temperature (float) — Temperatura de muestreo aplicada a los logits al extraer x0.
  • generator (torch.Generator, opcional) — Generador de números aleatorios para el muestreo.
  • return_dict (bool) — Si se debe devolver un DiscreteDDIMSchedulerOutput o una tupla simple.

Muestree el siguiente bloque de la posterior q(x_s | x_t, x0) del proceso de corrupción uniforme.

Con a = alpha_t / alpha_s (probabilidad de supervivencia de s a t) y b = alpha_s, la masa posterior de cada ruta es

limpio: b * (1 - a) / K + a * b * 1[x_t = x0], mantener: a * (1 - b) / K, ruido: (1 - a) * (1 - b) / K,

por lo que el último paso (b = 1) confirma de forma determinista los tokens limpios predichos.

step_correct

< >

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

Parámetros

  • model_output (torch.Tensor de forma (batch_size, block_length, vocab_size)) — Logits crudos del modelo recalculados en la sample actual (post-predictor).
  • timestep (int o torch.Tensor) — El índice del paso del predictor que acaba de completarse; el corrector se ejecuta en el siguiente punto de la cuadrícula s.
  • sample (torch.LongTensor de forma (batch_size, block_length)) — IDs de tokens del bloque actual para refinar.
  • generator (torch.Generator, opcional) — Generador de números aleatorios para el muestreo.
  • return_dict (bool) — Si se debe devolver un DiscreteDDIMSchedulerOutput o una tupla simple.

Ejecuta un barrido de corrector de Gibbs en el tiempo posterior al predictor s, siguiendo el predictor-corrector leave-one-out de https://huggingface.co/papers/2605.22765.

Los logits del modelo (recalculados en la sample actual) se convierten en el desruidador LOO, se forma la condicional de una coordenada p_s(x^l | x^{-l}) = Cat(alpha_s * x0_loo + (1 - alpha_s) / K), se seleccionan las posiciones de corrector_k con menor confianza y se muestrea de nuevo en esas posiciones mientras el resto se mantiene fijo. El barrido preserva p_s, por lo que refina la muestra sin alterar su marginal y no requiere entrenamiento adicional.

DiscreteDDIMSchedulerOutput

clase diffusers.DiscreteDDIMSchedulerOutput

< >

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

Parámetros

  • prev_sample (torch.LongTensor de forma (batch_size, block_length)) — Tokens del bloque actualizados tras el paso de desruido actual.
  • sampled_tokens (torch.LongTensor de forma (batch_size, block_length)) — IDs de tokens muestreados de los logits del modelo, es decir, los tokens limpios predichos x0.
  • sampled_probs (torch.Tensor de forma (batch_size, block_length)) — Probabilidades de los tokens muestreados.
  • pred_logits (torch.Tensor de forma (batch_size, block_length, vocab_size)) — Los logits del desruidador, transmitidos para la autocondición del siguiente paso.

Clase de salida para el programador DDIM discreto.

Update on GitHub