Diffusers documentation
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler é baseado na amostragem por flow-matching introduzida em Stable Diffusion 3.
FlowMatchEulerDiscreteScheduler
classe diffusers.FlowMatchEulerDiscreteScheduler
< source >( num_train_timesteps: int = 1000shift: float = 1.0use_dynamic_shifting: bool = Falsebase_shift: float | None = 0.5max_shift: float | None = 1.15base_image_seq_len: int = 256max_image_seq_len: int = 4096invert_sigmas: bool = Falseshift_terminal: float = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falsetime_shift_type: typing.Literal['exponential', 'linear'] = 'exponential'stochastic_sampling: bool = False )
Parâmetros
- num_train_timesteps (
int, padrão 1000) — O número de etapas de difusão para treinar o modelo. - shift (
float, padrão 1.0) — O valor de deslocamento para o agendamento de passos de tempo. - use_dynamic_shifting (
bool, padrão False) — Se deve aplicar o timestep shifting em tempo real com base na resolução da imagem. - base_shift (
float, padrão 0.5) — Valor para estabilizar a geração de imagens. Aumentarbase_shiftreduz a variação e a imagem fica mais consistente com a saída desejada. - max_shift (
float, padrão 1.15) — Variação de valor permitida para os vetores latentes. Aumentarmax_shiftincentiva mais variação e a imagem pode ficar mais exagerada ou estilizada. - base_image_seq_len (
int, padrão 256) — O comprimento da sequência de imagem base. - max_image_seq_len (
int, padrão 4096) — O comprimento máximo da sequência de imagem. - invert_sigmas (
bool, padrão False) — Se deve inverter os sigmas. - shift_terminal (
float, padrão None) — O valor final do cronograma de passos de tempo deslocados. - use_karras_sigmas (
bool, padrão False) — Se deve usar sigmas de Karras para os tamanhos de passo no agendamento de ruído durante a amostragem. - use_exponential_sigmas (
bool, padrão False) — Se deve usar sigmas exponenciais para os tamanhos de passo no agendamento de ruído durante a amostragem. - use_beta_sigmas (
bool, padrão False) — Se deve usar beta sigmas para os tamanhos de passo no agendamento de ruído durante a amostragem. - time_shift_type (
str, padrão “exponential”) — O tipo de deslocamento de passo de tempo dinâmico dependente da resolução a ser aplicado. Pode ser “exponential” ou “linear”. - stochastic_sampling (
bool, padrão False) — Se deve usar amostragem estocástica.
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.
index_for_timestep
< source >( timestep: typing.Union[float, torch.FloatTensor]schedule_timesteps: typing.Optional[torch.FloatTensor] = None ) → int
Obtenha o índice para o timestep dado.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: typing.Optional[torch.FloatTensor] = None ) → torch.FloatTensor
Processo de propagação no flow-matching
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_shift
< source >( shift: float )
Define o valor de deslocamento para o agendador.
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: list[float] | None = Nonemu: float | None = Nonetimesteps: 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. - device (
stroutorch.device, opcional) — O dispositivo para o qual os timesteps devem ser movidos. SeNone, os timesteps não são movidos. - sigmas (
list[float], opcional) — Valores personalizados para sigmas a serem usados em cada etapa de difusão. SeNone, os sigmas são calculados automaticamente. - mu (
float, opcional) — Determina a quantidade de deslocamento aplicada aos sigmas ao executar o deslocamento de passo de tempo dependente da resolução. - timesteps (
list[float], opcional) — Valores personalizados para os timesteps a serem usados em cada etapa de difusão. SeNone, os timesteps são calculados automaticamente.
Define os passos discretos usados para a cadeia de difusão (a ser executado antes da inferência).
etapa
< source >( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Noneper_token_timesteps: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → FlowMatchEulerDiscreteSchedulerOutput or tuple
Parâmetros
- model_output (
torch.FloatTensor) — A saída direta do modelo de difusão aprendido. - timestep (
float) — O timestep discreto atual na cadeia de difusão. - sample (
torch.FloatTensor) — Uma instância atual de uma amostra criada pelo processo de difusão. - s_churn (
float) — - s_tmin (
float) — - s_tmax (
float) — - s_noise (
float, padrão 1.0) — Fator de escala para o ruído adicionado à amostra. - generator (
torch.Generator, opcional) — Um gerador de números aleatórios. - per_token_timesteps (
torch.Tensor, opcional) — Os timesteps para cada token na amostra. - return_dict (
bool, padrãoTrue) — Se deve ou não retornar umFlowMatchEulerDiscreteSchedulerOutputou uma tupla.
Retorna
FlowMatchEulerDiscreteSchedulerOutput ou tuple
Se True for o valor de `return_dict`,
FlowMatchEulerDiscreteSchedulerOutput é retornado,
caso contrário, uma tupla é retornada, onde o primeiro elemento é o tensor da amostra.
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).
stretch_shift_to_terminal
< source >( t: Tensor ) → torch.Tensor
Estica e desloca o cronograma de timesteps para garantir que ele termine no valor de configuração shift_terminal configurado.
time_shift
< source >( mu: floatsigma: floatt: Tensor ) → torch.Tensor
Aplicar o deslocamento temporal aos sigmas.