Diffusers documentation

EulerDiscreteScheduler

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

EulerDiscreteScheduler

O agendador Euler (Algoritmo 2) é do paper Elucidating the Design Space of Diffusion-Based Generative Models de Karras et al. Este é um agendador rápido que frequentemente gera bons resultados em 20-30 passos. O agendador é baseado na implementação original de k-diffusion por Katherine Crowson.

EulerDiscreteScheduler

classe diffusers.EulerDiscreteScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneprediction_type: str = 'epsilon'interpolation_type: str = 'linear'use_karras_sigmas: bool | None = Falseuse_exponential_sigmas: bool | None = Falseuse_beta_sigmas: bool | None = Falsesigma_min: float | None = Nonesigma_max: float | None = Nonetimestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'linspace'timestep_type: typing.Literal['discrete', 'continuous'] = 'discrete'steps_offset: int = 0rescale_betas_zero_snr: bool = Falsefinal_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

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.0001) — O valor inicial de beta para a inferência.
  • beta_end (float, padrão 0.02) — O valor final de beta.
  • beta_schedule (Literal["linear", "scaled_linear", "squaredcos_cap_v2"], padrão "linear") — O agendamento de beta, um mapeamento de um intervalo de betas para uma sequência de betas para o passo do modelo. Escolha entre "linear", "scaled_linear" ou "squaredcos_cap_v2".
  • trained_betas (np.ndarray, opcional) — Passe um array de betas diretamente para o construtor para ignorar beta_start e beta_end.
  • prediction_type (Literal["epsilon", "sample", "v_prediction"], defaults to "epsilon", optional) — 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).
  • interpolation_type (Literal["linear", "log_linear"], padrão "linear", opcional) — O tipo de interpolação para calcular os sigmas intermediários nas etapas de remoção de ruído do agendador. Deve ser um de "linear" ou "log_linear".
  • use_karras_sigmas (bool, opcional, padrão False) — Se deve usar sigmas de Karras para os tamanhos de passo no agendamento de ruído durante o processo de amostragem. Se True, os sigmas são determinados de acordo com uma sequência de níveis de ruído {σi}.
  • use_exponential_sigmas (bool, opcional, padrão False) — Se deve usar sigmas exponenciais para os tamanhos de passo no agendamento de ruído durante o processo de amostragem.
  • use_beta_sigmas (bool, opcional, padrão False) — Se deve usar beta sigmas para os tamanhos de passo no agendamento de ruído durante o processo de amostragem. Consulte Beta Sampling is All You Need para mais informações.
  • sigma_min (float, opcional) — O valor mínimo de sigma para o agendamento de ruído. Se não for fornecido, o padrão é o último sigma do agendamento.
  • sigma_max (float, opcional) — O valor máximo de sigma para o agendamento de ruído. Se não for fornecido, o padrão é o primeiro sigma do agendamento.
  • timestep_spacing (Literal["linspace", "leading", "trailing"], padrão "linspace") — A forma como os timesteps devem ser escalados. Consulte a Tabela 2 do Common Diffusion Noise Schedules and Sample Steps are Flawed para mais informações.
  • timestep_type (Literal["discrete", "continuous"], padrão "discrete") — O tipo de timesteps a ser usado. Pode ser "discrete" ou "continuous".
  • steps_offset (int, padrão 0) — Um deslocamento adicionado às etapas de inferência, conforme exigido por algumas famílias de modelos.
  • 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.
  • final_sigmas_type (Literal["zero", "sigma_min"], padrão "zero") — O valor final de sigma para o agendamento de ruído durante o processo de amostragem. Se "sigma_min", o sigma final é o mesmo que o último sigma no agendamento de treinamento. Se "zero", o sigma final é definido como 0.

Euler scheduler.

Este modelo herda de SchedulerMixin e ConfigMixin. Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os agendadores, como carregamento e salvamento.

add_noise

< >

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

Parâmetros

  • original_samples (torch.Tensor) — As amostras originais às quais o ruído será adicionado.
  • noise (torch.Tensor) — O tensor de ruído a ser adicionado às amostras originais.
  • timesteps (torch.Tensor) — Os timesteps nos quais adicionar ruído, determinando o nível de ruído a partir do agendamento.

Retorna

