Buckets:
FlowMapEulerDiscreteScheduler
FlowMapEulerDiscreteScheduler é um amostrador no estilo Euler projetado para modelos de difusão destilados por flow-map. Modelos de flow-map aprendem transições de intervalo arbitrário $\mathbf{z}_t \to \mathbf{z}_r$, em vez do mapeamento fixo $\mathbf{z}_t \to \mathbf{z}_0$ dos modelos de consistência. Ambos os extremos do passo são fornecidos pelo chamador, o que permite amostragem em qualquer número de passos: um único checkpoint destilado pode ser avaliado com 1, 2, 4, 8, 16... NFE sem necessidade de re-treinamento.
O scheduler foi introduzido em AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation e é distribuído junto com as integrações AnyFlowPipeline e AnyFlowFARPipeline, mas não é específico do AnyFlow — qualquer checkpoint destilado por flow-map pode utilizá-lo.
FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler(num_train_timesteps: int = 1000, shift: float = 1.0)
Parâmetros:
num_train_timesteps (int, padrão 1000) : O número de etapas de difusão usadas para treinar o modelo de fluxo-mapa subjacente.
shift (float, padrão 1.0) : Deslocamento multiplicativo do passo de tempo aplicado ao agendamento de inferência. shift=1.0 é a identidade; valores maiores que 1.0 deslocam o agendamento para mais desruidamento nas etapas posteriores (por exemplo, shift=5 corresponde ao padrão do Wan2.1).
Amostrador estilo Euler para modelos de difusão destilados por mapa de fluxo.
Modelos de flow-map aprendem transições de intervalo arbitrário zt→zr, em vez do mapeamento fixo zt→z0 dos modelos de consistência, de modo que um único checkpoint destilado pode ser avaliado com 1, 2, 4, 8, ... NFE sem re-treinamento. O método step avança a amostra de timestep para r_timestep ao longo da velocidade prevista.
Introduzido em AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation por Yuchao Gu, Guian Fang et al.
Este agendador herda de [SchedulerMixin] e [ConfigMixin]. Consulte a documentação da superclasse para os métodos genéricos implementados para todos os agendadores (carregamento, salvamento, etc.).
apply_shift[[diffusers.FlowMapEulerDiscreteScheduler.apply_shift]]
apply_shift(sigmas: Tensor)
Aplica a transformação de deslocamento configurada a um tensor sigma.
index_for_timestep[[diffusers.FlowMapEulerDiscreteScheduler.index_for_timestep]]
index_for_timestep(timestep: typing.Union[float, torch.FloatTensor])
Retorna o índice de timestep no agendamento atual, ou None se estiver fora do agendamento.
A consulta é feita em relação a self.timesteps com uma pequena tolerância de ponto flutuante. É usado para recuperar o sigma correspondente sem assumir a relação linear timesteps = sigmas * num_train_timesteps — dessa forma, um agendamento personalizado (por exemplo, deslocamento não linear, timesteps definidos manualmente) ainda é resolvido corretamente.
scale_model_input[[diffusers.FlowMapEulerDiscreteScheduler.scale_model_input]]
scale_model_input(sample: Tensor, *args, **kwargs)
Escala de identidade sem operação. Fornecida para compatibilidade de API com outros agendadores do Diffusers.
scale_noise[[diffusers.FlowMapEulerDiscreteScheduler.scale_noise]]
scale_noise(sample: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], noise: typing.Optional[torch.FloatTensor] = None)
Interpole linearmente sample em direção a noise de acordo com o timestep normalizado.
set_begin_index[[diffusers.FlowMapEulerDiscreteScheduler.set_begin_index]]
set_begin_index(begin_index: int = 0)
Defina o índice inicial para o agendador. Pipelines que começam no meio do agendamento (por exemplo, image-to-image) chamam isso entre set_timesteps e o primeiro step para ancorar o rollout.
set_timesteps[[diffusers.FlowMapEulerDiscreteScheduler.set_timesteps]]
set_timesteps(num_inference_steps: typing.Optional[int] = None, device: typing.Union[str, torch.device] = None, sigmas: typing.Optional[typing.List[float]] = None, timesteps: typing.Optional[typing.List[float]] = None)
Parâmetros:
num_inference_steps (int, opcional) : Número de etapas de inferência. Se None, é necessário passar sigmas ou timesteps.
device (str ou torch.device, opcional) : Dispositivo de destino para self.sigmas / self.timesteps.
sigmas (List[float], opcional) : Agenda de sigmas personalizada de comprimento num_inference_steps. O sigma terminal 0 é adicionado automaticamente. O shift configurado é aplicado por cima.
timesteps (List[float], opcional) : Agenda de passos de tempo personalizada de comprimento num_inference_steps, nas mesmas unidades de self.timesteps (ou seja, escalada por num_train_timesteps). Convertida para sigmas internamente. Se tanto sigmas quanto timesteps forem passados, seus comprimentos devem corresponder.
Construa o cronograma de passos de inferência.
Internamente, rastreia self.sigmas de comprimento num_inference_steps + 1 (o shift configurado aplicado a um linspace de 1.0 a 0.0 por padrão); self.timesteps expõe os primeiros num_inference_steps sigmas escalados por num_train_timesteps — ou seja, um timestep por etapa de inferência, correspondendo a FlowMatchEulerDiscreteScheduler. O sigma final (0) é o ponto final implícito da última etapa e é adicionado automaticamente quando sigmas / timesteps são fornecidos pelo usuário.
etapa[[diffusers.FlowMapEulerDiscreteScheduler.step]]
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, r_timestep: typing.Union[float, torch.FloatTensor, NoneType] = None, return_dict: bool = True)
Parâmetros:
model_output (torch.Tensor) : Saída direta do modelo flow-map (velocidade média prevista).
timestep (float ou torch.Tensor) : Timestep de origem t nas mesmas unidades de self.timesteps.
sample (torch.Tensor) : Amostra atual zt.
r_timestep (float ou torch.Tensor, opcional) : Timestep alvo r. O padrão é o próximo timestep na agenda quando None; passe um valor explícito para amostragem em qualquer passo. r_timestep == timestep é uma operação sem efeito.
return_dict (bool, padrão True) : Se deve retornar um [FlowMapEulerDiscreteSchedulerOutput] (o padrão) ou uma tupla simples.
Retorna: [FlowMapEulerDiscreteSchedulerOutput] ou tuple
Quando return_dict=True, retorna um [FlowMapEulerDiscreteSchedulerOutput] cujo prev_sample é zr. Caso contrário, retorna uma 1-tupla (prev_sample,).
Avance sample de timestep para r_timestep usando a velocidade prevista pelo modelo.
Diferentemente de um agendador Euler padrão, ambas as extremidades do intervalo podem ser fornecidas pelo chamador, permitindo amostragem em qualquer passo: uma única chamada ao modelo pode avançar de t para qualquer alvo r escolhido (incluindo r=0 para uma geração em um único passo). Quando r_timestep é omitido, o valor padrão é o próximo passo de tempo no agendamento (correspondendo à semântica de FlowMatchEulerDiscreteScheduler).
Internamente, os sigmas de origem e destino são recuperados indexando self.sigmas via index_for_timestep, em vez de dividir os timesteps de entrada por num_train_timesteps, de modo que qualquer agenda cuja relação timestep / sigma seja não linear (por exemplo, um shift personalizado) permaneça correta. Para um r_timestep fora da agenda, o scheduler recorre a r_timestep / num_train_timesteps, de modo que a amostragem em qualquer passo fora da agenda continue sendo suportada.
Xet Storage Details
- Size:
- 9.22 kB
- Xet hash:
- 678215a01e50b2ab10a8e1984adf391360406487da536f70b2943c29f6edc2bf
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.