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.43.0).
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