Diffusers documentation

FlowMapEulerDiscreteScheduler

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

FlowMapEulerDiscreteScheduler

FlowMapEulerDiscreteScheduler é um amostrador no estilo Euler projetado para modelos de difusão destilados por flow-map. Os modelos de flow-map aprendem transições de intervalo arbitrário zt→zr\mathbf{z}_t \to \mathbf{z}_r em vez do mapeamento fixo zt→z0\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 a 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

classe diffusers.FlowMapEulerDiscreteScheduler

< >

( num_train_timesteps: int = 1000shift: 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 flow-map 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áriozt→zrz_t \to z_r em vez do mapeamento fixozt→z0z_t \to z_0 dos modelos de consistência, permitindo que um único checkpoint destilado seja avaliado em 1, 2, 4, 8, … NFE sem re-treinamento. O step método avança a amostra do timestep para o 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

< >

( sigmas: Tensor )

Aplica a transformação de deslocamento configurada a um tensor sigma.

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

< >

( sample: Tensor*args**kwargs )

Escala de identidade sem operação. Fornecida para compatibilidade de API com outros agendadores do Diffusers.

scale_noise

< >

( sample: FloatTensortimestep: 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

< >

( 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

< >

( num_inference_steps: typing.Optional[int] = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: typing.Optional[typing.List[float]] = Nonetimesteps: 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], optional) — Custom sigma schedule of length num_inference_steps. The terminal 0 sigma is appended automatically. The configured shift is applied on top.
  • timesteps (List[float], opcional) — Agenda 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 passo de inferência, correspondendo a FlowMatchEulerDiscreteScheduler. O sigma final (0) é o ponto final implícito do último passo e é adicionado automaticamente quando sigmas / timesteps são fornecidos pelo usuário.

etapa

< >

( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorr_timestep: typing.Union[float, torch.FloatTensor, NoneType] = Nonereturn_dict: bool = True ) → [FlowMapEulerDiscreteSchedulerOutput] or tuple

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) — Current sample{@html "ztz_tzt​"}.
  • 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 é{@html "zrz_rzr​"}. 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, ele assume 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 agendamento cuja relação timestep / sigma seja não linear (por exemplo, um shift personalizado) permaneça correto. Para um r_timestep fora do agendamento, o scheduler recorre a r_timestep / num_train_timesteps, de modo que a amostragem em qualquer passo fora do agendamento continua sendo suportada.

Update on GitHub