Diffusers documentation
PNDMScheduler
PNDMScheduler
PNDMScheduler, ou métodos numéricos pseudo para modelos de difusão, utiliza técnicas mais avançadas de integração de EDO, como Runge-Kutta e o método linear de múltiplos passos. A implementação original pode ser encontrada em crowsonkb/k-diffusion.
PNDMScheduler
classe diffusers.PNDMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneskip_prk_steps: bool = Falseset_alpha_to_one: bool = Falseprediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0 )
Parâmetros
- num_train_timesteps (
int, padrão1000) — O número de etapas de difusão para treinar o modelo. - beta_start (
float, padrão0.0001) — O valor inicial debetapara a inferência. - beta_end (
float, padrão0.02) — O valor final debeta. - beta_schedule (
"linear","scaled_linear"ou"squaredcos_cap_v2", padrão"linear") — O agendamento de beta, um mapeamento de um intervalo de beta para uma sequência de betas para o passo do modelo. - trained_betas (
np.ndarray, opcional) — Passe um array de betas diretamente para o construtor para ignorarbeta_startebeta_end. - skip_prk_steps (
bool, padrãoFalse) — Permite que o agendador pule as etapas de Runge-Kutta definidas no artigo original como necessárias antes das etapas PLMS. - set_alpha_to_one (
bool, padrãoFalse) — 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 em1; caso contrário, é usado o valor do alfa na etapa 0. - prediction_type (
"epsilon"ou"v_prediction", padrão"epsilon") — Tipo de previsão da função do agendador; pode serepsilon(prevê o ruído do processo de difusão) ouv_prediction(veja a seção 2.4 do paper Imagen Video). - timestep_spacing (
"linspace","leading"ou"trailing", padrão"leading") — A forma como os timesteps devem ser escalonados. Consulte a Tabela 2 do Common Diffusion Noise Schedules and Sample Steps are Flawed para mais informações. - steps_offset (
int, padrão0) — Um deslocamento adicionado às etapas de inferência, conforme exigido por algumas famílias de modelos.
PNDMScheduler usa métodos numéricos pseudo para modelos de difusão, como o Runge-Kutta e o método linear multi-step.
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
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Adicione ruído às amostras originais de acordo com a magnitude do ruído em cada timestep (este é o processo de difusão direta).
scale_model_input
< source >( sample: Tensor*args**kwargs ) → torch.Tensor
Garante a intercambiabilidade com agendadores que precisam escalar a entrada do modelo de desruidamento dependendo do passo de tempo atual.
set_timesteps
< source >( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )
Define os passos discretos usados para a cadeia de difusão (a ser executado antes da inferência).
etapa
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput 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. - return_dict (
bool, padrãoTrue) — Se deve ou não retornar um SchedulerOutput outuple.
Retorna
SchedulerOutput ou tuple
If return_dict is True, SchedulerOutput 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) e chama step_prk() ou step_plms() dependendo da variável interna counter.
step_plms
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput 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. - return_dict (
bool, padrãoTrue) — Se deve ou não retornar um SchedulerOutput ou uma tupla.
Retorna
SchedulerOutput ou tuple
If return_dict is True, SchedulerOutput 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 a amostra com o método multietapa linear. Ele executa uma passagem para frente várias vezes para aproximar a solução.
step_prk
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput 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. - return_dict (
bool, padrãoTrue) — Se deve ou não retornar um SchedulerOutput ou uma tupla.
Retorna
SchedulerOutput ou tuple
If return_dict is True, SchedulerOutput 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 EDE. Esta função propaga a amostra com o método de Runge-Kutta. Ela executa quatro passes para frente para aproximar a solução da equação diferencial.
SchedulerOutput
classe diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
Classe base para a saída da função step de um agendador.