Diffusers documentation

AnyFlow

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 da NVIDIA, National University of Singapore e Massachusetts Institute of Technology, por Yuchao Gu, Guian Fang, Yuxin Jiang, Weijia Mao, Song Han, Han Cai, Mike Zheng Shou.

Resumo: AnyFlow é o primeiro framework de difusão de vídeo com qualquer número de etapas construído sobre mapas de fluxo, o que permite que um único modelo (bidirecional ou causal) se adapte a orçamentos de inferência arbitrários.

A geração de vídeo em poucas etapas foi significativamente avançada pelos modelos de consistência. No entanto, seu desempenho frequentemente se degrada em modelos de difusão de vídeo em qualquer etapa devido à formulação de ponto fixo. Para abordar essa limitação, apresentamos o AnyFlow, o primeiro framework de destilação de difusão de vídeo em qualquer etapa construído sobre mapas de fluxo. Em vez de aprender apenas o mapeamento z_t → z_0, o AnyFlow aprende transições z_t → z_r em intervalos de tempo arbitrários, permitindo que um único modelo se adapte a diferentes orçamentos de inferência. Projetamos uma receita aprimorada de treinamento de mapa de fluxo para frente que ajusta finamente modelos de difusão de vídeo pré-treinados em modelos de mapa de fluxo, e introduzimos a Simulação para Trás de Mapa de Fluxo para permitir a destilação on-policy para modelos de mapa de fluxo. Experimentos extensivos em arquiteturas bidirecionais e causais, em escalas variando de 1,3B a 14B, em tarefas de texto-para-vídeo e imagem-para-vídeo, demonstram que o AnyFlow supera as linhas de base baseadas em consistência, preservando alta fidelidade e amostragem flexível sob orçamentos de etapas variáveis.

Os pipelines AnyFlow foram contribuídos pela equipe AnyFlow. O código original está disponível no GitHub, a página do projeto está em nvlabs.github.io/AnyFlow e os modelos pré-treinados podem ser encontrados na coleção nvidia/anyflow no Hugging Face.

Modelos disponíveis:

CheckpointBackboneDescrição
nvidia/AnyFlow-Wan2.1-T2V-1.3B-DiffusersWan2.1 1.3BT2V Bidirecional
nvidia/AnyFlow-Wan2.1-T2V-14B-DiffusersWan2.1 14BT2V Bidirecional
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 foi projetado para modelos de difusão bidirecionais em geração de texto para vídeo (T2V). AnyFlowFARPipeline é um modelo de difusão causal por blocos que suporta geração de texto para vídeo (T2V), geração de imagem para vídeo (I2V) e continuação de vídeo (V2V).

Geração com AnyFlow (T2V Bidirecional)

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)

Geração com AnyFlow (FAR Causal)

O pipeline causal seleciona entre T2V / I2V / V2V por meio do argumento video (ou video_latents): omitir ambos para text-to-video puro, ou passar video=<tensor> de forma (B, T, C, H, W) em [0, 1] com T = 4n + 1 para condicionar em quadros existentes. Use um único quadro de condicionamento para I2V e um clipe mais longo para continuação V2V. Se você já tiver latentes pré-codificados no layout do modelo, passe-os via video_latents=<tensor> para pular a codificação VAE. video e video_latents são mutuamente exclusivos.

Os checkpoints liberados incorporam chunk_partition=[1, 3, 3, 3, 3, 3, 3, 2] (soma 21) na configuração do transformer, correspondendo às 81 frames brutas canônicas (21 frames latentes no passo temporal do VAE de 4). Ao alterar num_frames, passe um chunk_partition correspondente cuja soma seja (num_frames - 1) // 4 + 1; caso contrário, o pipeline lança um 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)

Observações

  • A classifier-free guidance é incorporada nos checkpoints liberados, portanto a inferência não executa uma segunda passagem de encaminhamento guiada. Mantenha o valor padrão guidance_scale=1.0, a menos que seu próprio checkpoint exija o contrário.
  • FlowMapEulerDiscreteScheduler é de uso geral. Você pode conectá-lo a qualquer checkpoint destilado de flow-map por meio de from_pretrained(..., scheduler=FlowMapEulerDiscreteScheduler.from_config(...)).
  • AnyFlowPipeline usa AnyFlowTransformer3DModel (bidirecional). AnyFlowFARPipeline usa AnyFlowFARTransformer3DModel, que adiciona um patch embedding de quadro comprimido e a máscara de bloco causal FAR.
  • O carregamento de LoRA é suportado por meio de WanLoraLoaderMixin, o mesmo mixin utilizado pelos pipelines Wan upstream.
  • Para as receitas de treinamento (treinamento de fluxo de mapa para frente e destilação on-policy), consulte o framework de treinamento original AnyFlow em NVlabs/AnyFlow; o treinamento está fora do escopo do diffusers.