torch.Tensor

As amostras ruidosas com ruído adicionado, escalado de acordo com a agenda de passos temporais.

Adicione ruído às amostras originais de acordo com o agendamento de ruído nos timesteps especificados.

get_velocity

< >

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

Parâmetros

  • sample (torch.Tensor) — A amostra de entrada para a qual a velocidade deve ser calculada.
  • noise (torch.Tensor) — O tensor de ruído correspondente à amostra.
  • timesteps (torch.Tensor) — Os timesteps nos quais calcular a velocidade.

Retorna

torch.Tensor

A previsão de velocidade calculada como sqrt(alpha_prod) * noise - sqrt(1 - alpha_prod) * sample.

Calcule a previsão de velocidade para a amostra e o ruído dados nos timesteps especificados.

Este método implementa a previsão de velocidade usada em modelos de v-prediction, que prevê uma combinação linear da amostra e do ruído.

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.

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

Parâmetros

  • sample (torch.Tensor) — A amostra de entrada a ser escalada.
  • timestep (float ou torch.Tensor) — O timestep atual na cadeia de difusão.

Retorna

torch.Tensor

Uma amostra de entrada escalonada, dividida por (sigma**2 + 1) ** 0.5.

Garante a intercambiabilidade com agendadores que precisam escalar a entrada do modelo de desruidamento dependendo do passo de tempo atual. Escala a entrada do modelo de desruidamento por (sigma**2 + 1) ** 0.5 para corresponder ao algoritmo Euler.

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 = Nonedevice: typing.Union[str, torch.device] = Nonetimesteps: list[int] | None = Nonesigmas: list[float] | None = 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 None, timesteps ou sigmas devem ser fornecidos.
  • 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.
  • timesteps (list[int], opcional) — Timesteps personalizados usados para suportar um agendamento de timesteps arbitrário. Se None, os timesteps serão gerados com base no atributo timestep_spacing. Se timesteps for passado, num_inference_steps e sigmas devem ser None, e o atributo timestep_spacing será ignorado.
  • sigmas (list[float], opcional) — Sigmas personalizados usados para suportar um agendamento de timesteps arbitrário. Se None, os timesteps e sigmas serão gerados com base nos atributos relevantes do agendador. Se sigmas for passado, num_inference_steps e timesteps devem ser None, e os timesteps serão gerados com base no agendamento de sigmas personalizado.

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

etapa

< >

( model_output: Tensortimestep: typing.Union[float, torch.Tensor]sample: Tensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → EulerDiscreteSchedulerOutput or tuple

Parâmetros

  • model_output (torch.Tensor) — A saída direta do modelo de difusão aprendido.
  • timestep (float ou torch.Tensor) — 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.
  • s_churn (float, opcional, padrão 0.0) — Parâmetro de estocasticidade que controla a quantidade de ruído adicionada durante a amostragem. Valores maiores aumentam a aleatoriedade.
  • s_tmin (float, opcional, padrão 0.0) — Limite mínimo de timestep para aplicar estocasticidade. Somente timesteps acima deste valor terão ruído adicionado.
  • s_tmax (float, opcional, padrão inf) — Limite máximo de timestep para aplicar estocasticidade. Somente timesteps abaixo deste valor terão ruído adicionado.
  • s_noise (float, opcional, padrão 1.0) — Fator de escala para o ruído adicionado à amostra.
  • generator (torch.Generator, opcional) — Um gerador de números aleatórios para amostragem reprodutível.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um EulerDiscreteSchedulerOutput ou uma tupla.

Se return_dict for True, EulerDiscreteSchedulerOutput é retornado; caso contrário, uma tupla é retornada, em que o primeiro elemento é o tensor da amostra e o segundo elemento é a amostra original prevista.

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).

EulerDiscreteSchedulerOutput

classe diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )

Parâmetros

  • prev_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imagens) — Amostra calculada (x_{t-1}) do passo de tempo anterior. prev_sample deve ser usado como entrada do modelo no loop de remoção de ruído.
  • pred_original_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imagens) — A amostra desrujida prevista (x_{0}) com base na saída do modelo do timestep atual. pred_original_sample pode ser usado para visualizar o progresso ou para orientação.

Classe de saída para a saída da função step do agendador.

Update on GitHub