Diffusers documentation

BlockRefinementScheduler

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

BlockRefinementScheduler

El BlockRefinementScheduler gestiona el refinamiento iterativo por bloques para la difusión de tokens discretos. En cada paso, confirma los tokens con mayor confianza y, opcionalmente, edita los tokens ya confirmados cuando el modelo predice un token diferente con alta confianza.

Este programador es utilizado por LLaDA2Pipeline.

BlockRefinementScheduler

clase diffusers.BlockRefinementScheduler

< >

( block_length: int = 32num_inference_steps: int = 32threshold: float = 0.95editing_threshold: float | None = Noneminimal_topk: int = 1 )

Programador para refinamiento iterativo por bloques (compromiso por confianza).

En cada paso, el programador muestrea tokens candidatos a partir de los logits del modelo y confirma aquellos con mayor confianza. El número de tokens que se confirman en cada paso se determina distribuyendo uniformemente la longitud del bloque entre el número de pasos de refinamiento.

Admite opcionalmente la edición: una vez que todos los tokens de máscara se han resuelto, los tokens pueden reemplazarse si el modelo predice un token diferente con una confianza superior a un editing_threshold positivo (None, 0.0 o un valor negativo desactiva la edición).

add_noise

< >

( original_samples: torch.LongTensorattention_mask: torch.LongTensorprompt_length: intblock_length: intmask_token_id: intgenerator: torch.Generator | None = None ) → tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]

Parámetros

  • original_samples (torch.LongTensor de forma (batch_size, seq_len)) — IDs de tokens limpios.
  • attention_mask (torch.LongTensor de forma (batch_size, seq_len)) — Máscara de relleno (1 para válido, 0 para relleno).
  • prompt_length (int) — Número de tokens de prompt iniciales que se mantienen sin enmascarar.
  • block_length (int) — Tamaño de bloque para la enmascaración.
  • mask_token_id (int) — ID del token que se usará para las posiciones enmascaradas.
  • generator (torch.Generator, opcional) — Generador de números aleatorios para la reproducibilidad.

Devuelve

tuple[torch.LongTensor, torch.LongTensor, torch.BoolTensor, torch.BoolTensor]

(noisy, noisy_rev, masked, masked_rev) — las dos secuencias ruidosas complementarias y sus correspondientes máscaras booleanas.

Aplicar el proceso de propagación (agregado de ruido) para el enmascaramiento de bloques semiautoregresivos.

Para cada bloque posterior al prompt, una fracción aleatoria de tokens válidos (no de relleno) se reemplaza con mask_token_id. Se devuelven dos vistas complementarias: noisy y noisy_rev, donde las posiciones enmascaradas en una son las posiciones no enmascaradas en la otra.

check_block_should_continue

< >

( step_idx: intmasks_remaining: boolediting_enabled: boolediting_transfer_index: torch.BoolTensorpost_steps: intmax_post_steps: intfinished: torch.BoolTensor ) → bool

Parámetros

  • step_idx (int) — Índice actual del paso de refinamiento dentro de este bloque.
  • masks_remaining (bool) — Si quedan tokens de máscara en el bloque.
  • editing_enabled (bool) — Indica si el modo de edición está activo.
  • editing_transfer_index (torch.BoolTensor) — Qué tokens se editaron en este paso.
  • post_steps (int) — Número de pasos de edición post-máscara realizados hasta ahora.
  • max_post_steps (int) — Número máximo de pasos de edición posteriores a la máscara permitidos.
  • finished (torch.BoolTensor) — Banderas de finalización por lote (procedentes de la detección de EOS).

Devuelve

bool

True si la refinación debe continuar, False para interrumpir.

Determine si el bucle de refinamiento interno debe continuar para el bloque actual.

check_eos_finished

< >

( cur_x: torch.LongTensorsampled_tokens: torch.LongTensorfinal_transfer: torch.BoolTensorfinished: torch.BoolTensoreos_token_id: intmask_token_id: intprompt_length: int ) → torch.BoolTensor