AnyFlowPipeline

classe 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]) — Transformer 3D de fluxo-mapa bidirecional.
  • vae ([AutoencoderKLWan]) — VAE que codifica/decodifica vídeos para e a partir de representações latentes.
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Amostrador de mapa de fluxo. O pipeline aciona scheduler.step(..., timestep, sample, r_timestep) a cada etapa de inferência.

Pipeline de geração de texto para vídeo bidirecional para checkpoints destilados por mapa de fluxo do AnyFlow, introduzido em AnyFlow.

O AnyFlow aprende transições de intervalos arbitrários zt→zrz_t \to z_r em vez do mapeamento fixo zt→z0z_t \to z_0 dos modelos de consistência, de modo que um único checkpoint destilado pode ser avaliado com 1, 2, 4, 8, 16… NFE sem re-treino. Este pipeline opera sobre o tensor completo do vídeo em uma única passagem bidirecional; para geração autoregressiva (causal) por blocos, use AnyFlowFARPipeline.

A amostragem é Euler simples na forma de velocidade média (z_r = z_t - (t - r) * u) sem re-ruído. Os checkpoints da NVIDIA liberados incorporam o classifier-free guidance nos pesos do modelo, portanto o valor padrão guidance_scale=1.0 é a configuração recomendada.

Este modelo herda de [DiffusionPipeline]. Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um 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 ou List[str], opcional) — O prompt ou os prompts para orientar a geração do vídeo. Se não definido, passe prompt_embeds em vez disso.
  • video (torch.Tensor, opcional) — Quadros de condicionamento pré-VAE com forma (B, T, C, H, W) em [0, 1]. Quando fornecidos, o pipeline os codifica com o VAE e mantém o prefixo latente correspondente fixo durante a amostragem. Mutuamente exclusivo com video_latents.
  • video_latents (torch.Tensor, opcional) — Latentes pré-codificados pelo VAE no layout AnyFlow (B, T_latent, C, H_latent, W_latent). Pula a codificação do VAE no lado do pipeline. Mutuamente exclusivo com video.
  • negative_prompt (str ou List[str], opcional) — O prompt ou os prompts a serem evitados durante a geração de vídeo. Ignorado quando não está usando orientação (guidance_scale < 1).
  • height (int, padrão 480) — A altura em pixels do vídeo gerado.
  • width (int, padrão 832) — A largura em pixels do vídeo gerado.
  • num_frames (int, padrão 81) — O número de quadros no vídeo gerado. Deve satisfazer (num_frames - 1) % vae_scale_factor_temporal == 0.
  • num_inference_steps (int, padrão 50) — O número de etapas de remoção de ruído. Os checkpoints distilados do AnyFlow suportam amostragem em qualquer etapa, portanto, valores tão baixos quanto 1, 2, 4 ou 8 são típicos. Ignorado quando sigmas ou timesteps é fornecido.
  • 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) — Agenda personalizada para amostragem em qualquer passo, nas mesmas unidades de self.scheduler.timesteps (ou seja, escalonada por num_train_timesteps). Mutuamente exclusiva com sigmas.
  • guidance_scale (float, padrão 1.0) — Escala de orientação sem classificador (classifier-free guidance). Os checkpoints AnyFlow liberados fundem o CFG nos pesos durante o treinamento; mantenha em 1.0 a menos que você saiba que seu checkpoint espera o contrário.
  • num_videos_per_prompt (int, opcional, padrão 1) — O número de vídeos a serem gerados por prompt.
  • generator (torch.Generator ou List[torch.Generator], opcional) — Um torch.Generator para tornar a geração determinística.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pré-gerados para usar como entradas. Se não fornecidos, os latentes são amostrados a partir do generator fornecido.
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Pode ser usado para ajustar as entradas de texto (por exemplo, ponderação de prompt). Se não for fornecido, as incorporações são geradas a partir de prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativo pré-geradas.
  • output_type (str, opcional, padrão "np") — O formato de saída. Um de "pil", "np", "pt" ou "latent".
  • return_dict (bool, opcional, padrão True) — Se deve retornar um AnyFlowPipelineOutput em vez de uma tupla simples.
  • attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado ao AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.
  • callback_on_step_end (Callable, opcional) — Uma função ou PipelineCallback chamada no final de cada etapa de inferência. Consulte callbacks para mais detalhes.
  • callback_on_step_end_tensor_inputs (List[str], opcional, padrão ["latents"]) — As entradas de tensor encaminhadas para o callback. Deve ser um subconjunto de self._callback_tensor_inputs.
  • max_sequence_length (int, padrão 512) — O comprimento máximo da sequência do codificador de texto. Prompts mais longos são truncados.
  • use_mean_velocity (bool, padrão True) — Quando True, o modelo flow-map é condicionado tanto no timestep de origem t quanto no timestep de destino r para prever uma velocidade média, correspondendo ao comportamento no momento do treinamento. Desative para espelhar o passo bruto de Euler (r = t).

