Buckets:

hf-doc-build/doc / diffusers /main /es /api /schedulers /block_refinement.md
mishig's picture
|
download
raw
10.3 kB

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[[diffusers.BlockRefinementScheduler]]

diffusers.BlockRefinementScheduler[[diffusers.BlockRefinementScheduler]]

diffusers.BlockRefinementScheduler(block_length: int = 32, num_inference_steps: int = 32, threshold: float = 0.95, editing_threshold: float | None = None, minimal_topk: int = 1)

Fuente

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[[diffusers.BlockRefinementScheduler.add_noise]]

add_noise(original_samples: torch.LongTensor, attention_mask: torch.LongTensor, prompt_length: int, block_length: int, mask_token_id: int, generator: torch.Generator | None = None)

Fuente

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 indicación iniciales que se mantendrán sin enmascarar.

block_length (int) : Tamaño de bloque para la enmascaración.

mask_token_id (int) : ID de token para usar en las posiciones enmascaradas.

generator (torch.Generator, opcional) : RNG 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[[diffusers.BlockRefinementScheduler.check_block_should_continue]]

check_block_should_continue(step_idx: int, masks_remaining: bool, editing_enabled: bool, editing_transfer_index: torch.BoolTensor, post_steps: int, max_post_steps: int, finished: torch.BoolTensor)

Fuente

Parámetros:

step_idx (int) : Índice del paso de refinamiento actual dentro de este bloque.

masks_remaining (bool) : Si quedan tokens de máscara en el bloque.

editing_enabled (bool) : 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 posteriores a la máscara realizados hasta ahora.

max_post_steps (int) : Número máximo de pasos de edición permitidos después de la máscara.

finished (torch.BoolTensor) : Banderas de finalización por lote (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[[diffusers.BlockRefinementScheduler.check_eos_finished]]

check_eos_finished(cur_x: torch.LongTensor, sampled_tokens: torch.LongTensor, final_transfer: torch.BoolTensor, finished: torch.BoolTensor, eos_token_id: int, mask_token_id: int, prompt_length: int)

Fuente

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 comprometidas 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 indicio 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[[diffusers.BlockRefinementScheduler.get_num_transfer_tokens]]

get_num_transfer_tokens(block_length: int, num_inference_steps: int)

Fuente

Distribuya uniformemente los block_length tokens entre los num_inference_steps pasos.

paso[[diffusers.BlockRefinementScheduler.step]]

step(model_output: torch.Tensor, timestep: int | torch.Tensor, sample: torch.LongTensor, mask_token_id: int | None = None, temperature: float = 0.0, top_p: float | None = None, top_k: int | None = None, sampling_method: str = 'auto', threshold: float | None = None, editing_threshold: float | None = None, minimal_topk: int | None = None, prompt_mask: torch.BoolTensor | None = None, generator: torch.Generator | None = None, return_dict: bool = True)

Fuente

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 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 de token utilizado para las posiciones enmascaradas. Cuando es None, el programador se ejecuta en modo de corrupción uniforme: rastrea internamente las posiciones comprometidas (reiniciando en timestep == 0) y re-ruidiza 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 por 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 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 valor 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[[diffusers.BlockRefinementSchedulerOutput]]

diffusers.BlockRefinementSchedulerOutput[[diffusers.BlockRefinementSchedulerOutput]]

diffusers.BlockRefinementSchedulerOutput(prev_sample: torch.LongTensor, transfer_index: torch.BoolTensor, editing_transfer_index: torch.BoolTensor, sampled_tokens: torch.LongTensor, sampled_probs: torch.Tensor, pred_logits: torch.Tensor)

Fuente

Parámetros:

prev_sample (torch.LongTensor de forma (batch_size, block_length)) : Tokens de bloque actualizados después del paso de refinamiento actual.

transfer_index (torch.BoolTensor de forma (batch_size, block_length)) : Máscara booleana que indica qué tokens se comprometieron (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 denoiser, transmitidos para la autocondición del siguiente paso.

Clase de salida para la programación de refinamiento de bloques.

Xet Storage Details

Size:
10.3 kB
·
Xet hash:
f4f3b915478fd54b6cd8245fb6daf1be69c47cbc338955c4de5e45b9098b31ad

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.