Parámetros

  • cur_x (torch.LongTensor de forma (batch_size, seq_len)) — Secuencia completa actual que incluye todos los bloques hasta la ventana actual.
  • sampled_tokens (torch.LongTensor de forma (batch_size, block_length)) — Tokens muestreados por el programador en este paso.
  • final_transfer (torch.BoolTensor de forma (batch_size, block_length)) — Máscara combinada de posiciones confirmadas y editadas.
  • finished (torch.BoolTensor de forma (batch_size,)) — Banderas de finalización actuales por lote.
  • eos_token_id (int) — ID del token EOS.
  • mask_token_id (int) — ID del token de máscara.
  • prompt_length (int) — Número de tokens de prompt al inicio de la secuencia.

Devuelve

torch.BoolTensor

Se actualizaron las banderas de finalización.

Actualice las banderas de finalización por lote cuando se confirmen los tokens EOS.

get_num_transfer_tokens

< >

( block_length: intnum_inference_steps: int )

Distribuya uniformemente los block_length tokens entre los num_inference_steps pasos.

paso

< >

( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensormask_token_id: int | None = Nonetemperature: float = 0.0top_p: float | None = Nonetop_k: int | None = Nonesampling_method: str = 'auto'threshold: float | None = Noneediting_threshold: float | None = Noneminimal_topk: int | None = Noneprompt_mask: torch.BoolTensor | None = Nonegenerator: 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 de la programación de refinamiento del bloque.
  • sample (torch.LongTensor de forma (batch_size, block_length)) — IDs de tokens del bloque actual (contiene tokens de máscara para las posiciones no confirmadas en el modo basado en máscara).
  • mask_token_id (int, opcional) — ID del token utilizado para las posiciones enmascaradas. Cuando es None, el programador se ejecuta en modo de corrupción uniforme: seguirá internamente las posiciones comprometidas (reiniciando en timestep == 0) y re-ruidará las no comprometidas con tokens aleatorios uniformes, coincidiendo con el muestreador de refinamiento por bloques de DiffusionGemma.
  • temperature (float) — Temperatura de muestreo.
  • top_p (float, opcional) — Corte de muestreo de núcleo.
  • top_k (int, opcional) — Corte de muestreo top-k.
  • sampling_method (str) — Método de muestreo (auto, greedy, multinomial).
  • threshold (float, opcional) — Umbral de confianza para confirmar los tokens. El valor predeterminado es el valor de la configuración.
  • editing_threshold (float, opcional) — Umbral de confianza para editar tokens no enmascarados; debe ser positivo para habilitar la edición. El valor predeterminado es el valor de la configuración.
  • minimal_topk (int, opcional) — Número mínimo de tokens que se deben confirmar en cada paso. El valor predeterminado es el de la configuración.
  • prompt_mask (torch.BoolTensor, opcional) — Máscara booleana de forma (block_length,) donde True marca las posiciones del prompt (no editables).
  • generator (torch.Generator, opcional) — Generador de números aleatorios para el muestreo.
  • return_dict (bool) — Si se debe devolver un BlockRefinementSchedulerOutput o una tupla.

Realiza un paso único de refinamiento: muestrea desde los logits, confirma los tokens con alta confianza y, opcionalmente, edita los existentes.

BlockRefinementSchedulerOutput

clase diffusers.BlockRefinementSchedulerOutput

< >

( prev_sample: torch.LongTensortransfer_index: torch.BoolTensorediting_transfer_index: torch.BoolTensorsampled_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 refinamiento actual.
  • transfer_index (torch.BoolTensor de forma (batch_size, block_length)) — Máscara booleana que indica qué tokens se confirmaron (relleno de máscara).
  • editing_transfer_index (torch.BoolTensor de forma (batch_size, block_length)) — Máscara booleana que indica qué tokens fueron editados (sustitución no enmascarada).
  • sampled_tokens (torch.LongTensor de forma (batch_size, block_length)) — IDs de tokens muestreados de los logits del modelo.
  • 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 la programación de refinamiento de bloques.

Update on GitHub