Diffusers documentation

AnyFlow

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

LoRA

AnyFlow

AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation de NVIDIA, National University of Singapore y Massachusetts Institute of Technology, por Yuchao Gu, Guian Fang, Yuxin Jiang, Weijia Mao, Song Han, Han Cai y Mike Zheng Shou.

Resumen: AnyFlow es el primer marco de difusión de video de pasos arbitrarios basado en mapas de flujo, que permite a un único modelo (bidireccional o causal) adaptarse a presupuestos de inferencia arbitrarios.

La generación de video en pocos pasos ha avanzado significativamente gracias a los modelos de consistencia. Sin embargo, su rendimiento suele degradarse en los modelos de difusión de video de cualquier paso debido a la formulación de punto fijo. Para abordar esta limitación, presentamos AnyFlow, el primer marco de destilación de difusión de video de cualquier paso basado en mapas de flujo. En lugar de aprender solo el mapeo z_t → z_0, AnyFlow aprende transiciones z_t → z_r en intervalos de tiempo arbitrarios, lo que permite que un solo modelo se adapte a diferentes presupuestos de inferencia. Diseñamos una receta mejorada de entrenamiento de mapas de flujo hacia adelante que ajusta modelos de difusión de video preentrenados en modelos de mapas de flujo, e introducimos la Simulación hacia Atrás de Mapas de Flujo para habilitar la destilación en política para modelos de mapas de flujo. Experimentos extensos en arquitecturas bidireccionales y causales, a escalas que van desde 1.3B hasta 14B, en tareas de texto a video e imagen a video, demuestran que AnyFlow supera a las líneas base basadas en consistencia mientras preserva una alta fidelidad y una muestreo flexible bajo presupuestos de pasos variables.

Los pipelines de AnyFlow fueron aportados por el equipo de AnyFlow. El código original está disponible en GitHub, la página del proyecto se encuentra en nvlabs.github.io/AnyFlow y los modelos preentrenados pueden encontrarse en la colección nvidia/anyflow de Hugging Face.

Modelos disponibles:

CheckpointBackboneDescripción
nvidia/AnyFlow-Wan2.1-T2V-1.3B-DiffusersWan2.1 1.3BT2V bidireccional
nvidia/AnyFlow-Wan2.1-T2V-14B-DiffusersWan2.1 14BT2V bidireccional
nvidia/AnyFlow-FAR-Wan2.1-1.3B-DiffusersFAR + Wan2.1 1.3BT2V / I2V / V2V causal
nvidia/AnyFlow-FAR-Wan2.1-14B-DiffusersFAR + Wan2.1 14BT2V / I2V / V2V causal

AnyFlowPipeline está diseñado para modelos de difusión bidireccionales en la generación de texto a video (T2V). AnyFlowFARPipeline es un modelo de difusión causal por bloques que admite la generación de texto a video (T2V), la generación de imagen a video (I2V) y la continuación de video (V2V).

Generación con AnyFlow (T2V bidireccional)

import torch
from diffusers import AnyFlowPipeline
from diffusers.utils import export_to_video

pipe = AnyFlowPipeline.from_pretrained(
    "nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = (
    "An astronaut runs smoothly and appears almost weightless on the lunar surface, "
    "as seen from a low-angle shot that highlights the vast, desolate background of the moon. "
    "The moon's craters and rocky terrain are clearly visible, creating a stark contrast against "
    "the running astronaut who moves with graceful, fluid motions."
)
video = pipe(prompt, num_inference_steps=4, num_frames=81).frames[0]
export_to_video(video, "anyflow_t2v.mp4", fps=16)

Generación con AnyFlow (FAR Causal)

El pipeline causal selecciona entre T2V / I2V / V2V mediante el argumento video (o video_latents): omite ambos para texto a video simple, o pasa video=<tensor> de forma (B, T, C, H, W) en [0, 1] con T = 4n + 1 para condicionar en fotogramas existentes. Usa un único fotograma de condicionamiento para I2V y un clip más largo para la continuación V2V. Si ya tienes latentes pre-codificados en el layout del modelo, pásalos mediante video_latents=<tensor> para omitir la codificación VAE. video y video_latents son mutuamente excluyentes.