Retorna

~AnyFlowPipelineOutput ou tuple

Se return_dict for True, AnyFlowPipelineOutput é retornado; caso contrário, uma tuple cujo primeiro elemento é o vídeo gerado.

A função de chamada do pipeline para geração.

Exemplos:

>>> 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 ou list[str], opcional) — prompt a ser codificado
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • do_classifier_free_guidance (bool, opcional, padrão True) — Se deve ou não usar classifier free guidance.
  • num_videos_per_prompt (int, opcional, padrão 1) — Número de vídeos que devem ser gerados por prompt. Dispositivo torch para colocar os embeddings resultantes
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • device — (torch.device, opcional): dispositivo torch
  • dtype — (torch.dtype, opcional): dtype do torch

Codifica o prompt em estados ocultos do codificador de texto.

encode_video

< >

( video: Tensorheight: intwidth: int )

Codifique um vídeo em espaço de pixels para o layout latente do AnyFlow.

Espelha a convenção de um único helper de outros pipelines do diffusers (cf. WanImageToVideoPipeline.encode_image): encapsula o pré-processamento, a codificação VAE e a normalização de latentes em uma única chamada. O layout de saída é (B, T_latent, C, H, W), que é o que o transformer AnyFlow espera para os frames de condicionamento.

AnyFlowFARPipeline

classe 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 fluxo causal FAR.
  • vae ([AutoencoderKLWan]) — VAE que codifica/decodifica vídeos para e a partir de representações latentes.
  • scheduler ([FlowMapEulerDiscreteScheduler]) — Amostrador de mapa de fluxo.

Pipeline causal (baseado em FAR) de texto para vídeo / imagem para vídeo / vídeo para vídeo para checkpoints do AnyFlow, introduzido em AnyFlow.

O pipeline dirige um loop de amostragem autoregressiva por blocos: cada bloco é desruído com passos de flow-map, prestando atenção apenas aos blocos anteriores por meio de atenção causal esparsa por blocos, e o cache KV intermediário é reutilizado entre os blocos.

O modo de tarefa (T2V / I2V / V2V) é selecionado pelo argumento de condicionamento passado para __call__:

  • tanto video=None quanto video_latents=None — texto-para-vídeo puro.
  • video=<tensor of shape (B, T, C, H, W) in [0, 1] with T = 4n + 1> — quadros de condicionamento pré-VAE; o pipeline os codifica com o VAE. Passe um vídeo de um único quadro para I2V ou um clipe de múltiplos quadros para V2V.
  • video_latents=<latent tensor of shape (B, T_latent, C, H_latent, W_latent)> — latentes já codificados no layout FAR (pula a etapa de codificação do VAE).

O backbone FAR é a variante causal Wan2.1 introduzida por FAR. A inferência é Euler simples na forma de velocidade média por chunk, sem re-noising. O T2V / I2V / V2V conjunto é suportado por um único modelo destilado.

