Diffusers documentation

Agendador Multietapa do Modelo de Consistência Latente

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

Agendador Multietapa do Modelo de Consistência Latente

Visão geral

Agendador de múltiplas etapas e de etapa única (Algoritmo 3) introduzido junto com os modelos de consistência latente no artigo Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference, de Simian Luo, Yiqin Tan, Longbo Huang, Jian Li e Hang Zhao. Este agendador deve ser capaz de gerar bons amostras a partir do LatentConsistencyModelPipeline em 1 a 8 etapas.

LCMScheduler

classe diffusers.LCMScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'scaled_linear'trained_betas: numpy.ndarray | list[float] | None = Noneoriginal_inference_steps: int = 50clip_sample: bool = Falseclip_sample_range: float = 1.0set_alpha_to_one: bool = Truesteps_offset: int = 0prediction_type: str = 'epsilon'thresholding: bool = Falsedynamic_thresholding_ratio: float = 0.995sample_max_value: float = 1.0timestep_spacing: str = 'leading'timestep_scaling: float = 10.0rescale_betas_zero_snr: bool = False )

Parâmetros

  • num_train_timesteps (int, padrão 1000) — O número de etapas de difusão para treinar o modelo.
  • beta_start (float, padrão 0.00085) — O valor inicial de beta para a inferência.
  • beta_end (float, padrão 0.012) — O valor final de beta.
  • beta_schedule (str, padrão "scaled_linear") — O agendamento de beta, um mapeamento de um intervalo de betas para uma sequência de betas para o avanço do modelo. Escolha entre linear, scaled_linear ou squaredcos_cap_v2.
  • trained_betas (np.ndarray ou list[float], opcional) — Passe um array de betas diretamente para o construtor para ignorar beta_start e beta_end.
  • original_inference_steps (int, padrão 50) — O número padrão de etapas de inferência usado para gerar um cronograma de timesteps linearmente espaçados, do qual, em última análise, extrairemos num_inference_steps timesteps igualmente espaçados para formar o cronograma final de timesteps.
  • clip_sample (bool, padrão False) — Recorta a amostra prevista para estabilidade numérica.
  • clip_sample_range (float, padrão 1.0) — A magnitude máxima para o recorte de amostras. Válido apenas quando clip_sample=True.
  • set_alpha_to_one (bool, padrão True) — Cada etapa de difusão usa o valor do produto dos alfas nessa etapa e na etapa anterior. Para a etapa final, não há um alfa anterior. Quando esta opção é True, o produto do alfa anterior é fixado em 1; caso contrário, é usado o valor do alfa na etapa 0.
  • steps_offset (int, padrão 0) — Um deslocamento adicionado às etapas de inferência, conforme exigido por algumas famílias de modelos.
  • prediction_type (str, defaults to "epsilon") — Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).
  • thresholding (bool, padrão False) — Se deve usar o método de “limiar dinâmico”. Isso não é adequado para modelos de difusão em espaço latente, como o Stable Diffusion.
  • dynamic_thresholding_ratio (float, padrão 0.995) — A proporção para o método de limitação dinâmica. Válido apenas quando thresholding=True.
  • sample_max_value (float, padrão 1.0) — O valor de limiar para o thresholding dinâmico. Válido apenas quando thresholding=True.
  • timestep_spacing (str, padrão "leading") — A forma como os timesteps devem ser escalados. Consulte a Tabela 2 do artigo Common Diffusion Noise Schedules and Sample Steps are Flawed para mais informações.
  • timestep_scaling (float, padrão 10.0) — O fator pelo qual os timesteps serão multiplicados ao calcular as condições de fronteira do modelo de consistência c_skip e c_out. Aumentar esse valor reduz o erro de aproximação (embora o erro de aproximação com o padrão de 10.0 já seja bastante pequeno).
  • rescale_betas_zero_snr (bool, padrão False) — Se deve reescalar os betas para ter SNR terminal zero. Isso permite que o modelo gere amostras muito claras e escuras, em vez de limitá-lo a amostras com brilho médio. Relacionado de forma solta a --offset_noise.

LCMScheduler estende o procedimento de desruidização introduzido em modelos probabilísticos de difusão de desruidização (DDPMs) com orientação não markoviana.

Este modelo herda de SchedulerMixin e ConfigMixin. ~ConfigMixin cuida de armazenar todos os atributos de configuração que são passados na função __init__ do scheduler, como num_train_timesteps. Eles podem ser acessados via scheduler.config.num_train_timesteps. SchedulerMixin fornece funcionalidade geral de carregamento e salvamento por meio das funções SchedulerMixin.save_pretrained() e from_pretrained().

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Parâmetros

  • original_samples (torch.Tensor) — As amostras originais às quais o ruído será adicionado.
  • noise (torch.Tensor) — O ruído a ser adicionado às amostras.
  • timesteps (torch.IntTensor) — Os timesteps que indicam o nível de ruído para cada amostra.

Retorna