Los puntos de control publicados incluyen chunk_partition=[1, 3, 3, 3, 3, 3, 3, 2] (suma 21) en la configuración del transformer, correspondiente a los 81 fotogramas crudos canónicos (21 fotogramas latentes con la distancia temporal del VAE de 4). Cuando cambias num_frames, pasa un chunk_partition que sume (num_frames - 1) // 4 + 1; de lo contrario, el pipeline lanza un ValueError.

t2v
i2v
v2v
import torch
from diffusers import AnyFlowFARPipeline
from diffusers.utils import export_to_video

pipe = AnyFlowFARPipeline.from_pretrained(
    "nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", dtype=torch.bfloat16
).to("cuda")  # or "mps", "xpu", "cpu"

prompt = (
    "An astronaut runs smoothly and appears almost weightless on the lunar surface, "
    "as seen from a low-angle shot that highlights the vast, desolate background of the moon."
)
video = pipe(prompt, num_inference_steps=4, num_frames=81).frames[0]
export_to_video(video, "anyflow_far_t2v.mp4", fps=16)

Notas

  • La guía sin clasificador se fusiona en los puntos de control publicados, por lo que la inferencia no ejecuta una segunda pasada de adelante guiada. Mantenga el valor predeterminado guidance_scale=1.0 a menos que su propio punto de control requiera lo contrario.
  • FlowMapEulerDiscreteScheduler es de uso general. Puedes adjuntarlo a cualquier punto de control destilado de flow-map mediante from_pretrained(..., scheduler=FlowMapEulerDiscreteScheduler.from_config(...)).
  • AnyFlowPipeline utiliza AnyFlowTransformer3DModel (bidireccional). AnyFlowFARPipeline utiliza AnyFlowFARTransformer3DModel, que añade un patch embedding de cuadro comprimido y la máscara de bloques causal de FAR.
  • La carga de LoRA se admite mediante WanLoraLoaderMixin, el mismo mixin utilizado por las pipelines de Wan de origen.
  • Para las recetas de entrenamiento (entrenamiento de forward flow-map y destilación on-policy), consulte el marco de entrenamiento original de AnyFlow en NVlabs/AnyFlow; el entrenamiento está fuera del alcance de diffusers.

AnyFlowPipeline

clase diffusers.AnyFlowPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )

Parámetros

  • tokenizer ([AutoTokenizer]) — Tokenizer de google/umt5-xxl.
  • text_encoder ([UMT5EncoderModel]) — codificador de texto google/umt5-xxl.
  • transformer ([AnyFlowTransformer3DModel]) — Transformador 3D de flujo bidireccional.
  • vae ([AutoencoderKLWan]) — VAE que codifica y decodifica videos hacia y desde representaciones latentes.
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Muestreador de mapa de flujo. El pipeline ejecuta scheduler.step(..., timestep, sample, r_timestep) en cada paso de inferencia.

Pipeline de generación de texto a video bidireccional para puntos de control destilados con flow-map de AnyFlow, introducidos en AnyFlow.

AnyFlow aprende transiciones de intervalos arbitrarioszt→zrz_t \to z_r en lugar del mapeo fijozt→z0z_t \to z_0 de los modelos de consistencia, por lo que un único punto de control destilado puede evaluarse con 1, 2, 4, 8, 16… NFE sin necesidad de volver a entrenar. Este pipeline opera sobre el tensor completo del video en una sola pasada bidireccional; para la generación autoregresiva (causal) por fragmentos, usa AnyFlowFARPipeline.

El muestreo es un Euler simple en forma de velocidad media (z_r = z_t - (t - r) * u) sin re-ruido. Los puntos de control de NVIDIA publicados integran la guía libre de clasificador en los pesos del modelo, por lo que la configuración predeterminada guidance_scale=1.0 es la recomendada.

