Diffusers documentation

KDPM2DiscreteScheduler

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

KDPM2DiscreteScheduler

O KDPM2DiscreteScheduler é inspirado no paper Elucidating the Design Space of Diffusion-Based Generative Models, e o scheduler foi portado e criado por Katherine Crowson.

O código original pode ser encontrado em crowsonkb/k-diffusion.

KDPM2DiscreteScheduler

classe diffusers.KDPM2DiscreteScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseprediction_type: str = 'epsilon'timestep_spacing: str = 'linspace'steps_offset: int = 0 )

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 "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 ou scaled_linear.
  • trained_betas (np.ndarray ou list[float], opcional) — Passe um array de betas diretamente para o construtor para ignorar beta_start e beta_end.
  • use_karras_sigmas (bool, 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, 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, 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.
  • 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).
  • timestep_spacing (str, padrão "linspace") — 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.
  • steps_offset (int, padrão 0) — Um deslocamento adicionado às etapas de inferência, conforme exigido por algumas famílias de modelos.

O KDPM2DiscreteScheduler é inspirado no DPMSolver2 e no Algoritmo 2 do artigo Elucidating the Design Space of Diffusion-Based Generative Models.

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.

scale_model_input

< >

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

Parâmetros

  • sample (torch.Tensor) — A amostra de entrada.
  • timestep (float ou torch.Tensor) — 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: intdevice: typing.Union[str, torch.device, NoneType] = Nonenum_train_timesteps: int | None = None )

Parâmetros

  • num_inference_steps (int) — 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.
  • num_train_timesteps (int, opcional) — O número de etapas de difusão usadas para treinar o modelo. Se None, self.config.num_train_timesteps é usado.

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

etapa

< >

( model_output: typing.Union[torch.Tensor, numpy.ndarray]timestep: typing.Union[float, torch.Tensor]sample: typing.Union[torch.Tensor, numpy.ndarray]return_dict: bool = True )

Parâmetros

  • model_output (torch.Tensor ou np.ndarray) — 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 ou np.ndarray) — Uma instância atual de uma amostra criada pelo processo de difusão.
  • return_dict (bool, padrão True) — Se deve ou não retornar um KDPM2DiscreteSchedulerOutput ou uma tupla.

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

SchedulerOutput

classe diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

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.

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

Update on GitHub