Diffusers documentation
EDMEulerScheduler
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
< source >( 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ão0.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ão80.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ão0.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 ossigmas. 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ão1000) — 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ão7.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 desigmapara 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
< source >( 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
< source >( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int
Parâmetros
- timestep (
floatoutorch.Tensor) — O valor de timestep a ser encontrado no agendamento. - schedule_timesteps (
torch.Tensor, opcional) — O agendamento de timesteps a ser pesquisado. SeNone, usaself.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
< source >( sample: Tensorsigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
Pré-condicione a amostra de entrada escalando-a de acordo com a formulação EDM.
precondition_noise
< source >( sigma: typing.Union[float, torch.Tensor] ) → torch.Tensor
Pré-condicione o nível de ruído aplicando uma transformação logarítmica.
precondition_outputs
< source >( 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 (
floatoutorch.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
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor
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
< source >( begin_index: int = 0 )
Define o índice inicial para o agendador. Esta função deve ser executada a partir do pipeline antes da inferência.
set_timesteps
< source >( 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 (
stroutorch.device, opcional) — O dispositivo para o qual os timesteps devem ser movidos. SeNone, 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 quandonum_inference_stepsé passado será utilizado.
Define os passos discretos usados para a cadeia de difusão (a ser executado antes da inferência).
etapa
< source >( 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 (
floatoutorch.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ão0.0) — A quantidade de estocasticidade a ser adicionada em cada etapa. Valores maiores adicionam mais ruído. - s_tmin (
float, opcional, padrão0.0) — O limiar mínimo de sigma abaixo do qual nenhum ruído é adicionado. - s_tmax (
float, opcional, padrãofloat("inf")) — O limiar máximo de sigma acima do qual nenhum ruído é adicionado. - s_noise (
float, opcional, padrão1.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ãoTrue) — 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
< source >( prev_sample: Tensorpred_original_sample: typing.Optional[torch.Tensor] = None )
Parâmetros
- prev_sample (
torch.Tensorde forma(batch_size, num_channels, height, width)para imagens) — Amostra calculada(x_{t-1})do passo de tempo anterior.prev_sampledeve ser usado como entrada do modelo no loop de remoção de ruído. - pred_original_sample (
torch.Tensorde 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_samplepode ser usado para visualizar o progresso ou para orientação.
Classe de saída para a saída da função step do agendador.