Este modelo hereda de [DiffusionPipeline]. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Nonevideo: typing.Optional[torch.Tensor] = Nonevideo_latents: typing.Optional[torch.Tensor] = Nonenegative_prompt: typing.Union[str, typing.List[str]] = Noneheight: int = 480width: int = 832num_frames: int = 81num_inference_steps: int = 50sigmas: typing.Optional[typing.List[float]] = Nonetimesteps: typing.Optional[typing.List[float]] = Noneguidance_scale: float = 1.0num_videos_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: typing.Optional[str] = 'np'return_dict: bool = Trueattention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']max_sequence_length: int = 512use_mean_velocity: bool = True ) → ~AnyFlowPipelineOutput or tuple

Parámetros

  • prompt (str o List[str], opcional) — El prompt o prompts para guiar la generación del video. Si no se define, pase prompt_embeds en su lugar.
  • video (torch.Tensor, opcional) — Fotogramas de condicionamiento previos al VAE con forma (B, T, C, H, W) en [0, 1]. Cuando se proporciona, el pipeline los codifica con el VAE y mantiene fijo el prefijo latente correspondiente durante el muestreo. Es mutuamente excluyente con video_latents.
  • video_latents (torch.Tensor, opcional) — Latentes VAE precodificados en el formato AnyFlow (B, T_latent, C, H_latent, W_latent). Omite la codificación VAE en el lado del pipeline. Es mutuamente excluyente con video.
  • negative_prompt (str o List[str], opcional) — El prompt o los prompts a evitar durante la generación de video. Se ignora cuando no se usa guía (guidance_scale < 1).
  • height (int, por defecto 480) — La altura en píxeles del video generado.
  • width (int, por defecto 832) — El ancho en píxeles del video generado.
  • num_frames (int, por defecto 81) — El número de fotogramas del video generado. Debe cumplir (num_frames - 1) % vae_scale_factor_temporal == 0.
  • num_inference_steps (int, por defecto 50) — El número de pasos de desruido. Los puntos de control destilados de AnyFlow admiten muestreo en cualquier paso, por lo que valores tan bajos como 1, 2, 4 o 8 son habituales. Se ignora cuando se proporciona sigmas o timesteps.
  • sigmas (List[float], optional) — Custom sigma schedule for any-step sampling, in [0, 1] and ordered from noisy to clean. Length determines the effective num_inference_steps; the scheduler appends the terminal 0 sigma.
  • timesteps (List[float], opcional) — Programa de pasos de tiempo personalizado para el muestreo de cualquier paso, en las mismas unidades que self.scheduler.timesteps (es decir, escalado por num_train_timesteps). Mutuamente excluyente con sigmas.
  • guidance_scale (float, por defecto 1.0) — Escala de guía libre de clasificador. Los puntos de control de AnyFlow publicados fusionan CFG en los pesos durante el entrenamiento; manténgala en 1.0 a menos que sepa que su punto de control espera lo contrario.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — El número de vídeos que se generarán por prompt.
  • generator (torch.Generator o List[torch.Generator], opcional) — Un torch.Generator para hacer que la generación sea determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados para usar como entradas. Si no se proporcionan, los latentes se muestrean del generator suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar las entradas de texto (p. ej., ponderación del prompt). Si no se proporcionan, las incrustaciones se generan a partir de prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas.
  • output_type (str, opcional, valor predeterminado "np") — El formato de salida. Uno de "pil", "np", "pt" o "latent".
  • return_dict (bool, opcional, valor predeterminado True) — Si se debe devolver un AnyFlowPipelineOutput en lugar de una tupla simple.
  • attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • callback_on_step_end (Callable, opcional) — Una función o PipelineCallback que se llama al final de cada paso de inferencia. Consulte callbacks para más detalles.
  • callback_on_step_end_tensor_inputs (List[str], opcional, valor predeterminado ["latents"]) — Las entradas de tensor que se reenvían a la función de callback. Debe ser un subconjunto de self._callback_tensor_inputs.
  • max_sequence_length (int, por defecto 512) — La longitud máxima de la secuencia del codificador de texto. Los prompts más largos se truncan.
  • use_mean_velocity (bool, por defecto True) — Cuando es True, el modelo flow-map se condiciona tanto en el paso de tiempo de origen t como en el paso de tiempo de destino r para predecir una velocidad media, coincidiendo con el comportamiento durante el entrenamiento. Desactívalo para replicar el pasoado bruto de Euler (r = t).

