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

O DiscreteDDIMScheduler amostra cada posição do canvas a partir da posterior discreta exata do processo de corrupção uniforme (D3PM), seguindo Structured Denoising Diffusion Models in Discrete State-Spaces. Ele é livre de parâmetros, e o passo final comete deterministicamente os tokens previstos. Um modo opcional de preditor-corretor adiciona as varreduras Gibbs leave-one-out de Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation por meio de corrector_steps.

Este scheduler é usado por 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 )

Parâmetros

  • num_inference_steps (int, padrão 32) — O número de etapas de remoção de ruído, definindo a grade de tempo linear na qual a posterior é avaliada.
  • corrector_steps (int, padrão 0) — Número de varreduras corretivas de Gibbs executadas após cada etapa do preditor. 0 recupera a amostragem ancestral DDIM simples.
  • corrector_k (int, padrão 1) — Número de posições reamostradas por varredura do corretor.
  • corrector_selection (str, padrão "lowest_log_margin") — Como as posições reamostradas são escolhidas: "lowest_log_margin", "lowest_maxprob", "lowest_current_prob", ou "random".
  • corrector_selection_tau (float, padrão 1.0) — Temperatura da seleção de posições Gumbel-top-k (valores menores são mais gananciosos).

Agendador DDIM discreto para o processo de corrupção uniforme, seguindo “Structured Denoising Diffusion Models in Discrete State-Spaces” (D3PM, https://huggingface.co/papers/2107.03006).

No agendamento linear, a probabilidade de sobrevivência de um token limpo no tempo t é alpha(t) = 1 - t. Um passo de desruidamento do tempo t para s < t amostra cada posição de bloco a partir da posterior exata q(x_s | x_t, x0), que, para o kernel uniforme, se decompõe em três rotas: saltar para o token limpo previsto x0, permanecer no token atual ou saltar para um token aleatório uniforme. Diferentemente da difusão mascarada, não há um token de máscara; as posições não comprometidas carregam tokens aleatórios.

Um modo opcional de preditor-corretor segue “Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation” por meio do denoiser leave-one-out (LOO) (https://huggingface.co/papers/2605.22765). Quando corrector_steps > 0, o pipeline executa esse número de varreduras corretoras de Gibbs após cada etapa do preditor (veja step_correct()), reamostrando as posições de menor confiança a partir da condicional de uma coordenada Cat(alpha_s * x0_loo + (1 - alpha_s) / K) enquanto mantém as demais fixas, o que preserva a invariância da marginal p_s e melhora a geração sem custo de treinamento.

etapa

< >

( 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 brutos do modelo para o bloco atual.
  • timestep (int ou torch.Tensor) — Índice atual da etapa dentro do agendamento de remoção de ruído, em [0, num_inference_steps - 1].
  • sample (torch.LongTensor de forma (batch_size, block_length)) — IDs dos tokens do bloco atual x_t.
  • temperature (float) — Temperatura de amostragem aplicada aos logits ao sortear x0.
  • generator (torch.Generator, opcional) — Gera números aleatórios para amostragem.
  • return_dict (bool) — Se deve retornar um DiscreteDDIMSchedulerOutput ou uma tupla simples.

Amostrar o próximo bloco da posterior q(x_s | x_t, x0) do processo de corrupção uniforme.

Com a = alpha_t / alpha_s (probabilidade de sobrevivência de s até t) e b = alpha_s, a massa posterior de cada rota é

limpo: b * (1 - a) / K + a * b * 1[x_t = x0], manter: a * (1 - b) / K, ruído: (1 - a) * (1 - b) / K,

então a última etapa (b = 1) confirma de forma determinística os tokens limpos previstos.

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 brutos do modelo recalculados na sample atual (pós-predictor).
  • timestep (int ou torch.Tensor) — O índice do passo do preditor que acabou de ser concluído; o corretor é executado no ponto de grade seguinte s.
  • sample (torch.LongTensor de forma (batch_size, block_length)) — IDs dos tokens do bloco atual a serem refinados.
  • generator (torch.Generator, opcional) — Gera números aleatórios para amostragem.
  • return_dict (bool) — Se deve retornar um DiscreteDDIMSchedulerOutput ou uma tupla simples.

Execute uma varredura de um corretor de Gibbs no tempo pós-preditores s, seguindo o preditor-corretor leave-one-out de https://huggingface.co/papers/2605.22765.

Os logits do modelo (recalculados na sample atual) são convertidos no denoiser LOO, a condicional de uma coordenada p_s(x^l | x^{-l}) = Cat(alpha_s * x0_loo + (1 - alpha_s) / K) é formada, as posições de corrector_k com menor confiança são selecionadas e essas posições são reamostradas enquanto as demais são mantidas fixas. A varredura preserva p_s, de modo que refina a amostra sem alterar sua marginal e não requer treinamento adicional.

DiscreteDDIMSchedulerOutput

classe 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 do bloco atualizados após a etapa atual de desruidamento.
  • sampled_tokens (torch.LongTensor de forma (batch_size, block_length)) — IDs de tokens amostrados dos logits do modelo, ou seja, os tokens limpos previstos x0.
  • sampled_probs (torch.Tensor de forma (batch_size, block_length)) — Probabilidades dos tokens amostrados.
  • pred_logits (torch.Tensor de forma (batch_size, block_length, vocab_size)) — Os logits do desruidor, transmitidos para autocondicionar o próximo passo.

Classe de saída para o agendador DDIM discreto.

Update on GitHub