Buckets:
FlowMapEulerDiscreteScheduler
FlowMapEulerDiscreteScheduler es un muestreador de estilo Euler diseñado para modelos de difusión destilados con flow-map. Los modelos de flow-map aprenden transiciones de intervalo arbitrario $\mathbf{z}_t \to \mathbf{z}_r$ en lugar del mapeo fijo $\mathbf{z}_t \to \mathbf{z}_0$ de los modelos de consistencia. Ambos extremos del paso los proporciona el llamador, lo que permite el muestreo de cualquier número de pasos: un único checkpoint destilado puede evaluarse con 1, 2, 4, 8, 16... NFE sin necesidad de volver a entrenarlo.
El programador se introdujo en AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation y se incluye con las integraciones AnyFlowPipeline y AnyFlowFARPipeline, pero no es específico de AnyFlow: cualquier punto de control destilado mediante flow-map puede utilizarlo.
FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler[[diffusers.FlowMapEulerDiscreteScheduler]]
diffusers.FlowMapEulerDiscreteScheduler(num_train_timesteps: int = 1000, shift: float = 1.0)
Parámetros:
num_train_timesteps (int, por defecto 1000) : El número de pasos de difusión utilizados para entrenar el modelo de flujo subyacente.
shift (float, valor predeterminado 1.0) : Desplazamiento multiplicativo del paso de tiempo aplicado al programa de inferencia. shift=1.0 es la identidad; los valores mayores que 1.0 desplazan el programa hacia más desruido en los pasos posteriores (p. ej., shift=5 coincide con el valor predeterminado de Wan2.1).
Muestreador de estilo Euler para modelos de difusión destilados con mapa de flujo.
Los modelos flow-map aprenden transiciones de intervalo arbitrario en lugar del mapeo fijo de los modelos de consistencia, por lo que un único punto de control destilado puede evaluarse con 1, 2, 4, 8, ... NFE sin necesidad de volver a entrenarlo. El método step avanza la muestra desde timestep hasta r_timestep a lo largo de la velocidad predicha.
Introducido en AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation por Yuchao Gu, Guian Fang et al.
Este programador hereda de [SchedulerMixin] y [ConfigMixin]. Consulte la documentación de la superclase para los métodos genéricos implementados para todos los programadores (carga, guardado, etc.).
apply_shift[[diffusers.FlowMapEulerDiscreteScheduler.apply_shift]]
apply_shift(sigmas: Tensor)
Aplicar la transformación de desplazamiento configurada a un tensor sigma.
index_for_timestep[[diffusers.FlowMapEulerDiscreteScheduler.index_for_timestep]]
index_for_timestep(timestep: typing.Union[float, torch.FloatTensor])
Devuelve el índice de timestep en la programación actual, o None si no está en la programación.
La búsqueda se realiza contra self.timesteps con una pequeña tolerancia de punto flotante. Se utiliza para recuperar el sigma correspondiente sin asumir la relación lineal timesteps = sigmas * num_train_timesteps; de esta manera, un programa personalizado (p. ej., un desplazamiento no lineal, timesteps establecidos manualmente) se resuelve correctamente.
scale_model_input[[diffusers.FlowMapEulerDiscreteScheduler.scale_model_input]]
scale_model_input(sample: Tensor, *args, **kwargs)
Escalar de identidad sin operación. Se proporciona para compatibilidad de API con otros programadores de Diffusers.
scale_noise[[diffusers.FlowMapEulerDiscreteScheduler.scale_noise]]
scale_noise(sample: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], noise: typing.Optional[torch.FloatTensor] = None)
Interpola linealmente sample hacia noise según el timestep normalizado.
set_begin_index[[diffusers.FlowMapEulerDiscreteScheduler.set_begin_index]]
set_begin_index(begin_index: int = 0)
Establece el índice inicial del programador. Las tuberías que comienzan a mitad del programa (p. ej., imagen-a-imagen) llaman a esto entre set_timesteps y el primer step para anclar el despliegue.
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, optional) : Número de pasos de inferencia. Si es None, debe pasar sigmas o timesteps.
device (str o torch.device, opcional) : Dispositivo de destino para self.sigmas / self.timesteps.
sigmas (List[float], opcional) : Programa de sigma personalizado de longitud num_inference_steps. El sigma terminal 0 se añade automáticamente. El shift configurado se aplica encima.
timesteps (List[float], opcional) : Programa de pasos de tiempo personalizado de longitud num_inference_steps, en las mismas unidades que self.timesteps (es decir, escalado por num_train_timesteps). Se convierte internamente a sigmas. Si se pasan tanto sigmas como timesteps, sus longitudes deben coincidir.
Construye el calendario de pasos de inferencia.
Internamente, rastrea self.sigmas de longitud num_inference_steps + 1 (el desplazamiento configurado aplicado a un linspace de 1.0 a 0.0 por defecto); self.timesteps expone los primeros num_inference_steps sigmas escalados por num_train_timesteps, es decir, un timestep por paso de inferencia, coincidiendo con FlowMatchEulerDiscreteScheduler. El sigma final (0) es el extremo r implícito del último paso y se añade automáticamente cuando sigmas / timesteps son proporcionados por el usuario.
paso[[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) : Salida directa del modelo flow-map (velocidad media predicha).
timestep (float o torch.Tensor) : Paso de tiempo de origen t en las mismas unidades que self.timesteps.
sample (torch.Tensor) : Muestra actual .
r_timestep (float o torch.Tensor, opcional) : Paso temporal objetivo r. Por defecto, es el siguiente paso temporal en la programación cuando es None; pase un valor explícito para muestreo de cualquier paso. r_timestep == timestep no tiene efecto.
return_dict (bool, por defecto True) : Si se debe devolver un [FlowMapEulerDiscreteSchedulerOutput] (el valor predeterminado) o una tupla simple.
Devuelve: [FlowMapEulerDiscreteSchedulerOutput] o tuple
Cuando return_dict=True, devuelve un [FlowMapEulerDiscreteSchedulerOutput] cuyo prev_sample es . En caso contrario, devuelve una 1-tupla (prev_sample,).
Avance sample desde timestep hasta r_timestep usando la velocidad predicha por el modelo.
A diferencia de un planificador Euler estándar, ambos extremos del intervalo pueden ser proporcionados por el llamador, lo que permite una muestreo de cualquier paso: una única llamada al modelo puede avanzar desde t hasta cualquier objetivo r elegido (incluido r=0 para una generación de un solo paso). Cuando se omite r_timestep, toma por defecto el siguiente paso temporal del planificador (coincidiendo con la semántica de FlowMatchEulerDiscreteScheduler).
Internamente, las sigmas de origen y destino se recuperan indexando self.sigmas mediante index_for_timestep en lugar de dividir los timesteps de entrada por num_train_timesteps, por lo que cualquier programa cuya relación timestep / sigma sea no lineal (por ejemplo, un shift personalizado) se mantiene correcto. Para un r_timestep fuera del programa, el scheduler recurre a r_timestep / num_train_timesteps para que la muestreo en cualquier paso fuera del programa siga siendo compatible.
Xet Storage Details
- Size:
- 9.34 kB
- Xet hash:
- 94b48a2f342ea4a85a5eff8a76976ea280de9a834615b5ce9b76e5e68c91faab
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.