Devuelve

~AnyFlowPipelineOutput o tuple

Si return_dict es True, se devuelve AnyFlowPipelineOutput; en caso contrario, se devuelve una tuple cuyo primer elemento es el video generado.

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import torch
>>> from diffusers import AnyFlowPipeline
>>> from diffusers.utils import export_to_video

>>> pipe = AnyFlowPipeline.from_pretrained(
...     "nvidia/AnyFlow-Wan2.1-T2V-14B-Diffusers", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "A red panda eating bamboo in a forest, cinematic lighting"
>>> video = pipe(prompt, num_inference_steps=4, num_frames=33).frames[0]
>>> export_to_video(video, "anyflow_t2v.mp4", fps=16)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • do_classifier_free_guidance (bool, opcional, valor predeterminado True) — Si se debe usar classifier free guidance o no.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — Número de videos que deben generarse por prompt. Dispositivo torch en el que colocar las incrustaciones resultantes
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entrada negative_prompt.
  • device — (torch.device, opcional): dispositivo de torch
  • dtype — (torch.dtype, opcional): dtype de torch

Codifica el prompt en estados ocultos del codificador de texto.

encode_video

< >

( video: Tensorheight: intwidth: int )

Codifica un video en el espacio de píxeles en el diseño latente de AnyFlow.

Refleja la convención de un único helper de otros pipelines de diffusers (cf. WanImageToVideoPipeline.encode_image): encapsula el preprocesamiento, la codificación VAE y la normalización de latentes en una sola llamada. El formato de salida es (B, T_latent, C, H, W), que es lo que el transformer de AnyFlow espera para los fotogramas de condicionamiento.

AnyFlowFARPipeline

clase diffusers.AnyFlowFARPipeline

< >

( tokenizer: AutoTokenizertext_encoder: UMT5EncoderModeltransformer: AnyFlowFARTransformer3DModelvae: AutoencoderKLWanscheduler: FlowMapEulerDiscreteScheduler )

Parámetros

  • tokenizer ([AutoTokenizer]) — Tokenizer de google/umt5-xxl.
  • text_encoder ([UMT5EncoderModel]) — codificador de texto google/umt5-xxl.
  • transformer ([AnyFlowFARTransformer3DModel]) — Transformador 3D de flujo causal FAR.
  • vae ([AutoencoderKLWan]) — VAE que codifica y decodifica videos hacia y desde representaciones latentes.
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Muestreador de mapa de flujo.

Pipeline de texto a video / imagen a video / video a video causal (basado en FAR) para puntos de control de AnyFlow, introducido en AnyFlow.

El pipeline dirige un bucle de muestreo autoregresivo por bloques: cada bloque se desruidifica con pasos de flow-map mientras atiende únicamente a los bloques anteriores mediante atención causal bloque-esparcida, y la caché KV intermedia se reutiliza entre bloques.

El modo de tarea (T2V / I2V / V2V) se selecciona según el argumento de condicionamiento que se pase a __call__:

  • tanto video=None como video_latents=None — texto a video puro.
  • video=<tensor of shape (B, T, C, H, W) in [0, 1] with T = 4n + 1> — fotogramas de condicionamiento previos al VAE; el pipeline los codifica con el VAE. Pasa un video de un solo fotograma para I2V o un clip de varios fotogramas para V2V.
  • video_latents=<latent tensor of shape (B, T_latent, C, H_latent, W_latent)> — latentes ya codificados en el formato FAR (omite el paso de codificación VAE).

El backbone FAR es la variante causal Wan2.1 introducida por FAR. La inferencia es un Euler simple en forma de velocidad media por chunk, sin re-ruído. Se admite T2V / I2V / V2V conjunto mediante un único modelo destilado.

Este modelo hereda de [DiffusionPipeline]. Consulta la documentación de la clase superior para los métodos genéricos implementados en todas las tuberías (descarga, guardado, ejecución en un dispositivo específico, etc.).

__call__

< >

( prompt: typing.Union[str, typing.List[str]] = Nonevideo: typing.Optional[torch.Tensor] = Nonevideo_latents: typing.Optional[torch.Tensor] = Nonenegative_prompt: typing.Union[str, typing.List[str]] = Noneheight: int = 480width: int = 832num_frames: int = 81num_inference_steps: int = 50sigmas: typing.Optional[typing.List[float]] = Nonetimesteps: typing.Optional[typing.List[float]] = Noneguidance_scale: float = 1.0num_videos_per_prompt: typing.Optional[int] = 1generator: typing.Union[torch.Generator, typing.List[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: typing.Optional[str] = 'np'return_dict: bool = Trueattention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonecallback_on_step_end: typing.Union[typing.Callable[[int, int, typing.Dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: typing.List[str] = ['latents']max_sequence_length: int = 512use_mean_velocity: bool = Trueuse_kv_cache: bool = Truechunk_partition: typing.Optional[typing.List[int]] = None ) → ~AnyFlowPipelineOutput or tuple

Parámetros

  • prompt (str o List[str], opcional) — El prompt o prompts para guiar la generación del video. Si no se define, pase prompt_embeds en su lugar.
  • video (torch.Tensor, opcional) — Fotogramas de condicionamiento previos al VAE con forma (B, T, C, H, W) en [0, 1] (T = 4n + 1). Cuando se proporciona, el pipeline los codifica con el VAE y mantiene fijo el prefijo latente correspondiente durante el muestreo. Es mutuamente exclusivo con video_latents.
  • video_latents (torch.Tensor, opcional) — Latentes VAE precodificados en el formato FAR (B, T_latent, C, H_latent, W_latent). Omite la codificación VAE en el lado del pipeline. Es mutuamente excluyente con video.
  • negative_prompt (str o List[str], opcional) — El prompt o los prompts a evitar durante la generación de video. Se ignora cuando no se usa guía (guidance_scale < 1).
  • height (int, por defecto 480) — La altura en píxeles del video generado.
  • width (int, por defecto 832) — El ancho en píxeles del video generado.
  • num_frames (int, por defecto 81) — El número de fotogramas del video generado. Debe cumplir (num_frames - 1) % vae_scale_factor_temporal == 0.
  • num_inference_steps (int, por defecto 50) — El número de pasos de desruido por bloque. Los puntos de control destilados de AnyFlow-FAR admiten muestreo con cualquier número de pasos (1, 2, 4, 8, …). Se ignora cuando se proporciona sigmas o timesteps.
  • sigmas (List[float], optional) — Custom sigma schedule for any-step sampling, in [0, 1] and ordered from noisy to clean. Length determines the effective num_inference_steps; the scheduler appends the terminal 0 sigma.
  • timesteps (List[float], opcional) — Programa de pasos de tiempo personalizado para el muestreo de cualquier paso, en las mismas unidades que self.scheduler.timesteps (es decir, escalado por num_train_timesteps). Mutuamente excluyente con sigmas.
  • guidance_scale (float, por defecto 1.0) — Escala de guía libre de clasificador. Los puntos de control de AnyFlow publicados fusionan CFG en los pesos durante el entrenamiento; manténgala en 1.0 a menos que el punto de control requiera lo contrario.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — El número de vídeos que se generarán por prompt.
  • generator (torch.Generator o List[torch.Generator], opcional) — Generador utilizado para sembrar la muestreo.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados. Si no se proporcionan, los latentes se muestrean del generator suministrado.
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Si no se proporcionan, las incrustaciones se generan a partir de prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas.
  • output_type (str, opcional, por defecto "np") — Formato de salida. Uno de "pil", "np", "pt" o "latent".
  • return_dict (bool, opcional, valor predeterminado True) — Si se debe devolver un AnyFlowPipelineOutput en lugar de una tupla simple.
  • attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa al AttentionProcessor definido en self.processor dentro de diffusers.models.attention_processor.
  • callback_on_step_end (Callable, opcional) — Una función o PipelineCallback que se llama al final de cada paso de inferencia.
  • callback_on_step_end_tensor_inputs (List[str], opcional, valor predeterminado ["latents"]) — Entradas de tensor reenviadas a la función de callback. Debe ser un subconjunto de self._callback_tensor_inputs.
  • max_sequence_length (int, por defecto 512) — La longitud máxima de la secuencia del codificador de texto.
  • use_mean_velocity (bool, por defecto True) — Cuando True, condiciona el modelo flow-map tanto en el paso de tiempo de origen t como en el paso de tiempo de destino r para predecir una velocidad media. Desactívalo para replicar el pasoado bruto de Euler.
  • use_kv_cache (bool, por defecto True) — Reutiliza la caché KV de atención FAR entre los fragmentos causales. Desactívalo solo para depuración.
  • chunk_partition (List[int], opcional) — Número de fotogramas por bloque. El valor predeterminado es self.transformer.config.chunk_partition (ajustado a los puntos de control de 81 fotogramas publicados). Cuando cambie num_frames, proporcione un chunk_partition cuya suma sea (num_frames - 1) // vae_scale_factor_temporal + 1.

Devuelve

~AnyFlowPipelineOutput o tuple

Si return_dict es True, se devuelve un AnyFlowPipelineOutput; en caso contrario, se devuelve una tuple cuyo primer elemento es el video generado.

La función de llamada para el pipeline de generación.

Ejemplos:

>>> import numpy as np
>>> import torch
>>> from diffusers import AnyFlowFARPipeline
>>> from diffusers.utils import export_to_video, load_image

>>> pipe = AnyFlowFARPipeline.from_pretrained(
...     "nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> # Single-frame I2V: wrap the conditioning image as a (1, 1, 3, H, W) tensor in [0, 1].
>>> first_frame = load_image("path/to/first_frame.png").resize((832, 480))
>>> arr = np.asarray(first_frame).astype("float32") / 255.0
>>> context = torch.from_numpy(arr).permute(2, 0, 1).unsqueeze(0).unsqueeze(1).to("cuda")

>>> video = pipe(
...     prompt="a cat walks across a sunlit lawn",
...     video=context,
...     num_inference_steps=4,
...     num_frames=81,
... ).frames[0]
>>> export_to_video(video, "anyflow_far.mp4", fps=16)

encode_prompt

< >

( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_videos_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 226device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )

Parámetros

  • prompt (str o list[str], opcional) — prompt a codificar
  • negative_prompt (str o list[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasar negative_prompt_embeds en su lugar. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • do_classifier_free_guidance (bool, opcional, valor predeterminado True) — Si se debe usar classifier free guidance o no.
  • num_videos_per_prompt (int, opcional, valor predeterminado 1) — Número de videos que deben generarse por prompt. Dispositivo torch en el que colocar las incrustaciones resultantes
  • prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entrada negative_prompt.
  • device — (torch.device, opcional): dispositivo de torch
  • dtype — (torch.dtype, opcional): dtype de torch

Codifica el prompt en estados ocultos del codificador de texto.

encode_video

< >

( video: Tensorheight: intwidth: int )

Codifica un video en el espacio de píxeles en el diseño latente de AnyFlow.

Refleja la convención de un único helper de otros pipelines de diffusers (cf. WanImageToVideoPipeline.encode_image): encapsula el preprocesamiento, la codificación VAE y la normalización de latentes en una sola llamada. El formato de salida es (B, T_latent, C, H, W), que es lo que el transformer de AnyFlow espera para los fotogramas de condicionamiento.

AnyFlowPipelineOutput

clase diffusers.pipelines.anyflow.pipeline_output.AnyFlowPipelineOutput

< >

( frames: Tensor )

Parámetros

  • frames (torch.Tensor, np.ndarray o list[list[PIL.Image.Image]]) — lista de salidas de video. Puede ser una lista anidada de longitud batch_size, donde cada sublista contiene secuencias de imágenes PIL desruidas de longitud num_frames. También puede ser un array de NumPy o un tensor de Torch de forma (batch_size, num_frames, channels, height, width).

Clase de salida para las tuberías de AnyFlow.

Update on GitHub