Diffusers documentation

EDMEulerScheduler

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

EDMEulerScheduler

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

EDMEulerScheduler

classe diffusers.EDMEulerScheduler

< >

( sigma_min: float = 0.002sigma_max: float = 80.0sigma_data: float = 0.5sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras'num_train_timesteps: int = 1000prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'rho: float = 7.0final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero' )

Parâmetros

  • sigma_min (float, opcional, padrão 0.002) — Magnitude mínima de ruído no agendamento de sigma. Isso foi definido como 0.002 no paper EDM [1]; um intervalo razoável é [0, 10].
  • sigma_max (float, opcional, padrão 80.0) — Magnitude máxima de ruído no agendamento de sigma. Isso foi definido como 80.0 no paper EDM [1]; um intervalo razoável é [0.2, 80.0].
  • sigma_data (float, opcional, padrão 0.5) — O desvio padrão da distribuição dos dados. Isso é definido como 0,5 no artigo EDM [1].
  • sigma_schedule (Literal["karras", "exponential"], opcional, padrão "karras") — Agenda de sigma para calcular os sigmas. Por padrão, usamos a agenda introduzida no paper do EDM (https://huggingface.co/papers/2206.00364). A agenda "exponential" foi incorporada neste modelo: https://huggingface.co/stabilityai/cosxl.
  • num_train_timesteps (int, opcional, padrão 1000) — O número de etapas de difusão para treinar o modelo.
  • prediction_type (Literal["epsilon", "v_prediction"], opcional, padrão "epsilon") — Tipo de previsão da função do agendador. "epsilon" prevê o ruído do processo de difusão, e "v_prediction" (veja a seção 2.4 do paper Imagen Video).
  • rho (float, opcional, padrão 7.0) — O parâmetro rho usado para calcular o agendamento de sigma Karras, que é definido como 7.0 no paper EDM [1].
  • final_sigmas_type (Literal["zero", "sigma_min"], opcional, 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.

Implementa o agendador Euler na formulação EDM, conforme apresentado em Karras et al. 2022 [1].

[1] Karras, Tero, et al. “Elucidating the Design Space of Diffusion-Based Generative Models.” https://huggingface.co/papers/2206.00364

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.

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.

precondition_inputs

< >

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

Parâmetros

  • sample (torch.Tensor) — O tensor de amostra de entrada para pré-condicionamento.
  • sigma (float ou torch.Tensor) — O valor atual de sigma (nível de ruído).

Retorna

torch.Tensor

A amostra de entrada escalada.

Pré-condicione a amostra de entrada escalando-a de acordo com a formulação EDM.

precondition_noise

< >

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

Parâmetros

  • sigma (float ou torch.Tensor) — O valor de sigma (nível de ruído) a ser pré-condicionado.

Retorna

torch.Tensor

O valor de ruído pré-condicionado calculado como 0.25 * log(sigma).

Pré-condicione o nível de ruído aplicando uma transformação logarítmica.

precondition_outputs

< >

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

Parâmetros

  • sample (torch.Tensor) — O tensor de amostra de entrada.
  • model_output (torch.Tensor) — A saída direta do modelo de difusão aprendido.
  • sigma (float ou torch.Tensor) — O valor atual de sigma (nível de ruído).

Retorna

torch.Tensor

A amostra desruída calculada combinando a conexão de atalho e a escala de saída.

Pré-condicione as saídas do modelo de acordo com a formulação do EDM.

scale_model_input

< >

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

Parâmetros

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

Retorna

torch.Tensor

Uma amostra de entrada escalada.

Escala a entrada do modelo de desruidamento para corresponder ao algoritmo Euler. 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 = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = 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.
  • 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.
  • sigmas (torch.Tensor | list[float], opcional) — Sigmas personalizados para usar no processo de desruidamento. Se não definidos, o comportamento padrão quando num_inference_steps é passado será utilizado.

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 = Truepred_original_sample: typing.Optional[torch.Tensor] = None ) → EDMEulerSchedulerOutput 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) — A quantidade de estocasticidade a ser adicionada em cada etapa. Valores maiores adicionam mais ruído.
  • s_tmin (float, opcional, padrão 0.0) — O limiar mínimo de sigma abaixo do qual nenhum ruído é adicionado.
  • s_tmax (float, opcional, padrão float("inf")) — O limiar máximo de sigma acima do qual nenhum 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 reprodutibilidade.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um EDMEulerSchedulerOutput ou uma tupla.
  • pred_original_sample (torch.Tensor, opcional) — A amostra desruído prevista de uma etapa anterior. Se fornecida, ignora a recomputação.

Retorna

EDMEulerSchedulerOutput ou tuple

Se return_dict for True, um EDMEulerSchedulerOutput é retornado; caso contrário, uma tupla é retornada, em que o primeiro elemento é o tensor da amostra anterior e o segundo elemento é o tensor da 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).

EDMEulerSchedulerOutput

classe diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput

< >

( 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