Este modelo herda de [DiffusionPipeline]. Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um 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 ou List[str], opcional) — O prompt ou os prompts para orientar a geração do vídeo. Se não definido, passe prompt_embeds em vez disso.
  • video (torch.Tensor, opcional) — Quadros de condicionamento pré-VAE com forma (B, T, C, H, W) em [0, 1] (T = 4n + 1). Quando fornecidos, o pipeline os codifica com o VAE e mantém o prefixo latente correspondente fixo durante a amostragem. Mutualmente exclusivo com video_latents.
  • video_latents (torch.Tensor, opcional) — Latentes pré-codificados pelo VAE no layout FAR (B, T_latent, C, H_latent, W_latent). Pula a codificação do VAE no lado do pipeline. Mutuamente exclusivo com video.
  • negative_prompt (str ou List[str], opcional) — O prompt ou os prompts a serem evitados durante a geração de vídeo. Ignorado quando não está usando orientação (guidance_scale < 1).
  • height (int, padrão 480) — A altura em pixels do vídeo gerado.
  • width (int, padrão 832) — A largura em pixels do vídeo gerado.
  • num_frames (int, padrão 81) — O número de quadros no vídeo gerado. Deve satisfazer (num_frames - 1) % vae_scale_factor_temporal == 0.
  • num_inference_steps (int, padrão 50) — O número de etapas de remoção de ruído por bloco. Os checkpoints distilados do AnyFlow-FAR suportam amostragem em qualquer número de etapas (1, 2, 4, 8, …). Ignorado quando sigmas ou timesteps é fornecido.
  • 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) — Agenda personalizada para amostragem em qualquer passo, nas mesmas unidades de self.scheduler.timesteps (ou seja, escalonada por num_train_timesteps). Mutuamente exclusiva com sigmas.
  • guidance_scale (float, padrão 1.0) — Escala de orientação sem classificador (classifier-free guidance). Os checkpoints AnyFlow liberados fundem o CFG nos pesos durante o treinamento; mantenha em 1.0 a menos que o checkpoint exija o contrário.
  • num_videos_per_prompt (int, opcional, padrão 1) — O número de vídeos a serem gerados por prompt.
  • generator (torch.Generator ou List[torch.Generator], opcional) — Gerador usado para definir a semente da amostragem.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pré-gerados. Se não fornecidos, os latentes são amostrados a partir do generator fornecido.
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Se não fornecidas, as incorporações são geradas a partir de prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativo pré-geradas.
  • output_type (str, opcional, padrão "np") — Formato de saída. Um de "pil", "np", "pt" ou "latent".
  • return_dict (bool, opcional, padrão True) — Se deve retornar um AnyFlowPipelineOutput em vez de uma tupla simples.
  • attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado ao AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.
  • callback_on_step_end (Callable, opcional) — Uma função ou PipelineCallback chamada no final de cada etapa de inferência.
  • callback_on_step_end_tensor_inputs (List[str], opcional, padrão ["latents"]) — Entradas de tensor encaminhadas para o callback. Deve ser um subconjunto de self._callback_tensor_inputs.
  • max_sequence_length (int, padrão 512) — O comprimento máximo da sequência do codificador de texto.
  • use_mean_velocity (bool, padrão True) — Quando True, condiciona o modelo flow-map tanto no timestep de origem t quanto no timestep de destino r para prever uma velocidade média. Desative para espelhar o passo bruto de Euler.
  • use_kv_cache (bool, padrão True) — Reutiliza o cache KV de atenção FAR entre blocos causais. Desative apenas para depuração.
  • chunk_partition (List[int], opcional) — Contagem de quadros por chunk. O padrão é self.transformer.config.chunk_partition (correspondente aos checkpoints de 81 quadros liberados). Ao alterar num_frames, forneça um chunk_partition cuja soma seja (num_frames - 1) // vae_scale_factor_temporal + 1.

Retorna

~AnyFlowPipelineOutput ou tuple

Se return_dict for True, um AnyFlowPipelineOutput é retornado; caso contrário, uma tuple cujo primeiro elemento é o vídeo gerado.

A função de chamada do pipeline para geração.

Exemplos:

>>> 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 ou list[str], opcional) — prompt a ser codificado
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • do_classifier_free_guidance (bool, opcional, padrão True) — Se deve ou não usar classifier free guidance.
  • num_videos_per_prompt (int, opcional, padrão 1) — Número de vídeos que devem ser gerados por prompt. Dispositivo torch para colocar os embeddings resultantes
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • device — (torch.device, opcional): dispositivo torch
  • dtype — (torch.dtype, opcional): dtype do torch

Codifica o prompt em estados ocultos do codificador de texto.

encode_video

< >

( video: Tensorheight: intwidth: int )

Codifique um vídeo em espaço de pixels para o layout latente do AnyFlow.

Espelha a convenção de um único helper de outros pipelines do diffusers (cf. WanImageToVideoPipeline.encode_image): encapsula o pré-processamento, a codificação VAE e a normalização de latentes em uma única chamada. O layout de saída é (B, T_latent, C, H, W), que é o que o transformer AnyFlow espera para os frames de condicionamento.

AnyFlowPipelineOutput

classe diffusers.pipelines.anyflow.pipeline_output.AnyFlowPipelineOutput

< >

( frames: Tensor )

Parâmetros

  • frames (torch.Tensor, np.ndarray ou list[list[PIL.Image.Image]]) — lista de saídas de vídeo - Pode ser uma lista aninhada de comprimento batch_size, com cada sublista contendo sequências de imagens PIL desruidas de comprimento num_frames. Também pode ser um array NumPy ou tensor Torch de forma (batch_size, num_frames, channels, height, width).

Classe de saída para pipelines do AnyFlow.

Update on GitHub