torch.Tensor

As amostras ruidosas.

Adicione ruído às amostras originais de acordo com a magnitude do ruído em cada timestep (este é o processo de difusão direta).

get_scalings_for_boundary_condition_discrete

< >

( timestep: int ) → tuple[float, float]

Parâmetros

  • timestep (int) — O passo de tempo discreto para o qual os escalonamentos devem ser calculados.

Retorna

tuple[float, float]

Uma tupla contendo c_skip (escala para a amostra de entrada) e c_out (escala para a amostra desrujada prevista).

Calcula as escalas das condições de fronteira (c_skip e c_out) para o passo de tempo discreto dado, conforme usado no Latent Consistency Model.

get_velocity

< >

( sample: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor

Parâmetros

  • sample (torch.Tensor) — A amostra de entrada.
  • noise (torch.Tensor) — O tensor de ruído.
  • timesteps (torch.IntTensor) — Os timesteps para o cálculo da velocidade.

Retorna

torch.Tensor

A velocidade calculada.

Calcule a previsão de velocidade a partir da amostra e do ruído de acordo com a fórmula de velocidade.

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

Parâmetros

  • timestep (float ou torch.Tensor) — O valor de timestep a ser encontrado no agendamento.
  • schedule_timesteps (torch.Tensor, opcional) — O agendamento de timesteps a ser pesquisado. Se None, usa self.timesteps.

Retorna

int

O índice do timestep no schedule. Para o primeiro passo, retorna o segundo índice se existirem múltiplas correspondências, a fim de evitar pular um sigma ao iniciar no meio do schedule (por exemplo, para image-to-image).

Encontre o índice de um timestep específico na agenda de timesteps.

previous_timestep

< >

( timestep ) → int or torch.Tensor

Parâmetros

  • timestep (int) — O timestep atual.

Retorna

int ou torch.Tensor

O passo de tempo anterior.

Calcule o passo de tempo anterior na cadeia de difusão.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Parâmetros

  • sample (torch.Tensor) — A amostra de entrada.
  • timestep (int, opcional) — O timestep atual na cadeia de difusão.

Retorna

torch.Tensor

Uma amostra de entrada escalada.

Garante a intercambiabilidade com agendadores que precisam escalar a entrada do modelo de desruidamento dependendo do passo de tempo atual.

set_begin_index

< >

( begin_index: int = 0 )

Parâmetros

  • begin_index (int, padrão 0) — O índice inicial do agendador.

Define o índice inicial para o agendador. Esta função deve ser executada a partir do pipeline antes da inferência.

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Noneoriginal_inference_steps: int | None = Nonetimesteps: list[int] | None = Nonestrength: float = 1.0 ) → None

Parâmetros

  • num_inference_steps (int, opcional) — O número de etapas de difusão usadas ao gerar amostras com um modelo pré-treinado. Se usado, timesteps deve ser None.
  • device (str ou torch.device, opcional) — O dispositivo para o qual os timesteps devem ser movidos. Se None, os timesteps não são movidos.
  • original_inference_steps (int, opcional) — O número original de etapas de inferência, que será usado para gerar um cronograma de timesteps linearmente espaçados (que é diferente da implementação padrão do diffusers). Em seguida, tomaremos num_inference_steps timesteps desse cronograma, espaçados uniformemente em termos de índices, e usaremos isso como nosso cronograma final de timesteps. Se não for definido, o valor padrão será o atributo original_inference_steps.
  • timesteps (list[int], opcional) — Passos de tempo personalizados usados para suportar espaçamento arbitrário entre os passos de tempo. Se None, a estratégia padrão de espaçamento de passos de tempo, com espaçamento igual entre os passos de tempo no agendamento de treinamento/destilação, é utilizada. Se timesteps for passado, num_inference_steps deve ser None.
  • strength (float, padrão 1.0) — Fator de intensidade usado para gerar um agendamento parcial de passos temporais (por exemplo, para image-to-image). Um valor de 1.0 usa o agendamento completo.

Retorna

None

Define os passos discretos usados para a cadeia de difusão (a ser executado antes da inferência).

etapa

< >

( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → LCMSchedulerOutput or tuple

Parâmetros

  • model_output (torch.Tensor) — A saída direta do modelo de difusão aprendido.
  • timestep (int) — O timestep discreto atual na cadeia de difusão.
  • sample (torch.Tensor) — Uma instância atual de uma amostra criada pelo processo de difusão.
  • generator (torch.Generator, opcional) — Um gerador de números aleatórios para amostragem reprodutível.
  • return_dict (bool, padrão True) — Se deve ou não retornar um LCMSchedulerOutput ou tuple.

Retorna

LCMSchedulerOutput ou tuple

If return_dict is True, LCMSchedulerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

Preveja a amostra do passo de tempo anterior revertendo o SDE. Esta função propaga o processo de difusão a partir das saídas do modelo aprendido (na maioria das vezes, o ruído previsto).

Update on GitHub